• [gentoo-dev] [PATCH] python-utils-r1.eclass: Redo cross-prefix support

    From James Le Cuirot@21:1/5 to All on Fri Aug 25 23:20:01 2023
    We recently supported cross-prefix by rewriting PYTHON_SITEDIR and PYTHON_INCLUDEDIR from BROOT to EPREFIX. We now know that you can get
    sysconfig to use EPREFIX in the first place, which is cleaner.

    Signed-off-by: James Le Cuirot <chewi@gentoo.org>
    ---
    eclass/python-utils-r1.eclass | 14 ++++++--------
    1 file changed, 6 insertions(+), 8 deletions(-)

    diff --git a/eclass/python-utils-r1.eclass b/eclass/python-utils-r1.eclass index f9c6d161d3f3..bd30c1203180 100644
    --- a/eclass/python-utils-r1.eclass
    +++ b/eclass/python-utils-r1.eclass
    @@ -346,24 +346,22 @@ _python_export() {
    PYTHON_SITEDIR)
    [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it"
    PYTHON_SITEDIR=$(
    - "${PYTHON}" - <<-EOF || die
    - import sysconfig
    - print(sysconfig.get_path("purelib"))
    + "${PYTHON}" - "${EPREFIX}/usr" <<-EOF || die
    + import sys, sysconfig
    + print(sysconfig.get_path("purelib", vars={"base": sys.argv[1]}))
    EOF
    )
    - PYTHON_SITEDIR=${EPREFIX}${PYTHON_SITEDIR#"${BROOT-${EPREFIX}}"}
    export PYTHON_SITEDIR
    debug-print "${FUNCNAME}: PYTHON_SITEDIR = ${PYTHON_SITEDIR}"
    ;;
    PYTHON_INCLUDEDIR)
    [[ -n ${PYTHON} ]] || die "PYTHON needs to be
  • From =?UTF-8?Q?Micha=C5=82_G=C3=B3rny?=@21:1/5 to James Le Cuirot on Sat Aug 26 06:10:01 2023
    On Fri, 2023-08-25 at 22:18 +0100, James Le Cuirot wrote:
    We recently supported cross-prefix by rewriting PYTHON_SITEDIR and PYTHON_INCLUDEDIR from BROOT to EPREFIX. We now know that you can get sysconfig to use EPREFIX in the first place, which is cleaner.

    Signed-off-by: James Le Cuirot <chewi@gentoo.org>
    ---
    eclass/python-utils-r1.eclass | 14 ++++++--------
    1 file changed, 6 insertions(+), 8 deletions(-)

    diff --git a/eclass/python-utils-r1.eclass b/eclass/python-utils-r1.eclass index f9c6d161d3f3..bd30c1203180 100644
    --- a/eclass/python-utils-r1.eclass
    +++ b/eclass/python-utils-r1.eclass
    @@ -346,24 +346,22 @@ _python_export() {
    PYTHON_SITEDIR)
    [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it"
    PYTHON_SITEDIR=$(
    - "${PYTHON}" - <<-EOF || die
    - import sysconfig
    - print(sysconfig.get_path("purelib"))
    + "${PYTHON}" - "${EPREFIX}/usr" <<-EOF || die
    + import sys, sysconfig
    + print(sysconfig.get_path("purelib", vars={"base": sys.argv[1]}))
    EOF
    )
    - PYTHON_SITEDIR=${EPREFIX}${PYTHON_SITEDIR#"${BROOT-${EPREFIX}}"}
    export PYTHON_SITEDIR
    debug-print "${FUNCNAME}: PYTHON_SITEDIR = ${PYTHON_SITEDIR}"
    ;;
    PYTHON_INCLUDEDIR)
    [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it"
    PYTHON_INCLUDEDIR=$(
    - "${PYTHON}" - <<-EOF || die
    - import sysconfig
    - print(sysconfig.get_path("platinclude"))
    + "${PYTHON}" - "${ESYSROOT}/usr" <<-EOF || die
    + import sys, sysconfig
    + print(sysconfig.get_path("platinclude", vars={"installed_platbase": sys.argv[1]}))
    EOF
    )
    - PYTHON_INCLUDEDIR=${ESYSROOT}${PYTHON_INCLUDEDIR#"${BROOT-${EPREFIX}}"}
    export PYTHON_INCLUDEDIR
    debug-print "${FUNCNAME}: PYTHON_INCLUDEDIR = ${PYTHON_INCLUDEDIR}"


    I'm thinking we should probably set all base/prefix vars instead of
    making assumptions which one will actually be used.

    --
    Best regards,
    Michał Górny

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?Micha=C5=82_G=C3=B3rny?=@21:1/5 to All on Sat Aug 26 06:20:01 2023
    On Sat, 2023-08-26 at 06:09 +0200, Michał Górny wrote:
    On Fri, 2023-08-25 at 22:18 +0100, James Le Cuirot wrote:
    We recently supported cross-prefix by rewriting PYTHON_SITEDIR and PYTHON_INCLUDEDIR from BROOT to EPREFIX. We now know that you can get sysconfig to use EPREFIX in the first place, which is cleaner.

    Signed-off-by: James Le Cuirot <chewi@gentoo.org>
    ---
    eclass/python-utils-r1.eclass | 14 ++++++--------
    1 file changed, 6 insertions(+), 8 deletions(-)

    diff --git a/eclass/python-utils-r1.eclass b/eclass/python-utils-r1.eclass index f9c6d161d3f3..bd30c1203180 100644
    --- a/eclass/python-utils-r1.eclass
    +++ b/eclass/python-utils-r1.eclass
    @@ -346,24 +346,22 @@ _python_export() {
    PYTHON_SITEDIR)
    [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it"
    PYTHON_SITEDIR=$(
    - "${PYTHON}" - <<-EOF || die
    - import sysconfig
    - print(sysconfig.get_path("purelib"))
    + "${PYTHON}" - "${EPREFIX}/usr" <<-EOF || die
    + import sys, sysconfig
    + print(sysconfig.get_path("purelib", vars={"base": sys.argv[1]}))
    EOF
    )
    - PYTHON_SITEDIR=${EPREFIX}${PYTHON_SITEDIR#"${BROOT-${EPREFIX}}"}
    export PYTHON_SITEDIR
    debug-print "${FUNCNAME}: PYTHON_SITEDIR = ${PYTHON_SITEDIR}"
    ;;
    PYTHON_INCLUDEDIR)
    [[ -n ${PYTHON} ]] || die "PYTHON needs to be set for ${var} to be exported, or requested before it"
    PYTHON_INCLUDEDIR=$(
    - "${PYTHON}" - <<-EOF || die
    - import sysconfig
    - print(sysconfig.get_path("platinclude"))
    + "${PYTHON}" - "${ESYSROOT}/usr" <<-EOF || die
    + import sys, sysconfig
    + print(sysconfig.get_path("platinclude", vars={"installed_platbase": sys.argv[1]}))
    EOF
    )
    - PYTHON_INCLUDEDIR=${ESYSROOT}${PYTHON_INCLUDEDIR#"${BROOT-${EPREFIX}}"}
    export PYTHON_INCLUDEDIR
    debug-print "${FUNCNAME}: PYTHON_INCLUDEDIR = ${PYTHON_INCLUDEDIR}"


    I'm thinking we should probably set all base/prefix vars instead of
    making assumptions which one will actually be used.

    Actually, nevermind. I see that installer/gpep517 is doing the same,
    and overriding all variables there would have adverse effects, so let's
    keep it to one variable for consistency.

    --
    Best regards,
    Michał Górny

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