* [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).