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

2023-08-25 Thread James Le Cuirot
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 
---
 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}"
 
-- 
2.41.0




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

2023-08-25 Thread Michał Górny
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 
> ---
>  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




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

2023-08-25 Thread Michał Górny
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 
> > ---
> >  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