diff mbox series

tests/migration: Restrict initrd-stress.img to Linux

Message ID 20230710175607.32818-1-philmd@linaro.org
State New
Headers show
Series tests/migration: Restrict initrd-stress.img to Linux | expand

Commit Message

Philippe Mathieu-Daudé July 10, 2023, 5:56 p.m. UTC
Trying to build initrd-stress.img on Darwin we get:

  $ ninja tests/migration/initrd-stress.img
  Compiling C object tests/migration/stress.p/stress.c.o
  FAILED: tests/migration/stress.p/stress.c.o
  ../tests/migration/stress.c:24:10: fatal error: 'linux/random.h' file not found
  #include <linux/random.h>
           ^~~~~~~~~~~~~~~~
  1 error generated.
  ninja: build stopped: subcommand failed.

Per the include path, this test is Linux specific.
Since this is the single binary built in this directory,
restrict the whole meson.build to Linux.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 tests/migration/meson.build | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Daniel P. Berrangé July 10, 2023, 6:11 p.m. UTC | #1
On Mon, Jul 10, 2023 at 07:56:07PM +0200, Philippe Mathieu-Daudé wrote:
> Trying to build initrd-stress.img on Darwin we get:
> 
>   $ ninja tests/migration/initrd-stress.img
>   Compiling C object tests/migration/stress.p/stress.c.o
>   FAILED: tests/migration/stress.p/stress.c.o
>   ../tests/migration/stress.c:24:10: fatal error: 'linux/random.h' file not found
>   #include <linux/random.h>
>            ^~~~~~~~~~~~~~~~

I think that's historical accident, as AFAICT, nothing in stress.c
needs that include to be present.

>   1 error generated.
>   ninja: build stopped: subcommand failed.
> 
> Per the include path, this test is Linux specific.
> Since this is the single binary built in this directory,
> restrict the whole meson.build to Linux.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
>  tests/migration/meson.build | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/tests/migration/meson.build b/tests/migration/meson.build
> index ac71f13290..56523e0785 100644
> --- a/tests/migration/meson.build
> +++ b/tests/migration/meson.build
> @@ -1,3 +1,7 @@
> +if targetos != 'linux'
> +   subdir_done()
> +endif
> +
>  sysprof = dependency('sysprof-capture-4', required: false)
>  glib_static = dependency('glib-2.0', version: glib_req_ver, required: false,
>                           method: 'pkg-config', static: true)
> -- 
> 2.38.1
> 
> 

With regards,
Daniel
Philippe Mathieu-Daudé July 10, 2023, 7:17 p.m. UTC | #2
On 10/7/23 20:11, Daniel P. Berrangé wrote:
> On Mon, Jul 10, 2023 at 07:56:07PM +0200, Philippe Mathieu-Daudé wrote:
>> Trying to build initrd-stress.img on Darwin we get:
>>
>>    $ ninja tests/migration/initrd-stress.img
>>    Compiling C object tests/migration/stress.p/stress.c.o
>>    FAILED: tests/migration/stress.p/stress.c.o
>>    ../tests/migration/stress.c:24:10: fatal error: 'linux/random.h' file not found
>>    #include <linux/random.h>
>>             ^~~~~~~~~~~~~~~~
> 
> I think that's historical accident, as AFAICT, nothing in stress.c
> needs that include to be present.

Removing I get:

../../tests/migration/stress.c:35:12: error: 'syscall' is deprecated: 
first deprecated in macOS 10.12 - syscall(2) is unsupported; please 
switch to a supported interface. For SYS_kdebug_trace use 
kdebug_signpost(). [-Werror,-Wdeprecated-declarations]
     return syscall(SYS_gettid);
            ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/unistd.h:746:6: 
note: 'syscall' has been explicitly marked deprecated here
int      syscall(int, ...);
          ^
../../tests/migration/stress.c:43:16: error: use of undeclared 
identifier 'RB_POWER_OFF'
         reboot(RB_POWER_OFF);
                ^
../../tests/migration/stress.c:241:39: error: too many arguments to 
function call, expected 4, have 5
     if (mount("none", dir, fstype, 0, NULL) < 0) {
         ~~~~~                         ^~~~
/Library/Developer/CommandLineTools/usr/lib/clang/14.0.3/include/stddef.h:89:16: 
note: expanded from macro 'NULL'
#  define NULL ((void*)0)
                ^~~~~~~~~~
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/mount.h:448:9: 
note: 'mount' declared here
int     mount(const char *, const char *, int, void *);
         ^
3 errors generated.
Daniel P. Berrangé July 11, 2023, 11:50 a.m. UTC | #3
On Mon, Jul 10, 2023 at 09:17:43PM +0200, Philippe Mathieu-Daudé wrote:
> On 10/7/23 20:11, Daniel P. Berrangé wrote:
> > On Mon, Jul 10, 2023 at 07:56:07PM +0200, Philippe Mathieu-Daudé wrote:
> > > Trying to build initrd-stress.img on Darwin we get:
> > > 
> > >    $ ninja tests/migration/initrd-stress.img
> > >    Compiling C object tests/migration/stress.p/stress.c.o
> > >    FAILED: tests/migration/stress.p/stress.c.o
> > >    ../tests/migration/stress.c:24:10: fatal error: 'linux/random.h' file not found
> > >    #include <linux/random.h>
> > >             ^~~~~~~~~~~~~~~~
> > 
> > I think that's historical accident, as AFAICT, nothing in stress.c
> > needs that include to be present.
> 
> Removing I get:

True, the resulting file is still written to assume Linux userspace.

We can remove the linux/random.h header as it is redundant. Your
patch is still needed, just with a more general commit message
saying that many requird features are Linux only.

> 
> ../../tests/migration/stress.c:35:12: error: 'syscall' is deprecated: first
> deprecated in macOS 10.12 - syscall(2) is unsupported; please switch to a
> supported interface. For SYS_kdebug_trace use kdebug_signpost().
> [-Werror,-Wdeprecated-declarations]
>     return syscall(SYS_gettid);
>            ^
> /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/unistd.h:746:6:
> note: 'syscall' has been explicitly marked deprecated here
> int      syscall(int, ...);
>          ^
> ../../tests/migration/stress.c:43:16: error: use of undeclared identifier
> 'RB_POWER_OFF'
>         reboot(RB_POWER_OFF);
>                ^
> ../../tests/migration/stress.c:241:39: error: too many arguments to function
> call, expected 4, have 5
>     if (mount("none", dir, fstype, 0, NULL) < 0) {
>         ~~~~~                         ^~~~
> /Library/Developer/CommandLineTools/usr/lib/clang/14.0.3/include/stddef.h:89:16:
> note: expanded from macro 'NULL'
> #  define NULL ((void*)0)
>                ^~~~~~~~~~
> /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/mount.h:448:9:
> note: 'mount' declared here
> int     mount(const char *, const char *, int, void *);
>         ^
> 3 errors generated.
> 

With regards,
Daniel
diff mbox series

Patch

diff --git a/tests/migration/meson.build b/tests/migration/meson.build
index ac71f13290..56523e0785 100644
--- a/tests/migration/meson.build
+++ b/tests/migration/meson.build
@@ -1,3 +1,7 @@ 
+if targetos != 'linux'
+   subdir_done()
+endif
+
 sysprof = dependency('sysprof-capture-4', required: false)
 glib_static = dependency('glib-2.0', version: glib_req_ver, required: false,
                          method: 'pkg-config', static: true)