commit:     ff87825370e57408d6f5aeee8c2021e99d636a61
Author:     Yuan Liao <liaoyuan <AT> gmail <DOT> com>
AuthorDate: Fri Sep 16 16:40:43 2022 +0000
Commit:     Yuan Liao <liaoyuan <AT> gmail <DOT> com>
CommitDate: Fri Sep 16 16:40:43 2022 +0000
URL:        https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=ff878253

dev-util/blueprint-compiler: Sync live ebuild for Py module path change

This is the third time the upstream changes where the package's Python
module is installed, yet it is merely a backtrack to pre-v0.2.0
behavior...

Nevertheless, the good news is that this package can be installed as a
multi-impl Python package (again).

Signed-off-by: Yuan Liao <liaoyuan <AT> gmail.com>

 .../blueprint-compiler-9999.ebuild                 | 51 +++++++++++++++++-----
 1 file changed, 41 insertions(+), 10 deletions(-)

diff --git a/dev-util/blueprint-compiler/blueprint-compiler-9999.ebuild 
b/dev-util/blueprint-compiler/blueprint-compiler-9999.ebuild
index b55e91db8..65b53ce6a 100644
--- a/dev-util/blueprint-compiler/blueprint-compiler-9999.ebuild
+++ b/dev-util/blueprint-compiler/blueprint-compiler-9999.ebuild
@@ -5,7 +5,7 @@ EAPI=8
 
 PYTHON_COMPAT=( python3_{9..11} )
 
-inherit meson python-single-r1
+inherit meson python-r1
 
 if [[ ${PV} == *9999 ]]; then
        inherit git-r3
@@ -29,10 +29,8 @@ RESTRICT="!test? ( test )"
 BDEPEND="
        ${PYTHON_DEPS}
        doc? (
-               $(python_gen_cond_dep '
-                       dev-python/sphinx[${PYTHON_USEDEP}]
-                       dev-python/furo[${PYTHON_USEDEP}]
-               ')
+               dev-python/sphinx[${PYTHON_USEDEP}]
+               dev-python/furo[${PYTHON_USEDEP}]
        )
 "
 
@@ -50,12 +48,45 @@ src_configure() {
        local emesonargs=(
                $(meson_use doc docs)
        )
-       meson_src_configure
+       python_foreach_impl meson_src_configure
+}
+
+src_compile() {
+       python_foreach_impl meson_src_compile
+}
+
+src_test() {
+       python_foreach_impl meson_src_test
 }
 
 src_install() {
-       use doc && HTML_DOCS=( "${BUILD_DIR}/docs"/* )
-       meson_src_install
-       python_optimize "${D}/usr/share/${PN}"
-       python_fix_shebang "${D}/usr/bin/${PN}"
+       my_src_install() {
+               local exe="${ED}/usr/bin/${PN}"
+
+               # Meson installs a Python script at ${ED}/usr/bin/${PN}; on
+               # Gentoo, the script should go into ${ED}/usr/lib/python-exec,
+               # and ${ED}/usr/bin/${PN} should be a symbolic link to
+               # ${ED}/usr/lib/python-exec/python-exec2.
+               #
+               # When multiple PYTHON_TARGETS are enabled, then after the
+               # package has been installed for one Python implementation,
+               # Meson will follow the ${ED}/usr/bin/${PN} symbolic link and
+               # install the script at ${ED}/usr/lib/python-exec/python-exec2
+               # for the remaining implementations, leading to file collision.
+               if [[ -L "${exe}" ]]; then
+                       rm -v "${exe}" || die "Failed to remove symbolic link 
${exe}"
+               fi
+
+               meson_src_install
+               python_doscript "${exe}"
+               python_optimize
+
+               # Install Sphinx-generated documentation only once
+               # since the documentation is supposed to be identical
+               # between different Python implementations
+               use doc && HTML_DOCS=( "${BUILD_DIR}/docs"/* )
+       }
+
+       python_foreach_impl my_src_install
+       einstalldocs
 }

Reply via email to