Re: [gentoo-dev] [PATCH] python-utils-r1.eclass: Fix PYTHON_SITEDIR/INCLUDEDIR for cross-prefix

2023-08-16 Thread James Le Cuirot
On Tue, 2023-08-15 at 18:25 -0400, Ionen Wolkens wrote:
> On Tue, Aug 15, 2023 at 11:02:54PM +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 
> > ---
> > 
> > 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..68b28c0ed806 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}}}
> 
> For a minor nitpick, should use quotes for the substitution, aka:
> 
> PYTHON_SITEDIR=${EPREFIX}${PYTHON_SITEDIR#"${BROOT-${EPREFIX}}"}
> 
> Or else if BROOT/EPREFIX somehow had glob characters in them, they will
> actually be globbing.
> 
> > 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}}}
> 
> Same here.
> 
> > export PYTHON_INCLUDEDIR
> > debug-print "${FUNCNAME}: PYTHON_INCLUDEDIR = 
> > ${PYTHON_INCLUDEDIR}"
> > 
> > --
> > 2.41.0
> > 

Oops, not like me to miss that. Thanks!


signature.asc
Description: This is a digitally signed message part


Re: [gentoo-dev] [PATCH] python-utils-r1.eclass: Fix PYTHON_SITEDIR/INCLUDEDIR for cross-prefix

2023-08-15 Thread Ionen Wolkens
On Tue, Aug 15, 2023 at 11:02:54PM +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 
> ---
> 
> 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..68b28c0ed806 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}}}

For a minor nitpick, should use quotes for the substitution, aka:

PYTHON_SITEDIR=${EPREFIX}${PYTHON_SITEDIR#"${BROOT-${EPREFIX}}"}

Or else if BROOT/EPREFIX somehow had glob characters in them, they will
actually be globbing.

>   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}}}

Same here.

>   export PYTHON_INCLUDEDIR
>   debug-print "${FUNCNAME}: PYTHON_INCLUDEDIR = 
> ${PYTHON_INCLUDEDIR}"
> 
> --
> 2.41.0
> 

-- 
ionen


signature.asc
Description: PGP signature