[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