• [gentoo-dev] [PATCH v3] python-utils-r1.eclass: Fix PYTHON_SITEDIR/INCL

    From James Le Cuirot@21:1/5 to All on Wed Aug 16 14:20:02 2023
    We dynamically determine Python's SITEDIR and INCLUDEDIR using the build
    host's Python. This breaks down when the build host's prefix differs
    from the target host's prefix, so chop off the former and prepend the
    latter.

    This assumes that each Python implementation is always installed using
    the same scheme. Meson already makes this assumption, and gpep517 makes
    a similar assumption to determine Python's stdlib location.

    We could improve on this and determine these locations using SYSROOT's sysconfigdata file, like gpep517 does, but this seems needlessly
    complex. We would need to take this approach for PYTHON_LIBPATH and PYTHON_CONFIG, but these are only used by handful of packages.

    ${BROOT-${EPREFIX}} is needed rather than plain ${BROOT} for the same
    reason we need it for PYTHON, namely that Portage <3.0.50 was buggy.

    Signed-off-by: James Le Cuirot <chewi@gentoo.org>
    ---

    Note that gpep517 also needs the same treatment, but I'll handle that
    later. This at least allows Portage itself to be installed.

    eclass/python-utils-r1.eclass | 2 ++
    1 file changed, 2 insertions(+)

    diff --git a/eclass/python-utils-r1.eclass b/eclass/python-utils-r1.eclass index 2fffd6d56bf5..f9c6d161d3f3 100644
    --- a/eclass/python-utils-r1.eclass
    +++ b/eclass/python-utils-r1.eclass
    @@ -351,6 +351,7 @@ _python_export() {
    print(sysconfig.get_path("purelib"))
    EOF
    )
    + PYTHON_SITEDIR=${EPREFIX}${PYTHON_SITEDIR#"${BROOT-${EPREFIX}}"}
    export PYTHON_SITEDIR
    debug-print "${FUNCNAME}: PYTHON_SITEDIR = ${PYTHON_SITEDIR}"
    ;;
    @@ -362,6 +363,7 @@ _python_export() {
    print(sysconfig.get_path("platinclude"))
    EOF
    )
    + PYTHON_INCLUDEDIR=${ESYSROOT}${PYTHON_INCLUDEDIR#"${BROOT-${EPREFIX}}"}
    export PYTHON_INCLUDEDIR
    debug-print "${FUNCNAME}: PYTHON_INCLUDEDIR = ${PYTHON_INCLUDEDIR}"

    --
    2.41.0

    --- SoupGate-Win32 v1.05
    * O
  • From =?UTF-8?Q?Micha=C5=82_G=C3=B3rny?=@21:1/5 to James Le Cuirot on Sat Aug 19 20:30:01 2023
    On Wed, 2023-08-16 at 13:16 +0100, James Le Cuirot wrote:
    We dynamically determine Python's SITEDIR and INCLUDEDIR using the build host's Python. This breaks down when the build host's prefix differs
    from the target host's prefix, so chop off the former and prepend the
    latter.

    This assumes that each Python implementation is always installed using
    the same scheme. Meson already makes this assumption, and gpep517 makes
    a similar assumption to determine Python's stdlib location.

    We could improve on this and determine these locations using SYSROOT's sysconfigdata file, like gpep517 does, but this seems needlessly
    complex. We would need to take this approach for PYTHON_LIBPATH and PYTHON_CONFIG, but these are only used by handful of packages.

    ${BROOT-${EPREFIX}} is needed rather than plain ${BROOT} for the same
    reason we need it for PYTHON, namely that Portage <3.0.50 was buggy.

    Signed-off-by: James Le Cuirot <chewi@gentoo.org>
    ---

    Note that gpep517 also needs the same treatment, but I'll handle that
    later. This at least allows Portage itself to be installed.

    eclass/python-utils-r1.eclass | 2 ++
    1 file changed, 2 insertions(+)

    diff --git a/eclass/python-utils-r1.eclass b/eclass/python-utils-r1.eclass index 2fffd6d56bf5..f9c6d161d3f3 100644
    --- a/eclass/python-utils-r1.eclass
    +++ b/eclass/python-utils-r1.eclass
    @@ -351,6 +351,7 @@ _python_export() {
    print(sysconfig.get_path("purelib"))
    EOF
    )
    + PYTHON_SITEDIR=${EPREFIX}${PYTHON_SITEDIR#"${BROOT-${EPREFIX}}"}
    export PYTHON_SITEDIR
    debug-print "${FUNCNAME}: PYTHON_SITEDIR = ${PYTHON_SITEDIR}"
    ;;
    @@ -362,6 +363,7 @@ _python_export() {
    print(sysconfig.get_path("platinclude"))
    EOF
    )
    + PYTHON_INCLUDEDIR=${ESYSROOT}${PYTHON_INCLUDEDIR#"${BROOT-${EPREFIX}}"}
    export PYTHON_INCLUDEDIR
    debug-print "${FUNCNAME}: PYTHON_INCLUDEDIR = ${PYTHON_INCLUDEDIR}"

    --
    2.41.0


    Pushed (along with some other pending changes), thanks!

    --
    Best regards,
    Michał Górny

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)