* [RFC PATCH] build: automatically report minimum meson version @ 2024-10-09 15:24 Bruce Richardson 2024-10-09 16:40 ` Stephen Hemminger ` (3 more replies) 0 siblings, 4 replies; 10+ messages in thread From: Bruce Richardson @ 2024-10-09 15:24 UTC (permalink / raw) To: dev; +Cc: david.marchand, probb, Bruce Richardson Add a script to buildtools to report the minimum meson version given in our meson.build file. Then use this script in two ways: 1. in the .ci/linux-setup.sh script, use the auto-determined minimum version to set up the CI, rather than hard-coding it. 2. in meson.build call the script to report the version. This serves as a sanity check to ensure that any changes to meson.build file do not break the script. Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> --- .ci/linux-setup.sh | 6 +++++- buildtools/get-min-meson-version.py | 26 ++++++++++++++++++++++++++ buildtools/meson.build | 5 +++++ 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100755 buildtools/get-min-meson-version.py diff --git a/.ci/linux-setup.sh b/.ci/linux-setup.sh index 975bf32144..e025ca0243 100755 --- a/.ci/linux-setup.sh +++ b/.ci/linux-setup.sh @@ -3,8 +3,12 @@ # Builds are run as root in containers, no need for sudo [ "$(id -u)" != '0' ] || alias sudo= +# determine minimum meson version +ci_dir=$(dirname $(readlink -f $0)) +meson_ver=$(python3 $ci_dir/../buildtools/get-min-meson-version.py) + # need to install as 'root' since some of the unit tests won't run without it -sudo python3 -m pip install --upgrade 'meson==0.53.2' +sudo python3 -m pip install --upgrade "meson==$meson_ver" # setup hugepages. error ignored because having hugepage is not mandatory. cat /proc/meminfo diff --git a/buildtools/get-min-meson-version.py b/buildtools/get-min-meson-version.py new file mode 100755 index 0000000000..f0de8fdf2b --- /dev/null +++ b/buildtools/get-min-meson-version.py @@ -0,0 +1,26 @@ +#! /usr/bin/env python3 +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2024 Intel Corporation + +import os +import re +import sys +from os.path import dirname, realpath, join + +buildtools_path = dirname(realpath(__file__)) +basedir = dirname(buildtools_path) + +with open(join(basedir, "meson.build")) as f: + for ln in f.readlines(): + if "meson_version" not in ln: + continue + + ln = ln.strip() + ver_match = re.search(r"meson_version:\s*'>=\s*([0-9\.]+)'", ln) + if not ver_match: + print( + f"Meson version specifier not in recognised format: '{ln}'", + file=sys.stderr, + ) + sys.exit(1) + print(ver_match.group(1), end="") diff --git a/buildtools/meson.build b/buildtools/meson.build index 3adf34e1a8..8b20ac0dd0 100644 --- a/buildtools/meson.build +++ b/buildtools/meson.build @@ -24,6 +24,11 @@ get_numa_count_cmd = py3 + files('get-numa-count.py') get_test_suites_cmd = py3 + files('get-test-suites.py') has_hugepages_cmd = py3 + files('has-hugepages.py') cmdline_gen_cmd = py3 + files('dpdk-cmdline-gen.py') +get_min_meson_version_cmd = py3 + files('get-min-meson-version.py') + +# check that we can correctly report minimum meson version +min_ver = run_command(get_min_meson_version_cmd, check: true, capture: true) +message('Minimum meson required version is ' + min_ver.stdout()) # install any build tools that end-users might want also install_data([ -- 2.43.0 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC PATCH] build: automatically report minimum meson version 2024-10-09 15:24 [RFC PATCH] build: automatically report minimum meson version Bruce Richardson @ 2024-10-09 16:40 ` Stephen Hemminger 2024-10-14 16:31 ` Patrick Robb ` (2 subsequent siblings) 3 siblings, 0 replies; 10+ messages in thread From: Stephen Hemminger @ 2024-10-09 16:40 UTC (permalink / raw) To: Bruce Richardson; +Cc: dev, david.marchand, probb On Wed, 9 Oct 2024 16:24:01 +0100 Bruce Richardson <bruce.richardson@intel.com> wrote: > Add a script to buildtools to report the minimum meson version given in > our meson.build file. Then use this script in two ways: > > 1. in the .ci/linux-setup.sh script, use the auto-determined minimum > version to set up the CI, rather than hard-coding it. > 2. in meson.build call the script to report the version. This serves as > a sanity check to ensure that any changes to meson.build file do not > break the script. > > Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Make sense, kind of annoying that it requires so many lines to do this but very understandable. Acked-by: Stephen Hemminger <stephen@networkplumber.org> ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [RFC PATCH] build: automatically report minimum meson version 2024-10-09 15:24 [RFC PATCH] build: automatically report minimum meson version Bruce Richardson 2024-10-09 16:40 ` Stephen Hemminger @ 2024-10-14 16:31 ` Patrick Robb 2025-05-13 8:59 ` [PATCH v2] " Bruce Richardson 2025-05-15 13:46 ` [PATCH v3] " Bruce Richardson 3 siblings, 0 replies; 10+ messages in thread From: Patrick Robb @ 2024-10-14 16:31 UTC (permalink / raw) To: Bruce Richardson; +Cc: dev, david.marchand [-- Attachment #1: Type: text/plain, Size: 3925 bytes --] It seems like a good addition that meson.build and /.ci/linux-setup.sh are automatically in sync now. That's one less thing that someone has to "just remember" when increasing the meson minimum version. I will flag on the other thread (increasing the meson version) when UNH's scripts are updated to always run linux-setup.sh ahead of each testrun. Reviewed-by: Patrick Robb <probb@iol.unh.edu> On Wed, Oct 9, 2024 at 11:24 AM Bruce Richardson <bruce.richardson@intel.com> wrote: > Add a script to buildtools to report the minimum meson version given in > our meson.build file. Then use this script in two ways: > > 1. in the .ci/linux-setup.sh script, use the auto-determined minimum > version to set up the CI, rather than hard-coding it. > 2. in meson.build call the script to report the version. This serves as > a sanity check to ensure that any changes to meson.build file do not > break the script. > > Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> > --- > .ci/linux-setup.sh | 6 +++++- > buildtools/get-min-meson-version.py | 26 ++++++++++++++++++++++++++ > buildtools/meson.build | 5 +++++ > 3 files changed, 36 insertions(+), 1 deletion(-) > create mode 100755 buildtools/get-min-meson-version.py > > diff --git a/.ci/linux-setup.sh b/.ci/linux-setup.sh > index 975bf32144..e025ca0243 100755 > --- a/.ci/linux-setup.sh > +++ b/.ci/linux-setup.sh > @@ -3,8 +3,12 @@ > # Builds are run as root in containers, no need for sudo > [ "$(id -u)" != '0' ] || alias sudo= > > +# determine minimum meson version > +ci_dir=$(dirname $(readlink -f $0)) > +meson_ver=$(python3 $ci_dir/../buildtools/get-min-meson-version.py) > + > # need to install as 'root' since some of the unit tests won't run > without it > -sudo python3 -m pip install --upgrade 'meson==0.53.2' > +sudo python3 -m pip install --upgrade "meson==$meson_ver" > > # setup hugepages. error ignored because having hugepage is not mandatory. > cat /proc/meminfo > diff --git a/buildtools/get-min-meson-version.py > b/buildtools/get-min-meson-version.py > new file mode 100755 > index 0000000000..f0de8fdf2b > --- /dev/null > +++ b/buildtools/get-min-meson-version.py > @@ -0,0 +1,26 @@ > +#! /usr/bin/env python3 > +# SPDX-License-Identifier: BSD-3-Clause > +# Copyright(c) 2024 Intel Corporation > + > +import os > +import re > +import sys > +from os.path import dirname, realpath, join > + > +buildtools_path = dirname(realpath(__file__)) > +basedir = dirname(buildtools_path) > + > +with open(join(basedir, "meson.build")) as f: > + for ln in f.readlines(): > + if "meson_version" not in ln: > + continue > + > + ln = ln.strip() > + ver_match = re.search(r"meson_version:\s*'>=\s*([0-9\.]+)'", ln) > + if not ver_match: > + print( > + f"Meson version specifier not in recognised format: > '{ln}'", > + file=sys.stderr, > + ) > + sys.exit(1) > + print(ver_match.group(1), end="") > diff --git a/buildtools/meson.build b/buildtools/meson.build > index 3adf34e1a8..8b20ac0dd0 100644 > --- a/buildtools/meson.build > +++ b/buildtools/meson.build > @@ -24,6 +24,11 @@ get_numa_count_cmd = py3 + files('get-numa-count.py') > get_test_suites_cmd = py3 + files('get-test-suites.py') > has_hugepages_cmd = py3 + files('has-hugepages.py') > cmdline_gen_cmd = py3 + files('dpdk-cmdline-gen.py') > +get_min_meson_version_cmd = py3 + files('get-min-meson-version.py') > + > +# check that we can correctly report minimum meson version > +min_ver = run_command(get_min_meson_version_cmd, check: true, capture: > true) > +message('Minimum meson required version is ' + min_ver.stdout()) > > # install any build tools that end-users might want also > install_data([ > -- > 2.43.0 > > [-- Attachment #2: Type: text/html, Size: 4813 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2] build: automatically report minimum meson version 2024-10-09 15:24 [RFC PATCH] build: automatically report minimum meson version Bruce Richardson 2024-10-09 16:40 ` Stephen Hemminger 2024-10-14 16:31 ` Patrick Robb @ 2025-05-13 8:59 ` Bruce Richardson 2025-05-15 7:09 ` David Marchand 2025-05-15 13:46 ` [PATCH v3] " Bruce Richardson 3 siblings, 1 reply; 10+ messages in thread From: Bruce Richardson @ 2025-05-13 8:59 UTC (permalink / raw) To: dev; +Cc: Bruce Richardson, Stephen Hemminger, Patrick Robb Add a script to buildtools to report the minimum meson version given in our meson.build file. Then use this script in two ways: 1. in the .ci/linux-setup.sh script, use the auto-determined minimum version to set up the CI, rather than hard-coding it. 2. in meson.build call the script to report the version. This serves as a sanity check to ensure that any changes to meson.build file do not break the script. Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: Stephen Hemminger <stephen@networkplumber.org> Reviewed-by: Patrick Robb <probb@iol.unh.edu> --- v2: rebased to latest main --- .ci/linux-setup.sh | 6 +++++- buildtools/get-min-meson-version.py | 26 ++++++++++++++++++++++++++ buildtools/meson.build | 5 +++++ 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100755 buildtools/get-min-meson-version.py diff --git a/.ci/linux-setup.sh b/.ci/linux-setup.sh index 938d492cbb..e025ca0243 100755 --- a/.ci/linux-setup.sh +++ b/.ci/linux-setup.sh @@ -3,8 +3,12 @@ # Builds are run as root in containers, no need for sudo [ "$(id -u)" != '0' ] || alias sudo= +# determine minimum meson version +ci_dir=$(dirname $(readlink -f $0)) +meson_ver=$(python3 $ci_dir/../buildtools/get-min-meson-version.py) + # need to install as 'root' since some of the unit tests won't run without it -sudo python3 -m pip install --upgrade 'meson==0.57.2' +sudo python3 -m pip install --upgrade "meson==$meson_ver" # setup hugepages. error ignored because having hugepage is not mandatory. cat /proc/meminfo diff --git a/buildtools/get-min-meson-version.py b/buildtools/get-min-meson-version.py new file mode 100755 index 0000000000..f0de8fdf2b --- /dev/null +++ b/buildtools/get-min-meson-version.py @@ -0,0 +1,26 @@ +#! /usr/bin/env python3 +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2024 Intel Corporation + +import os +import re +import sys +from os.path import dirname, realpath, join + +buildtools_path = dirname(realpath(__file__)) +basedir = dirname(buildtools_path) + +with open(join(basedir, "meson.build")) as f: + for ln in f.readlines(): + if "meson_version" not in ln: + continue + + ln = ln.strip() + ver_match = re.search(r"meson_version:\s*'>=\s*([0-9\.]+)'", ln) + if not ver_match: + print( + f"Meson version specifier not in recognised format: '{ln}'", + file=sys.stderr, + ) + sys.exit(1) + print(ver_match.group(1), end="") diff --git a/buildtools/meson.build b/buildtools/meson.build index 1cd1ce02fd..cc0198081d 100644 --- a/buildtools/meson.build +++ b/buildtools/meson.build @@ -26,6 +26,11 @@ header_gen_cmd = py3 + files('gen-header.py') has_hugepages_cmd = py3 + files('has-hugepages.py') cmdline_gen_cmd = py3 + files('dpdk-cmdline-gen.py') check_dts_requirements = py3 + files('check-dts-requirements.py') +get_min_meson_version_cmd = py3 + files('get-min-meson-version.py') + +# check that we can correctly report minimum meson version +min_ver = run_command(get_min_meson_version_cmd, check: true, capture: true) +message('Minimum meson required version is ' + min_ver.stdout()) # install any build tools that end-users might want also install_data([ -- 2.45.2 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2] build: automatically report minimum meson version 2025-05-13 8:59 ` [PATCH v2] " Bruce Richardson @ 2025-05-15 7:09 ` David Marchand 2025-05-15 9:36 ` Bruce Richardson 0 siblings, 1 reply; 10+ messages in thread From: David Marchand @ 2025-05-15 7:09 UTC (permalink / raw) To: dev; +Cc: Bruce Richardson, Stephen Hemminger, Patrick Robb On Tue, May 13, 2025 at 11:00 AM Bruce Richardson <bruce.richardson@intel.com> wrote: > > Add a script to buildtools to report the minimum meson version given in > our meson.build file. Then use this script in two ways: > > 1. in the .ci/linux-setup.sh script, use the auto-determined minimum > version to set up the CI, rather than hard-coding it. > 2. in meson.build call the script to report the version. This serves as > a sanity check to ensure that any changes to meson.build file do not > break the script. > > Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> > Acked-by: Stephen Hemminger <stephen@networkplumber.org> > Reviewed-by: Patrick Robb <probb@iol.unh.edu> > --- > v2: rebased to latest main This patch is reverting dbcd72f3fba0 ("ci: fix unit tests with Fedora 37"). There were some strange errors raised by UNH, though I don't see the same python backtrace. Let's try again: Recheck-request: iol-unit-arm64-testing, iol-unit-amd64-testing -- David Marchand ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2] build: automatically report minimum meson version 2025-05-15 7:09 ` David Marchand @ 2025-05-15 9:36 ` Bruce Richardson 2025-05-15 11:39 ` David Marchand 0 siblings, 1 reply; 10+ messages in thread From: Bruce Richardson @ 2025-05-15 9:36 UTC (permalink / raw) To: David Marchand; +Cc: dev, Stephen Hemminger, Patrick Robb On Thu, May 15, 2025 at 09:09:22AM +0200, David Marchand wrote: > On Tue, May 13, 2025 at 11:00 AM Bruce Richardson > <bruce.richardson@intel.com> wrote: > > > > Add a script to buildtools to report the minimum meson version given in > > our meson.build file. Then use this script in two ways: > > > > 1. in the .ci/linux-setup.sh script, use the auto-determined minimum > > version to set up the CI, rather than hard-coding it. > > 2. in meson.build call the script to report the version. This serves as > > a sanity check to ensure that any changes to meson.build file do not > > break the script. > > > > Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> > > Acked-by: Stephen Hemminger <stephen@networkplumber.org> > > Reviewed-by: Patrick Robb <probb@iol.unh.edu> > > --- > > v2: rebased to latest main > > This patch is reverting dbcd72f3fba0 ("ci: fix unit tests with Fedora 37"). > > There were some strange errors raised by UNH, though I don't see the > same python backtrace. > Let's try again: > Recheck-request: iol-unit-arm64-testing, iol-unit-amd64-testing > If we have issues using 0.57, I don't see there being issues with us marking the min meson version to 0.57.2 rather than 0.57 alone. I can do that in a v3, or else we can abandon this patch, if you prefer. /Bruce ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2] build: automatically report minimum meson version 2025-05-15 9:36 ` Bruce Richardson @ 2025-05-15 11:39 ` David Marchand 2025-05-15 12:28 ` Patrick Robb 2025-05-15 12:54 ` Bruce Richardson 0 siblings, 2 replies; 10+ messages in thread From: David Marchand @ 2025-05-15 11:39 UTC (permalink / raw) To: Bruce Richardson; +Cc: dev, Stephen Hemminger, Patrick Robb, Thomas Monjalon On Thu, May 15, 2025 at 11:37 AM Bruce Richardson <bruce.richardson@intel.com> wrote: > > On Thu, May 15, 2025 at 09:09:22AM +0200, David Marchand wrote: > > On Tue, May 13, 2025 at 11:00 AM Bruce Richardson > > <bruce.richardson@intel.com> wrote: > > > > > > Add a script to buildtools to report the minimum meson version given in > > > our meson.build file. Then use this script in two ways: > > > > > > 1. in the .ci/linux-setup.sh script, use the auto-determined minimum > > > version to set up the CI, rather than hard-coding it. > > > 2. in meson.build call the script to report the version. This serves as > > > a sanity check to ensure that any changes to meson.build file do not > > > break the script. > > > > > > Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> > > > Acked-by: Stephen Hemminger <stephen@networkplumber.org> > > > Reviewed-by: Patrick Robb <probb@iol.unh.edu> > > > --- > > > v2: rebased to latest main > > > > This patch is reverting dbcd72f3fba0 ("ci: fix unit tests with Fedora 37"). > > > > There were some strange errors raised by UNH, though I don't see the > > same python backtrace. > > Let's try again: > > Recheck-request: iol-unit-arm64-testing, iol-unit-amd64-testing > > > If we have issues using 0.57, I don't see there being issues with us > marking the min meson version to 0.57.2 rather than 0.57 alone. I can do > that in a v3, or else we can abandon this patch, if you prefer. Retests show the same error, so I think we are hitting the issue fixed with dbcd72f3fba0. Bumping the minimal version to 0.57.2 seems fine. I looked and can't find a distrib that ships meson 0.57. So either a user relies on the distrib version (with a version >= 0.58, from my quick search) or the distrib provided version is too old and then the user relies on pip. -- David Marchand ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2] build: automatically report minimum meson version 2025-05-15 11:39 ` David Marchand @ 2025-05-15 12:28 ` Patrick Robb 2025-05-15 12:54 ` Bruce Richardson 1 sibling, 0 replies; 10+ messages in thread From: Patrick Robb @ 2025-05-15 12:28 UTC (permalink / raw) To: David Marchand; +Cc: Bruce Richardson, dev, Stephen Hemminger, Thomas Monjalon [-- Attachment #1: Type: text/plain, Size: 3788 bytes --] On Thu, May 15, 2025 at 1:40 PM David Marchand <david.marchand@redhat.com> wrote: > > > Retests show the same error, so I think we are hitting the issue fixed > with dbcd72f3fba0. > > Bumping the minimal version to 0.57.2 seems fine. > I looked and can't find a distrib that ships meson 0.57. > So either a user relies on the distrib version (with a version >= > 0.58, from my quick search) or the distrib provided version is too old > and then the user relies on pip. > > FYI here's the stacktrace below which is not making it to the testlog on the dashboard (something for UNH people to look at). But yes it's the same issue fixed with dbcd72f3fba0babd2d801c2c63ee537df459df66 --------- Exception in callback TestHarness._run_tests.<locals>.test_done(<Task finishe...explicitly.')>) at /usr/local/lib/python3.12/site-packages/mesonbuild/mtest.py:1806 handle: <Handle TestHarness._run_tests.<locals>.test_done(<Task finishe...explicitly.')>) at /usr/local/lib/python3.12/site-packages/mesonbuild/mtest.py:1806> Traceback (most recent call last): File "/usr/lib64/python3.12/asyncio/events.py", line 88, in _run self._context.run(self._callback, *self._args) File "/usr/local/lib/python3.12/site-packages/mesonbuild/mtest.py", line 1808, in test_done f.result() File "/usr/local/lib/python3.12/site-packages/mesonbuild/mtest.py", line 1803, in run_test res = await test.run(self) ^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/mesonbuild/mtest.py", line 1349, in run await self._run_cmd(harness, cmd) File "/usr/local/lib/python3.12/site-packages/mesonbuild/mtest.py", line 1415, in _run_cmd returncode, result, additional_error = await p.wait(self.runobj.timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/mesonbuild/mtest.py", line 1241, in wait await try_wait_one(p.wait(), timeout=timeout) File "/usr/local/lib/python3.12/site-packages/mesonbuild/mtest.py", line 1132, in try_wait_one await asyncio.wait(awaitables, File "/usr/lib64/python3.12/asyncio/tasks.py", line 461, in wait raise TypeError("Passing coroutines is forbidden, use tasks explicitly.") TypeError: Passing coroutines is forbidden, use tasks explicitly. /usr/lib64/python3.12/asyncio/events.py:88: RuntimeWarning: coroutine 'Process.wait' was never awaited self._context.run(self._callback, *self._args) RuntimeWarning: Enable tracemalloc to get the object allocation traceback Traceback (most recent call last): File "/usr/local/lib/python3.12/site-packages/mesonbuild/mesonmain.py", line 132, in run return options.run_func(options) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/mesonbuild/mtest.py", line 1953, in run return th.doit() ^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/mesonbuild/mtest.py", line 1641, in doit self.run_tests(runners) File "/usr/local/lib/python3.12/site-packages/mesonbuild/mtest.py", line 1780, in run_tests loop.run_until_complete(self._run_tests(runners)) File "/usr/lib64/python3.12/asyncio/base_events.py", line 687, in run_until_complete return future.result() ^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/mesonbuild/mtest.py", line 1871, in _run_tests await complete(future) File "/usr/local/lib/python3.12/site-packages/mesonbuild/mtest.py", line 1148, in complete await future TypeError: Passing coroutines is forbidden, use tasks explicitly. Ok: 0 Expected Fail: 0 Fail: 0 Unexpected Pass: 0 Skipped: 0 Timeout: 0 [-- Attachment #2: Type: text/html, Size: 4774 bytes --] ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH v2] build: automatically report minimum meson version 2025-05-15 11:39 ` David Marchand 2025-05-15 12:28 ` Patrick Robb @ 2025-05-15 12:54 ` Bruce Richardson 1 sibling, 0 replies; 10+ messages in thread From: Bruce Richardson @ 2025-05-15 12:54 UTC (permalink / raw) To: David Marchand; +Cc: dev, Stephen Hemminger, Patrick Robb, Thomas Monjalon On Thu, May 15, 2025 at 01:39:47PM +0200, David Marchand wrote: > On Thu, May 15, 2025 at 11:37 AM Bruce Richardson > <bruce.richardson@intel.com> wrote: > > > > On Thu, May 15, 2025 at 09:09:22AM +0200, David Marchand wrote: > > > On Tue, May 13, 2025 at 11:00 AM Bruce Richardson > > > <bruce.richardson@intel.com> wrote: > > > > > > > > Add a script to buildtools to report the minimum meson version given in > > > > our meson.build file. Then use this script in two ways: > > > > > > > > 1. in the .ci/linux-setup.sh script, use the auto-determined minimum > > > > version to set up the CI, rather than hard-coding it. > > > > 2. in meson.build call the script to report the version. This serves as > > > > a sanity check to ensure that any changes to meson.build file do not > > > > break the script. > > > > > > > > Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> > > > > Acked-by: Stephen Hemminger <stephen@networkplumber.org> > > > > Reviewed-by: Patrick Robb <probb@iol.unh.edu> > > > > --- > > > > v2: rebased to latest main > > > > > > This patch is reverting dbcd72f3fba0 ("ci: fix unit tests with Fedora 37"). > > > > > > There were some strange errors raised by UNH, though I don't see the > > > same python backtrace. > > > Let's try again: > > > Recheck-request: iol-unit-arm64-testing, iol-unit-amd64-testing > > > > > If we have issues using 0.57, I don't see there being issues with us > > marking the min meson version to 0.57.2 rather than 0.57 alone. I can do > > that in a v3, or else we can abandon this patch, if you prefer. > > Retests show the same error, so I think we are hitting the issue fixed > with dbcd72f3fba0. > > Bumping the minimal version to 0.57.2 seems fine. > I looked and can't find a distrib that ships meson 0.57. > So either a user relies on the distrib version (with a version >= > 0.58, from my quick search) or the distrib provided version is too old > and then the user relies on pip. > Ok, will do a new revision with the version bump. /Bruce ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v3] build: automatically report minimum meson version 2024-10-09 15:24 [RFC PATCH] build: automatically report minimum meson version Bruce Richardson ` (2 preceding siblings ...) 2025-05-13 8:59 ` [PATCH v2] " Bruce Richardson @ 2025-05-15 13:46 ` Bruce Richardson 3 siblings, 0 replies; 10+ messages in thread From: Bruce Richardson @ 2025-05-15 13:46 UTC (permalink / raw) To: dev; +Cc: david.marchand, Bruce Richardson, Stephen Hemminger, Patrick Robb Add a script to buildtools to report the minimum meson version given in our meson.build file. Then use this script in two ways: 1. in the .ci/linux-setup.sh script, use the auto-determined minimum version to set up the CI, rather than hard-coding it. 2. in meson.build call the script to report the version. This serves as a sanity check to ensure that any changes to meson.build file do not break the script. Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: Stephen Hemminger <stephen@networkplumber.org> Reviewed-by: Patrick Robb <probb@iol.unh.edu> --- v3: update minimum meson to 0.57.2 (from 0.57.0) to fix CI errors v2: rebase to latest main --- .ci/linux-setup.sh | 6 +++++- buildtools/get-min-meson-version.py | 26 ++++++++++++++++++++++++++ buildtools/meson.build | 5 +++++ meson.build | 2 +- 4 files changed, 37 insertions(+), 2 deletions(-) create mode 100755 buildtools/get-min-meson-version.py diff --git a/.ci/linux-setup.sh b/.ci/linux-setup.sh index 938d492cbb..e025ca0243 100755 --- a/.ci/linux-setup.sh +++ b/.ci/linux-setup.sh @@ -3,8 +3,12 @@ # Builds are run as root in containers, no need for sudo [ "$(id -u)" != '0' ] || alias sudo= +# determine minimum meson version +ci_dir=$(dirname $(readlink -f $0)) +meson_ver=$(python3 $ci_dir/../buildtools/get-min-meson-version.py) + # need to install as 'root' since some of the unit tests won't run without it -sudo python3 -m pip install --upgrade 'meson==0.57.2' +sudo python3 -m pip install --upgrade "meson==$meson_ver" # setup hugepages. error ignored because having hugepage is not mandatory. cat /proc/meminfo diff --git a/buildtools/get-min-meson-version.py b/buildtools/get-min-meson-version.py new file mode 100755 index 0000000000..f0de8fdf2b --- /dev/null +++ b/buildtools/get-min-meson-version.py @@ -0,0 +1,26 @@ +#! /usr/bin/env python3 +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2024 Intel Corporation + +import os +import re +import sys +from os.path import dirname, realpath, join + +buildtools_path = dirname(realpath(__file__)) +basedir = dirname(buildtools_path) + +with open(join(basedir, "meson.build")) as f: + for ln in f.readlines(): + if "meson_version" not in ln: + continue + + ln = ln.strip() + ver_match = re.search(r"meson_version:\s*'>=\s*([0-9\.]+)'", ln) + if not ver_match: + print( + f"Meson version specifier not in recognised format: '{ln}'", + file=sys.stderr, + ) + sys.exit(1) + print(ver_match.group(1), end="") diff --git a/buildtools/meson.build b/buildtools/meson.build index 1cd1ce02fd..cc0198081d 100644 --- a/buildtools/meson.build +++ b/buildtools/meson.build @@ -26,6 +26,11 @@ header_gen_cmd = py3 + files('gen-header.py') has_hugepages_cmd = py3 + files('has-hugepages.py') cmdline_gen_cmd = py3 + files('dpdk-cmdline-gen.py') check_dts_requirements = py3 + files('check-dts-requirements.py') +get_min_meson_version_cmd = py3 + files('get-min-meson-version.py') + +# check that we can correctly report minimum meson version +min_ver = run_command(get_min_meson_version_cmd, check: true, capture: true) +message('Minimum meson required version is ' + min_ver.stdout()) # install any build tools that end-users might want also install_data([ diff --git a/meson.build b/meson.build index dfb4cb3aee..5ff68cb3af 100644 --- a/meson.build +++ b/meson.build @@ -10,7 +10,7 @@ project('DPDK', 'c', 'default_library=static', 'warning_level=2', ], - meson_version: '>= 0.57' + meson_version: '>= 0.57.2' ) fs = import('fs') -- 2.48.1 ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2025-05-15 13:47 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2024-10-09 15:24 [RFC PATCH] build: automatically report minimum meson version Bruce Richardson 2024-10-09 16:40 ` Stephen Hemminger 2024-10-14 16:31 ` Patrick Robb 2025-05-13 8:59 ` [PATCH v2] " Bruce Richardson 2025-05-15 7:09 ` David Marchand 2025-05-15 9:36 ` Bruce Richardson 2025-05-15 11:39 ` David Marchand 2025-05-15 12:28 ` Patrick Robb 2025-05-15 12:54 ` Bruce Richardson 2025-05-15 13:46 ` [PATCH v3] " Bruce Richardson
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).