[Buildroot] [PATCH 1/1] package/pkg-meson: use meson to build/install packages

James Hilliard james.hilliard1 at gmail.com
Thu May 5 20:53:51 UTC 2022


On Thu, May 5, 2022 at 2:02 PM Arnout Vandecappelle <arnout at mind.be> wrote:
>
>
>
> On 05/05/2022 08:40, James Hilliard wrote:
> > As of version 0.54.0 meson has had the ability to build and install
> > packages rather than having to run ninja directly as before.
> >
> > This will allow us to use features such as meson install tags in
> > the future which require meson to be used for the installation.
> >
> > Signed-off-by: James Hilliard <james.hilliard1 at gmail.com>
> > ---
> >   .../gobject-introspection.mk                  |  4 +-
> >   package/pkg-meson.mk                          | 52 ++++++++++++++-----
> >   package/systemd/systemd.mk                    |  4 +-
> >   3 files changed, 41 insertions(+), 19 deletions(-)
> >
> > diff --git a/package/gobject-introspection/gobject-introspection.mk b/package/gobject-introspection/gobject-introspection.mk
> > index 41d64171a7..ea5100247d 100644
> > --- a/package/gobject-introspection/gobject-introspection.mk
> > +++ b/package/gobject-introspection/gobject-introspection.mk
> > @@ -30,14 +30,14 @@ HOST_GOBJECT_INTROSPECTION_DEPENDENCIES = \
> >       host-python3
> >
> >   # g-ir-scanner will default to /usr/bin/ld for linking if this is not set.
> > -GOBJECT_INTROSPECTION_NINJA_ENV += \
> > +GOBJECT_INTROSPECTION_MESON_ENV += \
>
>   If there are external packages that use this, they'll need to be updated as
> well. Yann, Peter, do you think that's acceptable?

I assume this is fairly rare, as it is barely even used in buildroot itself.

>
>   For sure, the documentation docs/manual/adding-packages-meson.txt will need to
> be updated.

Docs updated in v2:
https://patchwork.ozlabs.org/project/buildroot/patch/20220505205203.1079204-1-james.hilliard1@gmail.com/

>
>   Regards,
>   Arnout
>
> >       CC="$(TARGET_CC)"
> >
> >   # When building, gobject-introspection uses tools/g-ir-scanner to build several
> >   # .gir and .typelib files. g-ir-scanner does not use LDFLAGS, and by default,
> >   # links to the system-installed libglib2 path. To remedy this issue, defining
> >   # LD_LIBRARY_PATH forces g-ir-scanner to use our host installed libglib2 files.
> > -HOST_GOBJECT_INTROSPECTION_NINJA_ENV += \
> > +HOST_GOBJECT_INTROSPECTION_MESON_ENV += \
> >       LD_LIBRARY_PATH="$(if $(LD_LIBRARY_PATH),$(LD_LIBRARY_PATH):)$(HOST_DIR)/lib"
> >
> >   # Use the host gi-scanner to prevent the scanner from generating incorrect
> > diff --git a/package/pkg-meson.mk b/package/pkg-meson.mk
> > index f1390a18d0..bdea893d93 100644
> > --- a/package/pkg-meson.mk
> > +++ b/package/pkg-meson.mk
> > @@ -21,13 +21,13 @@
> >   ################################################################################
> >
> >   #
> > -# Pass PYTHONNOUSERSITE environment variable when invoking Meson or Ninja, so
> > +# Pass PYTHONNOUSERSITE environment variable when invoking Meson, so
> >   # $(HOST_DIR)/bin/python3 will not look for Meson modules in
> >   # $HOME/.local/lib/python3.x/site-packages
> >   #
> > -MESON                = PYTHONNOUSERSITE=y $(HOST_DIR)/bin/meson
> > -NINJA                = PYTHONNOUSERSITE=y $(HOST_DIR)/bin/ninja
> > -NINJA_OPTS   = $(if $(VERBOSE),-v) -j$(PARALLEL_JOBS)
> > +MESON              = PYTHONNOUSERSITE=y $(HOST_DIR)/bin/meson
> > +MESON_BUILD_OPTS   = $(if $(VERBOSE),-v) -j$(PARALLEL_JOBS)
> > +MESON_INSTALL_OPTS = --no-rebuild
> >
> >   # https://mesonbuild.com/Reference-tables.html#cpu-families
> >   ifeq ($(BR2_arcle)$(BR2_arceb),y)
> > @@ -172,13 +172,23 @@ $(2)_DEPENDENCIES += host-meson
> >   ifndef $(2)_BUILD_CMDS
> >   ifeq ($(4),target)
> >   define $(2)_BUILD_CMDS
> > -     $$(TARGET_MAKE_ENV) $$($$(PKG)_NINJA_ENV) \
> > -             $$(NINJA) $$(NINJA_OPTS) $$($$(PKG)_NINJA_OPTS) -C $$($$(PKG)_SRCDIR)/build
> > +     $$(TARGET_MAKE_ENV) \
> > +     $$($$(PKG)_MESON_ENV) \
> > +     $$(MESON) \
> > +             compile \
> > +             $$(MESON_BUILD_OPTS) \
> > +             $$(if $$($$(PKG)_NINJA_OPTS),--ninja-args $$($$(PKG)_NINJA_OPTS)) \
> > +             -C $$($$(PKG)_SRCDIR)/build
> >   endef
> >   else
> >   define $(2)_BUILD_CMDS
> > -     $$(HOST_MAKE_ENV) $$($$(PKG)_NINJA_ENV) \
> > -             $$(NINJA) $$(NINJA_OPTS) $$($$(PKG)_NINJA_OPTS) -C $$($$(PKG)_SRCDIR)/build
> > +     $$(HOST_MAKE_ENV) \
> > +     $$($$(PKG)_MESON_ENV) \
> > +     $$(MESON) \
> > +             compile \
> > +             $$(MESON_BUILD_OPTS) \
> > +             $$(if $$($$(PKG)_NINJA_OPTS),--ninja-args $$($$(PKG)_NINJA_OPTS)) \
> > +             -C $$($$(PKG)_SRCDIR)/build
> >   endef
> >   endif
> >   endif
> > @@ -189,8 +199,12 @@ endif
> >   #
> >   ifndef $(2)_INSTALL_CMDS
> >   define $(2)_INSTALL_CMDS
> > -     $$(HOST_MAKE_ENV) $$($$(PKG)_NINJA_ENV) \
> > -             $$(NINJA) $$(NINJA_OPTS) -C $$($$(PKG)_SRCDIR)/build install
> > +     $$(HOST_MAKE_ENV) \
> > +     $$($$(PKG)_MESON_ENV) \
> > +     $$(MESON) \
> > +             install \
> > +             $$(MESON_INSTALL_OPTS) \
> > +             -C $$($$(PKG)_SRCDIR)/build
> >   endef
> >   endif
> >
> > @@ -200,8 +214,13 @@ endif
> >   #
> >   ifndef $(2)_INSTALL_STAGING_CMDS
> >   define $(2)_INSTALL_STAGING_CMDS
> > -     $$(TARGET_MAKE_ENV) $$($$(PKG)_NINJA_ENV) DESTDIR=$$(STAGING_DIR) \
> > -             $$(NINJA) $$(NINJA_OPTS) -C $$($$(PKG)_SRCDIR)/build install
> > +     $$(TARGET_MAKE_ENV) \
> > +     $$($$(PKG)_MESON_ENV) \
> > +     $$(MESON) \
> > +             install \
> > +             $$(MESON_INSTALL_OPTS) \
> > +             --destdir $$(STAGING_DIR) \
> > +             -C $$($$(PKG)_SRCDIR)/build
> >   endef
> >   endif
> >
> > @@ -211,8 +230,13 @@ endif
> >   #
> >   ifndef $(2)_INSTALL_TARGET_CMDS
> >   define $(2)_INSTALL_TARGET_CMDS
> > -     $$(TARGET_MAKE_ENV) $$($$(PKG)_NINJA_ENV) DESTDIR=$$(TARGET_DIR) \
> > -             $$(NINJA) $$(NINJA_OPTS) -C $$($$(PKG)_SRCDIR)/build install
> > +     $$(TARGET_MAKE_ENV) \
> > +     $$($$(PKG)_MESON_ENV) \
> > +     $$(MESON) \
> > +             install \
> > +             $$(MESON_INSTALL_OPTS) \
> > +             --destdir $$(TARGET_DIR) \
> > +             -C $$($$(PKG)_SRCDIR)/build
> >   endef
> >   endif
> >
> > diff --git a/package/systemd/systemd.mk b/package/systemd/systemd.mk
> > index b309507e12..ea6f5febc2 100644
> > --- a/package/systemd/systemd.mk
> > +++ b/package/systemd/systemd.mk
> > @@ -746,7 +746,7 @@ endef
> >   SYSTEMD_ROOTFS_PRE_CMD_HOOKS += SYSTEMD_PRESET_ALL
> >
> >   SYSTEMD_CONF_ENV = $(HOST_UTF8_LOCALE_ENV)
> > -SYSTEMD_NINJA_ENV = $(HOST_UTF8_LOCALE_ENV)
> > +SYSTEMD_MESON_ENV = $(HOST_UTF8_LOCALE_ENV)
> >
> >   define SYSTEMD_LINUX_CONFIG_FIXUPS
> >       $(call KCONFIG_ENABLE_OPT,CONFIG_DEVTMPFS)
> > @@ -849,8 +849,6 @@ HOST_SYSTEMD_DEPENDENCIES = \
> >       host-gperf \
> >       host-python-jinja2
> >
> > -HOST_SYSTEMD_NINJA_ENV = DESTDIR=$(HOST_DIR)
> > -
> >   # Fix RPATH After installation
> >   # * systemd provides a install_rpath instruction to meson because the binaries
> >   #   need to link with libsystemd which is not in a standard path



More information about the buildroot mailing list