[Buildroot] [PATCH] package/pkg-meson.mk: set Python sysconfigdata

Adam Duskett aduskett at gmail.com
Sat Oct 12 23:11:22 UTC 2019


All;

I inadvertently found an issue with this patch.
If the user has not selected python or python3,
_PYTHON_SYSCONFIGDATA_NAME will be passed as an empty string, which
causes libglib2 to fail during the configuration step.
Apparently, all of my previous testings were done with python3
enabled, and I didn't notice!

Adam

On Fri, Sep 27, 2019 at 10:38 AM Adam Duskett <aduskett at gmail.com> wrote:
>
> Sorry;
>
> I will need to submit a new gobject-introspection patch set; which
> requires this patch.
>
> Adam
>
> On Thu, Sep 26, 2019 at 8:26 PM Adam Duskett <aduskett at gmail.com> wrote:
> >
> > All;
> >
> > Any update on this patch? Now that libglib 2.62.0 is in Buildroot, I
> > will need to submit a new patch set, which requires this patch.
> >
> > Thanks!
> >
> > Adam
> >
> > On Mon, Sep 16, 2019 at 11:41 AM Adam Duskett <aduskett at gmail.com> wrote:
> > >
> > > All;
> > >
> > >
> > > On Sun, Aug 4, 2019 at 3:05 PM Arnout Vandecappelle (Essensium/Mind)
> > > <arnout at mind.be> wrote:
> > > >
> > > > meson has support for Python dependencies, to e.g. build Python modules.
> > > > It parses Python's sysconfig module to find the appropriate
> > > > configuration variables. However, the sysconfig module is the one for
> > > > the host, _not_ for the target. Therefore, wrong values may be set. Many
> > > > of them get overridden anyway by the cross-compilation.conf. One
> > > > particular one that is problematic is that it uses the python-XXX.pc
> > > > pkg-config file for the host instead of the target, because it
> > > > explicitly sets the PKG_CONFIG_LIBDIR found in sysconfig.
> > > >
> > > > Use the same trick as for python package: pass PYTHONPATH,
> > > > PYTHONNOUSERSITE and _PYTHON_SYSCONFIGDATA_NAME in the environment to
> > > > point to staging instead of host. This ensures the sysconfig from the
> > > > target is used instead of the one from the host.
> > > >
> > > > An alternative would be to patch meson to not use the PKG_CONFIG_LIBDIR
> > > > from sysconfig. However, it is likely that other problems will pop up at
> > > > some point because of using the wrong sysconfig.
> > > >
> > > > Note that this approach will still break things when meson needs to
> > > > build something for the host during a target build.
> > > >
> > > > Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout at mind.be>
> > > > Cc: Adam Duskett <Aduskett at gmail.com>
> > > > Cc: Eric Le Bihan <eric.le.bihan.dev at free.fr>
> > > > Cc: Peter Seiderer <ps.report at gmx.net>
> > > > Cc: James Hilliard <james.hilliard1 at gmail.com>
> > > > Cc: Yann E. MORIN <yann.morin.1998 at free.fr>
> > > > ---
> > > > The setting of _PYTHON_SYSCONFIGDATA_NAME is different from the one in
> > > > pkg-python.mk. I don't understand how that definition could work: for
> > > > Python2, it is empty, so sysconfig tries to import a module with name
> > > > "". So apparently the call paths used by meson and by
> > > > setuptools/distutils are slightly different.
> > > > ---
> > > >  package/pkg-meson.mk | 3 +++
> > > >  1 file changed, 3 insertions(+)
> > > >
> > > > diff --git a/package/pkg-meson.mk b/package/pkg-meson.mk
> > > > index 0b811d1cc0..3f875c08ce 100644
> > > > --- a/package/pkg-meson.mk
> > > > +++ b/package/pkg-meson.mk
> > > > @@ -81,6 +81,9 @@ define $(2)_CONFIGURE_CMDS
> > > >             -e "s%@HOST_DIR@%$$(HOST_DIR)%g" \
> > > >             package/meson/cross-compilation.conf.in \
> > > >             > $$($$(PKG)_SRCDIR)/build/cross-compilation.conf
> > > > +       _PYTHON_SYSCONFIGDATA_NAME="$$(if $$(BR2_PACKAGE_PYTHON3),$$(PKG_PYTHON_SYSCONFIGDATA_NAME),_sysconfigdata)" \
> > > > +       PYTHONPATH="$$(if $$(BR2_PACKAGE_PYTHON3),$$(PYTHON3_PATH),$$(PYTHON_PATH))" \
> > > > +       PYTHONNOUSERSITE=1 \
> > > >         PATH=$$(BR_PATH) $$($$(PKG)_CONF_ENV) $$(MESON) \
> > > >                 --prefix=/usr \
> > > >                 --libdir=lib \
> > > > --
> > > > 2.21.0
> > > >
> > > Not only does this work, it also fixes cross-compiled python libraries names
> > > built by meson (such as the new versions of python-gobject)
> > >
> > > Tested-by: Adam Duskett <Aduskett at gmail.com>


More information about the buildroot mailing list