[gentoo-dev] [PATCH] python-utils-r1.eclass: Redo cross-prefix support using sysconfig
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
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
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