* [PATCH] iputils: backport a fix for building on hosts without ip installed
[not found] <1697EB16E97488E4.1963@lists.openembedded.org>
@ 2021-08-04 8:06 ` Martin Jansa
2021-08-04 8:36 ` [OE-core] " Chen Qi
0 siblings, 1 reply; 3+ messages in thread
From: Martin Jansa @ 2021-08-04 8:06 UTC (permalink / raw)
To: openembedded-core; +Cc: alex.kanavin, Martin Jansa
* otherwise fails with:
../git/ping/meson.build:38:0: ERROR: Program or command 'ip' not found or not executable
on hosts without ip command
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
---
.../0001-meson-Make-tests-optional.patch | 217 ++++++++++++++++++
.../iputils/iputils_20210722.bb | 8 +-
2 files changed, 222 insertions(+), 3 deletions(-)
create mode 100644 meta/recipes-extended/iputils/iputils/0001-meson-Make-tests-optional.patch
diff --git a/meta/recipes-extended/iputils/iputils/0001-meson-Make-tests-optional.patch b/meta/recipes-extended/iputils/iputils/0001-meson-Make-tests-optional.patch
new file mode 100644
index 0000000000..0e47a8f047
--- /dev/null
+++ b/meta/recipes-extended/iputils/iputils/0001-meson-Make-tests-optional.patch
@@ -0,0 +1,217 @@
+From c50aa971b9f7bf3212c48cb271ab2b1e804aef7f Mon Sep 17 00:00:00 2001
+From: Heiko Becker <heirecka@exherbo.org>
+Date: Fri, 23 Jul 2021 16:32:46 +0200
+Subject: [PATCH] meson: Make tests optional
+
+Now can be disabled with -DSKIP_TESTS=true.
+
+It allows to avoid meson error during build when ip isn't installed.
+
+Closes: #359
+
+Reviewed-by: Petr Vorel <petr.vorel@gmail.com>
+Signed-off-by: Heiko Becker <heirecka@exherbo.org>
+[ pvorel: Rename variable TEST => SKIP_TESTS, default false, adjust
+the description ]
+Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
+
+Upstream-Status: Backport
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ meson_options.txt | 3 ++
+ ping/meson.build | 84 ++-----------------------------------------
+ ping/test/meson.build | 81 +++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 86 insertions(+), 82 deletions(-)
+ create mode 100644 ping/test/meson.build
+
+diff --git a/meson_options.txt b/meson_options.txt
+index ac5f5d9..517667f 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -72,3 +72,6 @@ option('INSTALL_SYSTEMD_UNITS', type: 'boolean', value: false,
+
+ option('USE_GETTEXT', type: 'boolean', value: true,
+ description: 'Enable I18N')
++
++option('SKIP_TESTS', type: 'boolean', value: false,
++ description: 'Skip tests during build')
+diff --git a/ping/meson.build b/ping/meson.build
+index 1e678ec..83ea353 100644
+--- a/ping/meson.build
++++ b/ping/meson.build
+@@ -27,86 +27,6 @@ if (setcap_ping)
+ )
+ endif
+
+-##### TESTS #####
+-
+-# TODO: ::1 generates DEPRECATION: ":" is not allowed in test name "ping -c1 ::1", it has been replaced with "_"
+-
+-# GitHub CI does not have working IPv6
+-# https://github.com/actions/virtual-environments/issues/668
+-ipv6_dst = []
+-ipv6_switch = []
+-r = run_command('ip', '-6', 'a')
+-if r.stdout().strip().contains('::1')
+- message('IPv6 enabled')
+- ipv6_dst = [ '::1' ]
+- ipv6_switch = [ '-6' ]
+-else
+- message('WARNING: IPv6 disabled')
++if not get_option('SKIP_TESTS')
++ subdir('test')
+ endif
+-
+-run_as_root = false
+-r = run_command('id', '-u')
+-if r.stdout().strip().to_int() == 0
+- message('running as root')
+- run_as_root = true
+-else
+- message('running as normal user')
+-endif
+-
+-foreach dst : [ 'localhost', '127.0.0.1' ] + ipv6_dst
+- foreach switch : [ '', '-4' ] + ipv6_switch
+- args = [ '-c1', dst ]
+- should_fail = false
+-
+- if switch != ''
+- args = [switch] + args
+- if (switch == '-4' and dst == '::1') or (switch == '-6' and dst == '127.0.0.1')
+- should_fail = true
+- endif
+- endif
+-
+- name = 'ping ' + ' '.join(args)
+- test(name, ping, args : args, should_fail : should_fail)
+- endforeach
+-endforeach
+-
+-ping_tests_opt = [
+- [ '-c1' ],
+- [ '-c5', '-i0.1' ],
+- [ '-c1', '-I', 'lo' ],
+- [ '-c1', '-w1' ],
+- [ '-c1', '-W1' ],
+- [ '-c1', '-W1.1' ],
+-]
+-foreach dst : [ '127.0.0.1' ] + ipv6_dst
+- foreach args : ping_tests_opt
+- args += [ dst ]
+- name = 'ping ' + ' '.join(args)
+- test(name, ping, args : args)
+- endforeach
+-endforeach
+-
+-ping_tests_opt_fail = [
+- [ '-c1.1' ],
+- [ '-I', 'nonexisting' ],
+- [ '-w0.1' ],
+- [ '-w0,1' ],
+-]
+-foreach dst : [ '127.0.0.1' ] + ipv6_dst
+- foreach args : ping_tests_opt_fail
+- args += [ dst ]
+- name = 'ping ' + ' '.join(args)
+- test(name, ping, args : args, should_fail : true)
+- endforeach
+-endforeach
+-
+-ping_tests_user_fail = [
+- [ '-c1', '-i0.001' ], # -c1 required to quit ping when running as root
+-]
+-foreach dst : [ '127.0.0.1' ] + ipv6_dst
+- foreach args : ping_tests_user_fail
+- args += [ dst ]
+- name = 'ping ' + ' '.join(args)
+- test(name, ping, args : args, should_fail : not run_as_root)
+- endforeach
+-endforeach
+diff --git a/ping/test/meson.build b/ping/test/meson.build
+new file mode 100644
+index 0000000..43aed75
+--- /dev/null
++++ b/ping/test/meson.build
+@@ -0,0 +1,81 @@
++# TODO: ::1 generates DEPRECATION: ":" is not allowed in test name "ping -c1 ::1", it has been replaced with "_"
++
++# GitHub CI does not have working IPv6
++# https://github.com/actions/virtual-environments/issues/668
++ipv6_dst = []
++ipv6_switch = []
++r = run_command('ip', '-6', 'a')
++if r.stdout().strip().contains('::1')
++ message('IPv6 enabled')
++ ipv6_dst = [ '::1' ]
++ ipv6_switch = [ '-6' ]
++else
++ message('WARNING: IPv6 disabled')
++endif
++
++run_as_root = false
++r = run_command('id', '-u')
++if r.stdout().strip().to_int() == 0
++ message('running as root')
++ run_as_root = true
++else
++ message('running as normal user')
++endif
++
++foreach dst : [ 'localhost', '127.0.0.1' ] + ipv6_dst
++ foreach switch : [ '', '-4' ] + ipv6_switch
++ args = [ '-c1', dst ]
++ should_fail = false
++
++ if switch != ''
++ args = [switch] + args
++ if (switch == '-4' and dst == '::1') or (switch == '-6' and dst == '127.0.0.1')
++ should_fail = true
++ endif
++ endif
++
++ name = 'ping ' + ' '.join(args)
++ test(name, ping, args : args, should_fail : should_fail)
++ endforeach
++endforeach
++
++ping_tests_opt = [
++ [ '-c1' ],
++ [ '-c5', '-i0.1' ],
++ [ '-c1', '-I', 'lo' ],
++ [ '-c1', '-w1' ],
++ [ '-c1', '-W1' ],
++ [ '-c1', '-W1.1' ],
++]
++foreach dst : [ '127.0.0.1' ] + ipv6_dst
++ foreach args : ping_tests_opt
++ args += [ dst ]
++ name = 'ping ' + ' '.join(args)
++ test(name, ping, args : args)
++ endforeach
++endforeach
++
++ping_tests_opt_fail = [
++ [ '-c1.1' ],
++ [ '-I', 'nonexisting' ],
++ [ '-w0.1' ],
++ [ '-w0,1' ],
++]
++foreach dst : [ '127.0.0.1' ] + ipv6_dst
++ foreach args : ping_tests_opt_fail
++ args += [ dst ]
++ name = 'ping ' + ' '.join(args)
++ test(name, ping, args : args, should_fail : true)
++ endforeach
++endforeach
++
++ping_tests_user_fail = [
++ [ '-c1', '-i0.001' ], # -c1 required to quit ping when running as root
++]
++foreach dst : [ '127.0.0.1' ] + ipv6_dst
++ foreach args : ping_tests_user_fail
++ args += [ dst ]
++ name = 'ping ' + ' '.join(args)
++ test(name, ping, args : args, should_fail : not run_as_root)
++ endforeach
++endforeach
diff --git a/meta/recipes-extended/iputils/iputils_20210722.bb b/meta/recipes-extended/iputils/iputils_20210722.bb
index c2a5bf44ea..2e4ff2e826 100644
--- a/meta/recipes-extended/iputils/iputils_20210722.bb
+++ b/meta/recipes-extended/iputils/iputils_20210722.bb
@@ -11,8 +11,9 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=55aa8c9fcad0691cef0ecd420361e390"
DEPENDS = "gnutls"
SRC_URI = "git://github.com/iputils/iputils \
- file://0001-rarpd-rdisc-Drop-PrivateUsers.patch \
- "
+ file://0001-rarpd-rdisc-Drop-PrivateUsers.patch \
+ file://0001-meson-Make-tests-optional.patch \
+"
SRCREV = "71bb2a6c72e9f658e90ac618c73d873a76bbaa81"
S = "${WORKDIR}/git"
@@ -38,7 +39,8 @@ PACKAGECONFIG[docs] = "-DBUILD_HTML_MANS=true -DBUILD_MANS=true,-DBUILD_HTML_MAN
inherit meson systemd update-alternatives
-EXTRA_OEMESON += "--prefix=${root_prefix}/"
+# skip tests as they require ip to be installed on host
+EXTRA_OEMESON += "--prefix=${root_prefix}/ -DSKIP_TESTS=true"
ALTERNATIVE_PRIORITY = "100"
--
2.30.2
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [OE-core] [PATCH] iputils: backport a fix for building on hosts without ip installed
2021-08-04 8:06 ` [PATCH] iputils: backport a fix for building on hosts without ip installed Martin Jansa
@ 2021-08-04 8:36 ` Chen Qi
2021-08-04 9:15 ` Martin Jansa
0 siblings, 1 reply; 3+ messages in thread
From: Chen Qi @ 2021-08-04 8:36 UTC (permalink / raw)
To: Martin Jansa, openembedded-core; +Cc: alex.kanavin
[-- Attachment #1: Type: text/plain, Size: 9210 bytes --]
Hi Martin,
I met the same problem and sent out a similar patch.
More accurately, the problem is about 'testsdk' and 'testimage' not
being inherited in configuration.
meta/conf/bitbake.conf:HOSTTOOLS += "${@'ip ping ps scp ssh stty' if
(bb.utils.contains_any('IMAGE_CLASSES', 'testimage testsdk', True,
False, d) or any(x in (d.getVar("BBINCLUDED") or "") for x in
["testimage.bbclass", "testsdk.bbclass"])) else ''}"
Best Regards,
Chen Qi
On 08/04/2021 04:06 PM, Martin Jansa wrote:
> * otherwise fails with:
> ../git/ping/meson.build:38:0: ERROR: Program or command 'ip' not found or not executable
> on hosts without ip command
>
> Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
> ---
> .../0001-meson-Make-tests-optional.patch | 217 ++++++++++++++++++
> .../iputils/iputils_20210722.bb | 8 +-
> 2 files changed, 222 insertions(+), 3 deletions(-)
> create mode 100644 meta/recipes-extended/iputils/iputils/0001-meson-Make-tests-optional.patch
>
> diff --git a/meta/recipes-extended/iputils/iputils/0001-meson-Make-tests-optional.patch b/meta/recipes-extended/iputils/iputils/0001-meson-Make-tests-optional.patch
> new file mode 100644
> index 0000000000..0e47a8f047
> --- /dev/null
> +++ b/meta/recipes-extended/iputils/iputils/0001-meson-Make-tests-optional.patch
> @@ -0,0 +1,217 @@
> +From c50aa971b9f7bf3212c48cb271ab2b1e804aef7f Mon Sep 17 00:00:00 2001
> +From: Heiko Becker <heirecka@exherbo.org>
> +Date: Fri, 23 Jul 2021 16:32:46 +0200
> +Subject: [PATCH] meson: Make tests optional
> +
> +Now can be disabled with -DSKIP_TESTS=true.
> +
> +It allows to avoid meson error during build when ip isn't installed.
> +
> +Closes: #359
> +
> +Reviewed-by: Petr Vorel <petr.vorel@gmail.com>
> +Signed-off-by: Heiko Becker <heirecka@exherbo.org>
> +[ pvorel: Rename variable TEST => SKIP_TESTS, default false, adjust
> +the description ]
> +Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
> +
> +Upstream-Status: Backport
> +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
> +---
> + meson_options.txt | 3 ++
> + ping/meson.build | 84 ++-----------------------------------------
> + ping/test/meson.build | 81 +++++++++++++++++++++++++++++++++++++++++
> + 3 files changed, 86 insertions(+), 82 deletions(-)
> + create mode 100644 ping/test/meson.build
> +
> +diff --git a/meson_options.txt b/meson_options.txt
> +index ac5f5d9..517667f 100644
> +--- a/meson_options.txt
> ++++ b/meson_options.txt
> +@@ -72,3 +72,6 @@ option('INSTALL_SYSTEMD_UNITS', type: 'boolean', value: false,
> +
> + option('USE_GETTEXT', type: 'boolean', value: true,
> + description: 'Enable I18N')
> ++
> ++option('SKIP_TESTS', type: 'boolean', value: false,
> ++ description: 'Skip tests during build')
> +diff --git a/ping/meson.build b/ping/meson.build
> +index 1e678ec..83ea353 100644
> +--- a/ping/meson.build
> ++++ b/ping/meson.build
> +@@ -27,86 +27,6 @@ if (setcap_ping)
> + )
> + endif
> +
> +-##### TESTS #####
> +-
> +-# TODO: ::1 generates DEPRECATION: ":" is not allowed in test name "ping -c1 ::1", it has been replaced with "_"
> +-
> +-# GitHub CI does not have working IPv6
> +-# https://github.com/actions/virtual-environments/issues/668
> +-ipv6_dst = []
> +-ipv6_switch = []
> +-r = run_command('ip', '-6', 'a')
> +-if r.stdout().strip().contains('::1')
> +- message('IPv6 enabled')
> +- ipv6_dst = [ '::1' ]
> +- ipv6_switch = [ '-6' ]
> +-else
> +- message('WARNING: IPv6 disabled')
> ++if not get_option('SKIP_TESTS')
> ++ subdir('test')
> + endif
> +-
> +-run_as_root = false
> +-r = run_command('id', '-u')
> +-if r.stdout().strip().to_int() == 0
> +- message('running as root')
> +- run_as_root = true
> +-else
> +- message('running as normal user')
> +-endif
> +-
> +-foreach dst : [ 'localhost', '127.0.0.1' ] + ipv6_dst
> +- foreach switch : [ '', '-4' ] + ipv6_switch
> +- args = [ '-c1', dst ]
> +- should_fail = false
> +-
> +- if switch != ''
> +- args = [switch] + args
> +- if (switch == '-4' and dst == '::1') or (switch == '-6' and dst == '127.0.0.1')
> +- should_fail = true
> +- endif
> +- endif
> +-
> +- name = 'ping ' + ' '.join(args)
> +- test(name, ping, args : args, should_fail : should_fail)
> +- endforeach
> +-endforeach
> +-
> +-ping_tests_opt = [
> +- [ '-c1' ],
> +- [ '-c5', '-i0.1' ],
> +- [ '-c1', '-I', 'lo' ],
> +- [ '-c1', '-w1' ],
> +- [ '-c1', '-W1' ],
> +- [ '-c1', '-W1.1' ],
> +-]
> +-foreach dst : [ '127.0.0.1' ] + ipv6_dst
> +- foreach args : ping_tests_opt
> +- args += [ dst ]
> +- name = 'ping ' + ' '.join(args)
> +- test(name, ping, args : args)
> +- endforeach
> +-endforeach
> +-
> +-ping_tests_opt_fail = [
> +- [ '-c1.1' ],
> +- [ '-I', 'nonexisting' ],
> +- [ '-w0.1' ],
> +- [ '-w0,1' ],
> +-]
> +-foreach dst : [ '127.0.0.1' ] + ipv6_dst
> +- foreach args : ping_tests_opt_fail
> +- args += [ dst ]
> +- name = 'ping ' + ' '.join(args)
> +- test(name, ping, args : args, should_fail : true)
> +- endforeach
> +-endforeach
> +-
> +-ping_tests_user_fail = [
> +- [ '-c1', '-i0.001' ], # -c1 required to quit ping when running as root
> +-]
> +-foreach dst : [ '127.0.0.1' ] + ipv6_dst
> +- foreach args : ping_tests_user_fail
> +- args += [ dst ]
> +- name = 'ping ' + ' '.join(args)
> +- test(name, ping, args : args, should_fail : not run_as_root)
> +- endforeach
> +-endforeach
> +diff --git a/ping/test/meson.build b/ping/test/meson.build
> +new file mode 100644
> +index 0000000..43aed75
> +--- /dev/null
> ++++ b/ping/test/meson.build
> +@@ -0,0 +1,81 @@
> ++# TODO: ::1 generates DEPRECATION: ":" is not allowed in test name "ping -c1 ::1", it has been replaced with "_"
> ++
> ++# GitHub CI does not have working IPv6
> ++# https://github.com/actions/virtual-environments/issues/668
> ++ipv6_dst = []
> ++ipv6_switch = []
> ++r = run_command('ip', '-6', 'a')
> ++if r.stdout().strip().contains('::1')
> ++ message('IPv6 enabled')
> ++ ipv6_dst = [ '::1' ]
> ++ ipv6_switch = [ '-6' ]
> ++else
> ++ message('WARNING: IPv6 disabled')
> ++endif
> ++
> ++run_as_root = false
> ++r = run_command('id', '-u')
> ++if r.stdout().strip().to_int() == 0
> ++ message('running as root')
> ++ run_as_root = true
> ++else
> ++ message('running as normal user')
> ++endif
> ++
> ++foreach dst : [ 'localhost', '127.0.0.1' ] + ipv6_dst
> ++ foreach switch : [ '', '-4' ] + ipv6_switch
> ++ args = [ '-c1', dst ]
> ++ should_fail = false
> ++
> ++ if switch != ''
> ++ args = [switch] + args
> ++ if (switch == '-4' and dst == '::1') or (switch == '-6' and dst == '127.0.0.1')
> ++ should_fail = true
> ++ endif
> ++ endif
> ++
> ++ name = 'ping ' + ' '.join(args)
> ++ test(name, ping, args : args, should_fail : should_fail)
> ++ endforeach
> ++endforeach
> ++
> ++ping_tests_opt = [
> ++ [ '-c1' ],
> ++ [ '-c5', '-i0.1' ],
> ++ [ '-c1', '-I', 'lo' ],
> ++ [ '-c1', '-w1' ],
> ++ [ '-c1', '-W1' ],
> ++ [ '-c1', '-W1.1' ],
> ++]
> ++foreach dst : [ '127.0.0.1' ] + ipv6_dst
> ++ foreach args : ping_tests_opt
> ++ args += [ dst ]
> ++ name = 'ping ' + ' '.join(args)
> ++ test(name, ping, args : args)
> ++ endforeach
> ++endforeach
> ++
> ++ping_tests_opt_fail = [
> ++ [ '-c1.1' ],
> ++ [ '-I', 'nonexisting' ],
> ++ [ '-w0.1' ],
> ++ [ '-w0,1' ],
> ++]
> ++foreach dst : [ '127.0.0.1' ] + ipv6_dst
> ++ foreach args : ping_tests_opt_fail
> ++ args += [ dst ]
> ++ name = 'ping ' + ' '.join(args)
> ++ test(name, ping, args : args, should_fail : true)
> ++ endforeach
> ++endforeach
> ++
> ++ping_tests_user_fail = [
> ++ [ '-c1', '-i0.001' ], # -c1 required to quit ping when running as root
> ++]
> ++foreach dst : [ '127.0.0.1' ] + ipv6_dst
> ++ foreach args : ping_tests_user_fail
> ++ args += [ dst ]
> ++ name = 'ping ' + ' '.join(args)
> ++ test(name, ping, args : args, should_fail : not run_as_root)
> ++ endforeach
> ++endforeach
> diff --git a/meta/recipes-extended/iputils/iputils_20210722.bb b/meta/recipes-extended/iputils/iputils_20210722.bb
> index c2a5bf44ea..2e4ff2e826 100644
> --- a/meta/recipes-extended/iputils/iputils_20210722.bb
> +++ b/meta/recipes-extended/iputils/iputils_20210722.bb
> @@ -11,8 +11,9 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=55aa8c9fcad0691cef0ecd420361e390"
> DEPENDS = "gnutls"
>
> SRC_URI = "git://github.com/iputils/iputils \
> - file://0001-rarpd-rdisc-Drop-PrivateUsers.patch \
> - "
> + file://0001-rarpd-rdisc-Drop-PrivateUsers.patch \
> + file://0001-meson-Make-tests-optional.patch \
> +"
> SRCREV = "71bb2a6c72e9f658e90ac618c73d873a76bbaa81"
>
> S = "${WORKDIR}/git"
> @@ -38,7 +39,8 @@ PACKAGECONFIG[docs] = "-DBUILD_HTML_MANS=true -DBUILD_MANS=true,-DBUILD_HTML_MAN
>
> inherit meson systemd update-alternatives
>
> -EXTRA_OEMESON += "--prefix=${root_prefix}/"
> +# skip tests as they require ip to be installed on host
> +EXTRA_OEMESON += "--prefix=${root_prefix}/ -DSKIP_TESTS=true"
>
> ALTERNATIVE_PRIORITY = "100"
>
>
>
>
>
[-- Attachment #2: Type: text/html, Size: 10673 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [OE-core] [PATCH] iputils: backport a fix for building on hosts without ip installed
2021-08-04 8:36 ` [OE-core] " Chen Qi
@ 2021-08-04 9:15 ` Martin Jansa
0 siblings, 0 replies; 3+ messages in thread
From: Martin Jansa @ 2021-08-04 9:15 UTC (permalink / raw)
To: ChenQi; +Cc: Patches and discussions about the oe-core layer, Alexander Kanavin
[-- Attachment #1: Type: text/plain, Size: 9649 bytes --]
Thanks, I haven't seen your fix before sending mine. Thanks
RP: please ignore my version.
On Wed, Aug 4, 2021 at 10:25 AM ChenQi <Qi.Chen@windriver.com> wrote:
> Hi Martin,
>
> I met the same problem and sent out a similar patch.
> More accurately, the problem is about 'testsdk' and 'testimage' not being
> inherited in configuration.
>
> meta/conf/bitbake.conf:HOSTTOOLS += "${@'ip ping ps scp ssh stty' if
> (bb.utils.contains_any('IMAGE_CLASSES', 'testimage testsdk', True, False,
> d) or any(x in (d.getVar("
> <$%7B@'ippingpsscpsshstty'if(bb.utils.contains_any('IMAGE_CLASSES','testimagetestsdk',True,False,d)orany(xin(d.getVar(>BBINCLUDED")
> or "") for x in ["testimage.bbclass", "testsdk.bbclass"])) else ''}"
>
> Best Regards,
> Chen Qi
>
> On 08/04/2021 04:06 PM, Martin Jansa wrote:
>
> * otherwise fails with:
> ../git/ping/meson.build:38:0: ERROR: Program or command 'ip' not found or not executable
> on hosts without ip command
>
> Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> <Martin.Jansa@gmail.com>
> ---
> .../0001-meson-Make-tests-optional.patch | 217 ++++++++++++++++++
> .../iputils/iputils_20210722.bb | 8 +-
> 2 files changed, 222 insertions(+), 3 deletions(-)
> create mode 100644 meta/recipes-extended/iputils/iputils/0001-meson-Make-tests-optional.patch
>
> diff --git a/meta/recipes-extended/iputils/iputils/0001-meson-Make-tests-optional.patch b/meta/recipes-extended/iputils/iputils/0001-meson-Make-tests-optional.patch
> new file mode 100644
> index 0000000000..0e47a8f047
> --- /dev/null
> +++ b/meta/recipes-extended/iputils/iputils/0001-meson-Make-tests-optional.patch
> @@ -0,0 +1,217 @@
> +From c50aa971b9f7bf3212c48cb271ab2b1e804aef7f Mon Sep 17 00:00:00 2001
> +From: Heiko Becker <heirecka@exherbo.org> <heirecka@exherbo.org>
> +Date: Fri, 23 Jul 2021 16:32:46 +0200
> +Subject: [PATCH] meson: Make tests optional
> +
> +Now can be disabled with -DSKIP_TESTS=true.
> +
> +It allows to avoid meson error during build when ip isn't installed.
> +
> +Closes: #359
> +
> +Reviewed-by: Petr Vorel <petr.vorel@gmail.com> <petr.vorel@gmail.com>
> +Signed-off-by: Heiko Becker <heirecka@exherbo.org> <heirecka@exherbo.org>
> +[ pvorel: Rename variable TEST => SKIP_TESTS, default false, adjust
> +the description ]
> +Signed-off-by: Petr Vorel <petr.vorel@gmail.com> <petr.vorel@gmail.com>
> +
> +Upstream-Status: Backport
> +Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> <Martin.Jansa@gmail.com>
> +---
> + meson_options.txt | 3 ++
> + ping/meson.build | 84 ++-----------------------------------------
> + ping/test/meson.build | 81 +++++++++++++++++++++++++++++++++++++++++
> + 3 files changed, 86 insertions(+), 82 deletions(-)
> + create mode 100644 ping/test/meson.build
> +
> +diff --git a/meson_options.txt b/meson_options.txt
> +index ac5f5d9..517667f 100644
> +--- a/meson_options.txt
> ++++ b/meson_options.txt
> +@@ -72,3 +72,6 @@ option('INSTALL_SYSTEMD_UNITS', type: 'boolean', value: false,
> +
> + option('USE_GETTEXT', type: 'boolean', value: true,
> + description: 'Enable I18N')
> ++
> ++option('SKIP_TESTS', type: 'boolean', value: false,
> ++ description: 'Skip tests during build')
> +diff --git a/ping/meson.build b/ping/meson.build
> +index 1e678ec..83ea353 100644
> +--- a/ping/meson.build
> ++++ b/ping/meson.build
> +@@ -27,86 +27,6 @@ if (setcap_ping)
> + )
> + endif
> +
> +-##### TESTS #####
> +-
> +-# TODO: ::1 generates DEPRECATION: ":" is not allowed in test name "ping -c1 ::1", it has been replaced with "_"
> +-
> +-# GitHub CI does not have working IPv6
> +-# https://github.com/actions/virtual-environments/issues/668
> +-ipv6_dst = []
> +-ipv6_switch = []
> +-r = run_command('ip', '-6', 'a')
> +-if r.stdout().strip().contains('::1')
> +- message('IPv6 enabled')
> +- ipv6_dst = [ '::1' ]
> +- ipv6_switch = [ '-6' ]
> +-else
> +- message('WARNING: IPv6 disabled')
> ++if not get_option('SKIP_TESTS')
> ++ subdir('test')
> + endif
> +-
> +-run_as_root = false
> +-r = run_command('id', '-u')
> +-if r.stdout().strip().to_int() == 0
> +- message('running as root')
> +- run_as_root = true
> +-else
> +- message('running as normal user')
> +-endif
> +-
> +-foreach dst : [ 'localhost', '127.0.0.1' ] + ipv6_dst
> +- foreach switch : [ '', '-4' ] + ipv6_switch
> +- args = [ '-c1', dst ]
> +- should_fail = false
> +-
> +- if switch != ''
> +- args = [switch] + args
> +- if (switch == '-4' and dst == '::1') or (switch == '-6' and dst == '127.0.0.1')
> +- should_fail = true
> +- endif
> +- endif
> +-
> +- name = 'ping ' + ' '.join(args)
> +- test(name, ping, args : args, should_fail : should_fail)
> +- endforeach
> +-endforeach
> +-
> +-ping_tests_opt = [
> +- [ '-c1' ],
> +- [ '-c5', '-i0.1' ],
> +- [ '-c1', '-I', 'lo' ],
> +- [ '-c1', '-w1' ],
> +- [ '-c1', '-W1' ],
> +- [ '-c1', '-W1.1' ],
> +-]
> +-foreach dst : [ '127.0.0.1' ] + ipv6_dst
> +- foreach args : ping_tests_opt
> +- args += [ dst ]
> +- name = 'ping ' + ' '.join(args)
> +- test(name, ping, args : args)
> +- endforeach
> +-endforeach
> +-
> +-ping_tests_opt_fail = [
> +- [ '-c1.1' ],
> +- [ '-I', 'nonexisting' ],
> +- [ '-w0.1' ],
> +- [ '-w0,1' ],
> +-]
> +-foreach dst : [ '127.0.0.1' ] + ipv6_dst
> +- foreach args : ping_tests_opt_fail
> +- args += [ dst ]
> +- name = 'ping ' + ' '.join(args)
> +- test(name, ping, args : args, should_fail : true)
> +- endforeach
> +-endforeach
> +-
> +-ping_tests_user_fail = [
> +- [ '-c1', '-i0.001' ], # -c1 required to quit ping when running as root
> +-]
> +-foreach dst : [ '127.0.0.1' ] + ipv6_dst
> +- foreach args : ping_tests_user_fail
> +- args += [ dst ]
> +- name = 'ping ' + ' '.join(args)
> +- test(name, ping, args : args, should_fail : not run_as_root)
> +- endforeach
> +-endforeach
> +diff --git a/ping/test/meson.build b/ping/test/meson.build
> +new file mode 100644
> +index 0000000..43aed75
> +--- /dev/null
> ++++ b/ping/test/meson.build
> +@@ -0,0 +1,81 @@
> ++# TODO: ::1 generates DEPRECATION: ":" is not allowed in test name "ping -c1 ::1", it has been replaced with "_"
> ++
> ++# GitHub CI does not have working IPv6
> ++# https://github.com/actions/virtual-environments/issues/668
> ++ipv6_dst = []
> ++ipv6_switch = []
> ++r = run_command('ip', '-6', 'a')
> ++if r.stdout().strip().contains('::1')
> ++ message('IPv6 enabled')
> ++ ipv6_dst = [ '::1' ]
> ++ ipv6_switch = [ '-6' ]
> ++else
> ++ message('WARNING: IPv6 disabled')
> ++endif
> ++
> ++run_as_root = false
> ++r = run_command('id', '-u')
> ++if r.stdout().strip().to_int() == 0
> ++ message('running as root')
> ++ run_as_root = true
> ++else
> ++ message('running as normal user')
> ++endif
> ++
> ++foreach dst : [ 'localhost', '127.0.0.1' ] + ipv6_dst
> ++ foreach switch : [ '', '-4' ] + ipv6_switch
> ++ args = [ '-c1', dst ]
> ++ should_fail = false
> ++
> ++ if switch != ''
> ++ args = [switch] + args
> ++ if (switch == '-4' and dst == '::1') or (switch == '-6' and dst == '127.0.0.1')
> ++ should_fail = true
> ++ endif
> ++ endif
> ++
> ++ name = 'ping ' + ' '.join(args)
> ++ test(name, ping, args : args, should_fail : should_fail)
> ++ endforeach
> ++endforeach
> ++
> ++ping_tests_opt = [
> ++ [ '-c1' ],
> ++ [ '-c5', '-i0.1' ],
> ++ [ '-c1', '-I', 'lo' ],
> ++ [ '-c1', '-w1' ],
> ++ [ '-c1', '-W1' ],
> ++ [ '-c1', '-W1.1' ],
> ++]
> ++foreach dst : [ '127.0.0.1' ] + ipv6_dst
> ++ foreach args : ping_tests_opt
> ++ args += [ dst ]
> ++ name = 'ping ' + ' '.join(args)
> ++ test(name, ping, args : args)
> ++ endforeach
> ++endforeach
> ++
> ++ping_tests_opt_fail = [
> ++ [ '-c1.1' ],
> ++ [ '-I', 'nonexisting' ],
> ++ [ '-w0.1' ],
> ++ [ '-w0,1' ],
> ++]
> ++foreach dst : [ '127.0.0.1' ] + ipv6_dst
> ++ foreach args : ping_tests_opt_fail
> ++ args += [ dst ]
> ++ name = 'ping ' + ' '.join(args)
> ++ test(name, ping, args : args, should_fail : true)
> ++ endforeach
> ++endforeach
> ++
> ++ping_tests_user_fail = [
> ++ [ '-c1', '-i0.001' ], # -c1 required to quit ping when running as root
> ++]
> ++foreach dst : [ '127.0.0.1' ] + ipv6_dst
> ++ foreach args : ping_tests_user_fail
> ++ args += [ dst ]
> ++ name = 'ping ' + ' '.join(args)
> ++ test(name, ping, args : args, should_fail : not run_as_root)
> ++ endforeach
> ++endforeach
> diff --git a/meta/recipes-extended/iputils/iputils_20210722.bb b/meta/recipes-extended/iputils/iputils_20210722.bb
> index c2a5bf44ea..2e4ff2e826 100644
> --- a/meta/recipes-extended/iputils/iputils_20210722.bb
> +++ b/meta/recipes-extended/iputils/iputils_20210722.bb
> @@ -11,8 +11,9 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=55aa8c9fcad0691cef0ecd420361e390"
> DEPENDS = "gnutls"
>
> SRC_URI = "git://github.com/iputils/iputils \
> - file://0001-rarpd-rdisc-Drop-PrivateUsers.patch \
> - "
> + file://0001-rarpd-rdisc-Drop-PrivateUsers.patch \
> + file://0001-meson-Make-tests-optional.patch \
> +"
> SRCREV = "71bb2a6c72e9f658e90ac618c73d873a76bbaa81"
>
> S = "${WORKDIR}/git"
> @@ -38,7 +39,8 @@ PACKAGECONFIG[docs] = "-DBUILD_HTML_MANS=true -DBUILD_MANS=true,-DBUILD_HTML_MAN
>
> inherit meson systemd update-alternatives
>
> -EXTRA_OEMESON += "--prefix=${root_prefix}/"
> +# skip tests as they require ip to be installed on host
> +EXTRA_OEMESON += "--prefix=${root_prefix}/ -DSKIP_TESTS=true"
>
> ALTERNATIVE_PRIORITY = "100"
>
>
>
>
>
>
>
>
>
[-- Attachment #2: Type: text/html, Size: 11787 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-08-04 9:15 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <1697EB16E97488E4.1963@lists.openembedded.org>
2021-08-04 8:06 ` [PATCH] iputils: backport a fix for building on hosts without ip installed Martin Jansa
2021-08-04 8:36 ` [OE-core] " Chen Qi
2021-08-04 9:15 ` Martin Jansa
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.