Message ID | 20190503131851.12315-1-norbert.lange@andritz.com |
---|---|
State | Rejected |
Headers | show |
Series | [1/2] allow build infrastructure to pick up installed meson tool | expand |
Hello Norbert, appreciating every patch which speeds up the buildroot build process ;-), but some nits, one minor comments and one major concern, see below... On Fri, 3 May 2019 15:18:50 +0200, Norbert Lange <nolange79@gmail.com> wrote: > From: Norbert Lange <nolange79@gmail.com> > > Automatically check for an available meson tool, > and use it aslond the version is fitting. s/aslond/as long/ > > Some concerns are about being able to figure out the > correct version for all available packages in buildroot. > The min version could be set to version 1.0 to postpone the You mean 1.0 to disable host meson usage? > problem, but still have the infrastructure in place > to allow users to override the version. > > Currently host-ninja will still be always built. > > Signed-off-by: Norbert Lange <nolange79@gmail.com> > --- > package/meson/meson.mk | 1 - > package/pkg-meson.mk | 4 +-- > support/dependencies/check-host-meson.mk | 16 +++++++++ > support/dependencies/check-host-meson.sh | 45 ++++++++++++++++++++++++ > 4 files changed, 63 insertions(+), 3 deletions(-) > create mode 100644 support/dependencies/check-host-meson.mk > create mode 100755 support/dependencies/check-host-meson.sh > > diff --git a/package/meson/meson.mk b/package/meson/meson.mk > index cf62b0ddde..2ce7a26ab5 100644 > --- a/package/meson/meson.mk > +++ b/package/meson/meson.mk > @@ -10,7 +10,6 @@ MESON_LICENSE = Apache-2.0 > MESON_LICENSE_FILES = COPYING > MESON_SETUP_TYPE = setuptools > > -HOST_MESON_DEPENDENCIES = host-ninja > HOST_MESON_NEEDS_HOST_PYTHON = python3 > > HOST_MESON_TARGET_ENDIAN = $(call LOWERCASE,$(BR2_ENDIAN)) > diff --git a/package/pkg-meson.mk b/package/pkg-meson.mk > index 7f1838c09a..25e9bb814e 100644 > --- a/package/pkg-meson.mk > +++ b/package/pkg-meson.mk > @@ -25,7 +25,7 @@ > # $(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 > +MESON = PYTHONNOUSERSITE=y $(BR2_MESON) > NINJA = PYTHONNOUSERSITE=y $(HOST_DIR)/bin/ninja > NINJA_OPTS = $(if $(VERBOSE),-v) -j$(PARALLEL_JOBS) > > @@ -105,7 +105,7 @@ endef > endif > endif > > -$(2)_DEPENDENCIES += host-meson > +$(2)_DEPENDENCIES += $(BR2_MESON_HOST_DEPENDENCY) > > # > # Build step. Only define it if not already defined by the package .mk > diff --git a/support/dependencies/check-host-meson.mk b/support/dependencies/check-host-meson.mk > new file mode 100644 > index 0000000000..6c779b3e6d > --- /dev/null > +++ b/support/dependencies/check-host-meson.mk > @@ -0,0 +1,16 @@ > +# Set this to either 0.49 or higher, depending on the highest minimum > +# version required by any of the packages bundled in Buildroot. If a > +# package is bumped or a new one added, and it requires a higher > +# version, our meson infra will catch it and build its own. > +# > +BR2_MESON_VERSION_MIN = 0.49 Needs support for third version number, see latest meson bump to 0.50 and revert, but 0.50.1 worked ([1], [2], [3])... The major concern is no distribution will ship meson with the still needed buildroot patch, see [4]... Regards, Peter [1] https://git.buildroot.net/buildroot/commit/?id=114e9dcd28e1001b74689215ec669b8940dc3ea9 [2] https://git.buildroot.net/buildroot/commit/?id=c37b81af64dd8d6729325d8edbe633e6a186bb3d [3] https://git.buildroot.net/buildroot/commit/?id=70fb5e610761dd6468a058c580acc3d4f81fe547 [4] https://git.buildroot.net/buildroot/tree/package/meson/0001-Only-fix-RPATH-if-install_rpath-is-not-empty.patch > + > +BR2_MESON_CANDIDATES ?= meson > +BR2_MESON ?= $(call suitable-host-package,meson,\ > + $(BR2_MESON_VERSION_MIN) $(BR2_MESON_CANDIDATES)) > +ifeq ($(BR2_MESON),) > +BR2_MESON = $(HOST_DIR)/bin/meson > +BR2_MESON_HOST_DEPENDENCY = host-meson host-ninja > +else > +BR2_MESON_HOST_DEPENDENCY = host-ninja > +endif > diff --git a/support/dependencies/check-host-meson.sh b/support/dependencies/check-host-meson.sh > new file mode 100755 > index 0000000000..805fac9349 > --- /dev/null > +++ b/support/dependencies/check-host-meson.sh > @@ -0,0 +1,45 @@ > +#!/bin/sh > + > +# prevent shift error > +[ $# -lt 2 ] && exit 1 > + > +split_version() { > + local VARPREFIX > + local NUMBERS > + local major > + local minor > + > + VARPREFIX=$1 > + NUMBERS=$2 > + > + major=${NUMBERS%%\.*} > + NUMBERS=${NUMBERS#$major}; NUMBERS=${NUMBERS#\.} > + minor=${NUMBERS%%\.*} > + NUMBERS=${NUMBERS#$minor}; NUMBERS=${NUMBERS#\.} > + > + # ensure that missing values are 0 > + eval "${VARPREFIX}_major=\$major; ${VARPREFIX}_minor=\$((minor + 0)); ${VARPREFIX}_bugfix=\$((NUMBERS + 0));" > +} > + > +split_version req "$1" > + > +shift > + > +for candidate; do > + > + # Try to locate the candidate. Discard it if not located. > + meson=$(which "${candidate}" 2>/dev/null) > + [ -n "${meson}" ] || continue > + > + split_version cur "$("${meson}" --version)" > + > + [ -n "${cur_major}" -a "${cur_major}" -ge "${req_major}" ] || continue > + [ "${cur_major}" -gt "${req_major}" ] || [ "${cur_minor}" -ge "${req_minor}" ] || continue > + [ "${cur_minor}" -gt "${req_minor}" ] || [ "${cur_bugfix}" -ge "${req_bugfix}" ] || continue > + > + echo "${meson}" > + exit > +done > + > +# echo nothing: no suitable meson found > +exit 1 > -- > 2.20.1 > > _______________________________________________ > buildroot mailing list > buildroot@busybox.net > http://lists.busybox.net/mailman/listinfo/buildroot
Am Fr., 3. Mai 2019 um 18:57 Uhr schrieb Peter Seiderer <ps.report@gmx.net>: > > Hello Norbert, > > appreciating every patch which speeds up the buildroot build process ;-), > but some nits, one minor comments and one major concern, see below... > > On Fri, 3 May 2019 15:18:50 +0200, Norbert Lange <nolange79@gmail.com> wrote: > > > From: Norbert Lange <nolange79@gmail.com> > > > > Automatically check for an available meson tool, > > and use it aslond the version is fitting. > > s/aslond/as long/ Ack > > > > Some concerns are about being able to figure out the > > correct version for all available packages in buildroot. > > The min version could be set to version 1.0 to postpone the > > You mean 1.0 to disable host meson usage? Yes, so meson is always built like it is now, if this is too critical to enable by default. > > problem, but still have the infrastructure in place > > to allow users to override the version. > > > > Currently host-ninja will still be always built. > > > > Signed-off-by: Norbert Lange <nolange79@gmail.com> > > --- > > package/meson/meson.mk | 1 - > > package/pkg-meson.mk | 4 +-- > > support/dependencies/check-host-meson.mk | 16 +++++++++ > > support/dependencies/check-host-meson.sh | 45 ++++++++++++++++++++++++ > > 4 files changed, 63 insertions(+), 3 deletions(-) > > create mode 100644 support/dependencies/check-host-meson.mk > > create mode 100755 support/dependencies/check-host-meson.sh > > > > diff --git a/package/meson/meson.mk b/package/meson/meson.mk > > index cf62b0ddde..2ce7a26ab5 100644 > > --- a/package/meson/meson.mk > > +++ b/package/meson/meson.mk > > @@ -10,7 +10,6 @@ MESON_LICENSE = Apache-2.0 > > MESON_LICENSE_FILES = COPYING > > MESON_SETUP_TYPE = setuptools > > > > -HOST_MESON_DEPENDENCIES = host-ninja > > HOST_MESON_NEEDS_HOST_PYTHON = python3 > > > > HOST_MESON_TARGET_ENDIAN = $(call LOWERCASE,$(BR2_ENDIAN)) > > diff --git a/package/pkg-meson.mk b/package/pkg-meson.mk > > index 7f1838c09a..25e9bb814e 100644 > > --- a/package/pkg-meson.mk > > +++ b/package/pkg-meson.mk > > @@ -25,7 +25,7 @@ > > # $(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 > > +MESON = PYTHONNOUSERSITE=y $(BR2_MESON) > > NINJA = PYTHONNOUSERSITE=y $(HOST_DIR)/bin/ninja > > NINJA_OPTS = $(if $(VERBOSE),-v) -j$(PARALLEL_JOBS) > > > > @@ -105,7 +105,7 @@ endef > > endif > > endif > > > > -$(2)_DEPENDENCIES += host-meson > > +$(2)_DEPENDENCIES += $(BR2_MESON_HOST_DEPENDENCY) > > > > # > > # Build step. Only define it if not already defined by the package .mk > > diff --git a/support/dependencies/check-host-meson.mk b/support/dependencies/check-host-meson.mk > > new file mode 100644 > > index 0000000000..6c779b3e6d > > --- /dev/null > > +++ b/support/dependencies/check-host-meson.mk > > @@ -0,0 +1,16 @@ > > +# Set this to either 0.49 or higher, depending on the highest minimum > > +# version required by any of the packages bundled in Buildroot. If a > > +# package is bumped or a new one added, and it requires a higher > > +# version, our meson infra will catch it and build its own. > > +# > > +BR2_MESON_VERSION_MIN = 0.49 > > Needs support for third version number, see latest meson bump to 0.50 and revert, but > 0.50.1 worked ([1], [2], [3])... There is support for up to 3 version components in support/dependencies/check-host-meson.sh > > The major concern is no distribution will ship meson with the still needed > buildroot patch, see [4]... Ok, news to me. Whats the practical effect though, does rpath even work if you relocated buildroot? Is it necessary if you set LD_LIBRARY_PATH? (From my personal experience I was never happy with RPATH). > > Regards, > Peter Regards, Norbert
Hello, On Fri, 3 May 2019 18:57:21 +0200 Peter Seiderer <ps.report@gmx.net> wrote: > The major concern is no distribution will ship meson with the still needed > buildroot patch, see [4]... Indeed, that makes it impractical/impossible to use a system-provided meson. If we want to get there at some point, the 0001-Only-fix-RPATH-if-install_rpath-is-not-empty.patch patch needs to be upstreamed in a form or another. Best regards, Thomas
Am Di., 7. Mai 2019 um 22:56 Uhr schrieb Thomas Petazzoni <thomas.petazzoni@bootlin.com>: > > Hello, > > On Fri, 3 May 2019 18:57:21 +0200 > Peter Seiderer <ps.report@gmx.net> wrote: > > > The major concern is no distribution will ship meson with the still needed > > buildroot patch, see [4]... > > Indeed, that makes it impractical/impossible to use a system-provided > meson. If we want to get there at some point, the > 0001-Only-fix-RPATH-if-install_rpath-is-not-empty.patch patch needs to > be upstreamed in a form or another. I see why you would not want to depend on a system provided meson, but it does work for target libraries. So my proposal would be to incorporate the changes now, with min-version set to a value that always evaluates to false. So a user like me can enable the system meson easily, even if its not officially supported or tested. Norbert
diff --git a/package/meson/meson.mk b/package/meson/meson.mk index cf62b0ddde..2ce7a26ab5 100644 --- a/package/meson/meson.mk +++ b/package/meson/meson.mk @@ -10,7 +10,6 @@ MESON_LICENSE = Apache-2.0 MESON_LICENSE_FILES = COPYING MESON_SETUP_TYPE = setuptools -HOST_MESON_DEPENDENCIES = host-ninja HOST_MESON_NEEDS_HOST_PYTHON = python3 HOST_MESON_TARGET_ENDIAN = $(call LOWERCASE,$(BR2_ENDIAN)) diff --git a/package/pkg-meson.mk b/package/pkg-meson.mk index 7f1838c09a..25e9bb814e 100644 --- a/package/pkg-meson.mk +++ b/package/pkg-meson.mk @@ -25,7 +25,7 @@ # $(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 +MESON = PYTHONNOUSERSITE=y $(BR2_MESON) NINJA = PYTHONNOUSERSITE=y $(HOST_DIR)/bin/ninja NINJA_OPTS = $(if $(VERBOSE),-v) -j$(PARALLEL_JOBS) @@ -105,7 +105,7 @@ endef endif endif -$(2)_DEPENDENCIES += host-meson +$(2)_DEPENDENCIES += $(BR2_MESON_HOST_DEPENDENCY) # # Build step. Only define it if not already defined by the package .mk diff --git a/support/dependencies/check-host-meson.mk b/support/dependencies/check-host-meson.mk new file mode 100644 index 0000000000..6c779b3e6d --- /dev/null +++ b/support/dependencies/check-host-meson.mk @@ -0,0 +1,16 @@ +# Set this to either 0.49 or higher, depending on the highest minimum +# version required by any of the packages bundled in Buildroot. If a +# package is bumped or a new one added, and it requires a higher +# version, our meson infra will catch it and build its own. +# +BR2_MESON_VERSION_MIN = 0.49 + +BR2_MESON_CANDIDATES ?= meson +BR2_MESON ?= $(call suitable-host-package,meson,\ + $(BR2_MESON_VERSION_MIN) $(BR2_MESON_CANDIDATES)) +ifeq ($(BR2_MESON),) +BR2_MESON = $(HOST_DIR)/bin/meson +BR2_MESON_HOST_DEPENDENCY = host-meson host-ninja +else +BR2_MESON_HOST_DEPENDENCY = host-ninja +endif diff --git a/support/dependencies/check-host-meson.sh b/support/dependencies/check-host-meson.sh new file mode 100755 index 0000000000..805fac9349 --- /dev/null +++ b/support/dependencies/check-host-meson.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +# prevent shift error +[ $# -lt 2 ] && exit 1 + +split_version() { + local VARPREFIX + local NUMBERS + local major + local minor + + VARPREFIX=$1 + NUMBERS=$2 + + major=${NUMBERS%%\.*} + NUMBERS=${NUMBERS#$major}; NUMBERS=${NUMBERS#\.} + minor=${NUMBERS%%\.*} + NUMBERS=${NUMBERS#$minor}; NUMBERS=${NUMBERS#\.} + + # ensure that missing values are 0 + eval "${VARPREFIX}_major=\$major; ${VARPREFIX}_minor=\$((minor + 0)); ${VARPREFIX}_bugfix=\$((NUMBERS + 0));" +} + +split_version req "$1" + +shift + +for candidate; do + + # Try to locate the candidate. Discard it if not located. + meson=$(which "${candidate}" 2>/dev/null) + [ -n "${meson}" ] || continue + + split_version cur "$("${meson}" --version)" + + [ -n "${cur_major}" -a "${cur_major}" -ge "${req_major}" ] || continue + [ "${cur_major}" -gt "${req_major}" ] || [ "${cur_minor}" -ge "${req_minor}" ] || continue + [ "${cur_minor}" -gt "${req_minor}" ] || [ "${cur_bugfix}" -ge "${req_bugfix}" ] || continue + + echo "${meson}" + exit +done + +# echo nothing: no suitable meson found +exit 1