* [PATCH for-5.2? 0/4] Fix build failures on Haiku @ 2020-11-14 16:51 Thomas Huth 2020-11-14 16:51 ` [PATCH 1/4] configure: Fix the _BSD_SOURCE define for the Haiku build Thomas Huth ` (3 more replies) 0 siblings, 4 replies; 15+ messages in thread From: Thomas Huth @ 2020-11-14 16:51 UTC (permalink / raw) To: qemu-devel Cc: Peter Maydell, Alexander von Gluck IV, Stefan Berger, Philippe Mathieu-Daudé, David CARLIER, kraxel, Alex Bennée Some patches to fix build failures on Haiku, and the final patch adds a VM for testing compilation there. "make check" is still failing, but at least compiling of the sources can now be tested. Alexander von Gluck IV (1): tests/vm: Add Haiku test based on their vagrant images Thomas Huth (3): configure: Fix the _BSD_SOURCE define for the Haiku build configure: Do not build pc-bios/optionrom on Haiku configure: Add a proper check for sys/ioccom.h and use it in tpm_ioctl.h backends/tpm/tpm_ioctl.h | 4 ++ configure | 15 ++++- nbd/nbd-internal.h | 2 +- tests/keys/vagrant | 27 +++++++++ tests/keys/vagrant.pub | 1 + tests/vm/Makefile.include | 3 +- tests/vm/basevm.py | 5 +- tests/vm/haiku.x86_64 | 119 ++++++++++++++++++++++++++++++++++++++ 8 files changed, 169 insertions(+), 7 deletions(-) create mode 100644 tests/keys/vagrant create mode 100644 tests/keys/vagrant.pub create mode 100755 tests/vm/haiku.x86_64 -- 2.18.4 ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 1/4] configure: Fix the _BSD_SOURCE define for the Haiku build 2020-11-14 16:51 [PATCH for-5.2? 0/4] Fix build failures on Haiku Thomas Huth @ 2020-11-14 16:51 ` Thomas Huth 2020-11-14 23:44 ` Stefan Berger 2020-11-14 16:51 ` [PATCH 2/4] configure: Do not build pc-bios/optionrom on Haiku Thomas Huth ` (2 subsequent siblings) 3 siblings, 1 reply; 15+ messages in thread From: Thomas Huth @ 2020-11-14 16:51 UTC (permalink / raw) To: qemu-devel Cc: Peter Maydell, Alexander von Gluck IV, Stefan Berger, Philippe Mathieu-Daudé, David CARLIER, kraxel, Alex Bennée The Haiku VM that we are going to add is using _BSD_SOURCE instead of BSD_SOURCE (without initial underscore)... according to David Carlier, the BSD_SOURCE without underscore was likely a typo, so let's simply add the underscore there now. This fixes the build failure with the bswapXX() macros not being defined after including <endian.h>. Signed-off-by: Thomas Huth <thuth@redhat.com> --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index 4cef321d9d..a273a93377 100755 --- a/configure +++ b/configure @@ -790,7 +790,7 @@ SunOS) ;; Haiku) haiku="yes" - QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS -DBSD_SOURCE $QEMU_CFLAGS" + QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS -D_BSD_SOURCE $QEMU_CFLAGS" ;; Linux) audio_drv_list="try-pa oss" -- 2.18.4 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH 1/4] configure: Fix the _BSD_SOURCE define for the Haiku build 2020-11-14 16:51 ` [PATCH 1/4] configure: Fix the _BSD_SOURCE define for the Haiku build Thomas Huth @ 2020-11-14 23:44 ` Stefan Berger 0 siblings, 0 replies; 15+ messages in thread From: Stefan Berger @ 2020-11-14 23:44 UTC (permalink / raw) To: Thomas Huth, qemu-devel Cc: Peter Maydell, Alexander von Gluck IV, Stefan Berger, Philippe Mathieu-Daudé, David CARLIER, kraxel, Alex Bennée On 11/14/20 11:51 AM, Thomas Huth wrote: > The Haiku VM that we are going to add is using _BSD_SOURCE instead > of BSD_SOURCE (without initial underscore)... according to David > Carlier, the BSD_SOURCE without underscore was likely a typo, so > let's simply add the underscore there now. > This fixes the build failure with the bswapXX() macros not being > defined after including <endian.h>. > > Signed-off-by: Thomas Huth <thuth@redhat.com> > --- > configure | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/configure b/configure > index 4cef321d9d..a273a93377 100755 > --- a/configure > +++ b/configure > @@ -790,7 +790,7 @@ SunOS) > ;; > Haiku) > haiku="yes" > - QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS -DBSD_SOURCE $QEMU_CFLAGS" > + QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS -D_BSD_SOURCE $QEMU_CFLAGS" > ;; > Linux) > audio_drv_list="try-pa oss" Reviewed-by: Stefan Berger <stefanb@linux.ibm.com ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 2/4] configure: Do not build pc-bios/optionrom on Haiku 2020-11-14 16:51 [PATCH for-5.2? 0/4] Fix build failures on Haiku Thomas Huth 2020-11-14 16:51 ` [PATCH 1/4] configure: Fix the _BSD_SOURCE define for the Haiku build Thomas Huth @ 2020-11-14 16:51 ` Thomas Huth 2020-11-14 23:44 ` Stefan Berger 2020-11-16 11:51 ` Philippe Mathieu-Daudé 2020-11-14 16:51 ` [PATCH 3/4] configure: Add a proper check for sys/ioccom.h and use it in tpm_ioctl.h Thomas Huth 2020-11-14 16:51 ` [PATCH 4/4] tests/vm: Add Haiku test based on their vagrant images Thomas Huth 3 siblings, 2 replies; 15+ messages in thread From: Thomas Huth @ 2020-11-14 16:51 UTC (permalink / raw) To: qemu-devel Cc: Peter Maydell, Alexander von Gluck IV, Stefan Berger, Philippe Mathieu-Daudé, David CARLIER, kraxel, Alex Bennée Compilation of pc-bios/optionrom fails on Haiku with: BUILD pvh.img ld: pvh_main.o: in function `pvh_load_kernel': pc-bios/optionrom/pvh_main.c:73: undefined reference to `GLOBAL_OFFSET_TABLE_' Makefile:57: recipe for target 'pvh.img' failed make[1]: *** [pvh.img] Error 1 Let's simply disable it, like it is already done on macOS and Solaris. Signed-off-by: Thomas Huth <thuth@redhat.com> --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index a273a93377..c0acda164d 100755 --- a/configure +++ b/configure @@ -5842,7 +5842,7 @@ fi roms= if { test "$cpu" = "i386" || test "$cpu" = "x86_64"; } && \ test "$targetos" != "Darwin" && test "$targetos" != "SunOS" && \ - test "$softmmu" = yes ; then + test "$targetos" != "Haiku" && test "$softmmu" = yes ; then # Different host OS linkers have different ideas about the name of the ELF # emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd # variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe. -- 2.18.4 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH 2/4] configure: Do not build pc-bios/optionrom on Haiku 2020-11-14 16:51 ` [PATCH 2/4] configure: Do not build pc-bios/optionrom on Haiku Thomas Huth @ 2020-11-14 23:44 ` Stefan Berger 2020-11-16 11:51 ` Philippe Mathieu-Daudé 1 sibling, 0 replies; 15+ messages in thread From: Stefan Berger @ 2020-11-14 23:44 UTC (permalink / raw) To: Thomas Huth, qemu-devel Cc: Peter Maydell, Alexander von Gluck IV, Stefan Berger, Philippe Mathieu-Daudé, David CARLIER, kraxel, Alex Bennée On 11/14/20 11:51 AM, Thomas Huth wrote: > Compilation of pc-bios/optionrom fails on Haiku with: > > BUILD pvh.img > ld: pvh_main.o: in function `pvh_load_kernel': > pc-bios/optionrom/pvh_main.c:73: undefined reference to `GLOBAL_OFFSET_TABLE_' > Makefile:57: recipe for target 'pvh.img' failed > make[1]: *** [pvh.img] Error 1 > > Let's simply disable it, like it is already done on macOS and Solaris. > > Signed-off-by: Thomas Huth <thuth@redhat.com> > --- > configure | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/configure b/configure > index a273a93377..c0acda164d 100755 > --- a/configure > +++ b/configure > @@ -5842,7 +5842,7 @@ fi > roms= > if { test "$cpu" = "i386" || test "$cpu" = "x86_64"; } && \ > test "$targetos" != "Darwin" && test "$targetos" != "SunOS" && \ > - test "$softmmu" = yes ; then > + test "$targetos" != "Haiku" && test "$softmmu" = yes ; then > # Different host OS linkers have different ideas about the name of the ELF > # emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd > # variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe. Reviewed-by: Stefan Berger <stefanb@linux.ibm.com> ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 2/4] configure: Do not build pc-bios/optionrom on Haiku 2020-11-14 16:51 ` [PATCH 2/4] configure: Do not build pc-bios/optionrom on Haiku Thomas Huth 2020-11-14 23:44 ` Stefan Berger @ 2020-11-16 11:51 ` Philippe Mathieu-Daudé 1 sibling, 0 replies; 15+ messages in thread From: Philippe Mathieu-Daudé @ 2020-11-16 11:51 UTC (permalink / raw) To: Thomas Huth, qemu-devel Cc: Peter Maydell, Alexander von Gluck IV, Stefan Berger, David CARLIER, kraxel, Alex Bennée On 11/14/20 5:51 PM, Thomas Huth wrote: > Compilation of pc-bios/optionrom fails on Haiku with: > > BUILD pvh.img > ld: pvh_main.o: in function `pvh_load_kernel': > pc-bios/optionrom/pvh_main.c:73: undefined reference to `GLOBAL_OFFSET_TABLE_' > Makefile:57: recipe for target 'pvh.img' failed > make[1]: *** [pvh.img] Error 1 > > Let's simply disable it, like it is already done on macOS and Solaris. > > Signed-off-by: Thomas Huth <thuth@redhat.com> > --- > configure | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 3/4] configure: Add a proper check for sys/ioccom.h and use it in tpm_ioctl.h 2020-11-14 16:51 [PATCH for-5.2? 0/4] Fix build failures on Haiku Thomas Huth 2020-11-14 16:51 ` [PATCH 1/4] configure: Fix the _BSD_SOURCE define for the Haiku build Thomas Huth 2020-11-14 16:51 ` [PATCH 2/4] configure: Do not build pc-bios/optionrom on Haiku Thomas Huth @ 2020-11-14 16:51 ` Thomas Huth 2020-11-14 16:56 ` 罗勇刚(Yonggang Luo) ` (2 more replies) 2020-11-14 16:51 ` [PATCH 4/4] tests/vm: Add Haiku test based on their vagrant images Thomas Huth 3 siblings, 3 replies; 15+ messages in thread From: Thomas Huth @ 2020-11-14 16:51 UTC (permalink / raw) To: qemu-devel Cc: Peter Maydell, Alexander von Gluck IV, Stefan Berger, Philippe Mathieu-Daudé, David CARLIER, kraxel, Alex Bennée On Solaris and Haiku, the _IO() macros are defined in <sys/ioccom.h>. Add a proper check for this header to our configure scripts, and make sure to include the header in tpm_ioctl.h to fix a build failure on Solaris and Haiku. Signed-off-by: Thomas Huth <thuth@redhat.com> --- backends/tpm/tpm_ioctl.h | 4 ++++ configure | 11 ++++++++++- nbd/nbd-internal.h | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/backends/tpm/tpm_ioctl.h b/backends/tpm/tpm_ioctl.h index f5f5c553a9..bd6c12cb86 100644 --- a/backends/tpm/tpm_ioctl.h +++ b/backends/tpm/tpm_ioctl.h @@ -12,6 +12,10 @@ #include <sys/uio.h> #include <sys/ioctl.h> +#ifdef HAVE_SYS_IOCCOM_H +#include <sys/ioccom.h> +#endif + /* * Every response from a command involving a TPM command execution must hold * the ptm_res as the first element. diff --git a/configure b/configure index c0acda164d..764e903748 100755 --- a/configure +++ b/configure @@ -3123,6 +3123,13 @@ if check_include "sys/signal.h" ; then have_sys_signal_h=yes fi +######################################### +# sys/ioccom.h check +have_sys_ioccom_h=no +if check_include "sys/ioccom.h" ; then + have_sys_ioccom_h=yes +fi + ########################################## # VTE probe @@ -6214,7 +6221,9 @@ fi if test "$have_sys_signal_h" = "yes" ; then echo "HAVE_SYS_SIGNAL_H=y" >> $config_host_mak fi - +if test "$have_sys_ioccom_h" = "yes" ; then + echo "HAVE_SYS_IOCCOM_H=y" >> $config_host_mak +fi # Work around a system header bug with some kernel/XFS header # versions where they both try to define 'struct fsxattr': # xfs headers will not try to redefine structs from linux headers diff --git a/nbd/nbd-internal.h b/nbd/nbd-internal.h index 60629ef160..1b2141ab4b 100644 --- a/nbd/nbd-internal.h +++ b/nbd/nbd-internal.h @@ -19,7 +19,7 @@ #ifndef _WIN32 #include <sys/ioctl.h> #endif -#if defined(__sun__) || defined(__HAIKU__) +#ifdef HAVE_SYS_IOCCOM_H #include <sys/ioccom.h> #endif -- 2.18.4 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH 3/4] configure: Add a proper check for sys/ioccom.h and use it in tpm_ioctl.h 2020-11-14 16:51 ` [PATCH 3/4] configure: Add a proper check for sys/ioccom.h and use it in tpm_ioctl.h Thomas Huth @ 2020-11-14 16:56 ` 罗勇刚(Yonggang Luo) 2020-11-15 14:00 ` Thomas Huth 2020-11-14 23:43 ` Stefan Berger 2020-11-15 15:23 ` [PATCH v2 " Thomas Huth 2 siblings, 1 reply; 15+ messages in thread From: 罗勇刚(Yonggang Luo) @ 2020-11-14 16:56 UTC (permalink / raw) To: Thomas Huth Cc: Peter Maydell, Alexander von Gluck IV, Stefan Berger, Philippe Mathieu-Daudé, qemu-level, David CARLIER, Gerd Hoffmann, Alex Bennée [-- Attachment #1: Type: text/plain, Size: 2406 bytes --] Can we check this in meson.build? On Sun, Nov 15, 2020 at 12:53 AM Thomas Huth <thuth@redhat.com> wrote: > > On Solaris and Haiku, the _IO() macros are defined in <sys/ioccom.h>. > Add a proper check for this header to our configure scripts, and > make sure to include the header in tpm_ioctl.h to fix a build failure > on Solaris and Haiku. > > Signed-off-by: Thomas Huth <thuth@redhat.com> > --- > backends/tpm/tpm_ioctl.h | 4 ++++ > configure | 11 ++++++++++- > nbd/nbd-internal.h | 2 +- > 3 files changed, 15 insertions(+), 2 deletions(-) > > diff --git a/backends/tpm/tpm_ioctl.h b/backends/tpm/tpm_ioctl.h > index f5f5c553a9..bd6c12cb86 100644 > --- a/backends/tpm/tpm_ioctl.h > +++ b/backends/tpm/tpm_ioctl.h > @@ -12,6 +12,10 @@ > #include <sys/uio.h> > #include <sys/ioctl.h> > > +#ifdef HAVE_SYS_IOCCOM_H > +#include <sys/ioccom.h> > +#endif > + > /* > * Every response from a command involving a TPM command execution must hold > * the ptm_res as the first element. > diff --git a/configure b/configure > index c0acda164d..764e903748 100755 > --- a/configure > +++ b/configure > @@ -3123,6 +3123,13 @@ if check_include "sys/signal.h" ; then > have_sys_signal_h=yes > fi > > +######################################### > +# sys/ioccom.h check > +have_sys_ioccom_h=no > +if check_include "sys/ioccom.h" ; then > + have_sys_ioccom_h=yes > +fi > + > ########################################## > # VTE probe > > @@ -6214,7 +6221,9 @@ fi > if test "$have_sys_signal_h" = "yes" ; then > echo "HAVE_SYS_SIGNAL_H=y" >> $config_host_mak > fi > - > +if test "$have_sys_ioccom_h" = "yes" ; then > + echo "HAVE_SYS_IOCCOM_H=y" >> $config_host_mak > +fi > # Work around a system header bug with some kernel/XFS header > # versions where they both try to define 'struct fsxattr': > # xfs headers will not try to redefine structs from linux headers > diff --git a/nbd/nbd-internal.h b/nbd/nbd-internal.h > index 60629ef160..1b2141ab4b 100644 > --- a/nbd/nbd-internal.h > +++ b/nbd/nbd-internal.h > @@ -19,7 +19,7 @@ > #ifndef _WIN32 > #include <sys/ioctl.h> > #endif > -#if defined(__sun__) || defined(__HAIKU__) > +#ifdef HAVE_SYS_IOCCOM_H > #include <sys/ioccom.h> > #endif > > -- > 2.18.4 > > -- 此致 礼 罗勇刚 Yours sincerely, Yonggang Luo [-- Attachment #2: Type: text/html, Size: 3092 bytes --] ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 3/4] configure: Add a proper check for sys/ioccom.h and use it in tpm_ioctl.h 2020-11-14 16:56 ` 罗勇刚(Yonggang Luo) @ 2020-11-15 14:00 ` Thomas Huth 2020-11-15 14:34 ` Paolo Bonzini 0 siblings, 1 reply; 15+ messages in thread From: Thomas Huth @ 2020-11-15 14:00 UTC (permalink / raw) To: luoyonggang, Paolo Bonzini, Marc-André Lureau Cc: Peter Maydell, Alexander von Gluck IV, Stefan Berger, Philippe Mathieu-Daudé, qemu-level, David CARLIER, Gerd Hoffmann, Alex Bennée On 14/11/2020 17.56, 罗勇刚(Yonggang Luo) wrote: > Can we check this in meson.build? That would be nicer, indeed, but I did not spot a place where I could add my code there ... all the other HAVE_xxx_H symbols are added in the configure script. Maybe Paolo or Marc-André (now on CC:) have an idea whether it could be done easily in meson.build?, too? Thomas > On Sun, Nov 15, 2020 at 12:53 AM Thomas Huth <thuth@redhat.com > <mailto:thuth@redhat.com>> wrote: >> >> On Solaris and Haiku, the _IO() macros are defined in <sys/ioccom.h>. >> Add a proper check for this header to our configure scripts, and >> make sure to include the header in tpm_ioctl.h to fix a build failure >> on Solaris and Haiku. >> >> Signed-off-by: Thomas Huth <thuth@redhat.com <mailto:thuth@redhat.com>> >> --- >> backends/tpm/tpm_ioctl.h | 4 ++++ >> configure | 11 ++++++++++- >> nbd/nbd-internal.h | 2 +- >> 3 files changed, 15 insertions(+), 2 deletions(-) >> >> diff --git a/backends/tpm/tpm_ioctl.h b/backends/tpm/tpm_ioctl.h >> index f5f5c553a9..bd6c12cb86 100644 >> --- a/backends/tpm/tpm_ioctl.h >> +++ b/backends/tpm/tpm_ioctl.h >> @@ -12,6 +12,10 @@ >> #include <sys/uio.h> >> #include <sys/ioctl.h> >> >> +#ifdef HAVE_SYS_IOCCOM_H >> +#include <sys/ioccom.h> >> +#endif >> + >> /* >> * Every response from a command involving a TPM command execution must hold >> * the ptm_res as the first element. >> diff --git a/configure b/configure >> index c0acda164d..764e903748 100755 >> --- a/configure >> +++ b/configure >> @@ -3123,6 +3123,13 @@ if check_include "sys/signal.h" ; then >> have_sys_signal_h=yes >> fi >> >> +######################################### >> +# sys/ioccom.h check >> +have_sys_ioccom_h=no >> +if check_include "sys/ioccom.h" ; then >> + have_sys_ioccom_h=yes >> +fi >> + >> ########################################## >> # VTE probe >> >> @@ -6214,7 +6221,9 @@ fi >> if test "$have_sys_signal_h" = "yes" ; then >> echo "HAVE_SYS_SIGNAL_H=y" >> $config_host_mak >> fi >> - >> +if test "$have_sys_ioccom_h" = "yes" ; then >> + echo "HAVE_SYS_IOCCOM_H=y" >> $config_host_mak >> +fi >> # Work around a system header bug with some kernel/XFS header >> # versions where they both try to define 'struct fsxattr': >> # xfs headers will not try to redefine structs from linux headers >> diff --git a/nbd/nbd-internal.h b/nbd/nbd-internal.h >> index 60629ef160..1b2141ab4b 100644 >> --- a/nbd/nbd-internal.h >> +++ b/nbd/nbd-internal.h >> @@ -19,7 +19,7 @@ >> #ifndef _WIN32 >> #include <sys/ioctl.h> >> #endif >> -#if defined(__sun__) || defined(__HAIKU__) >> +#ifdef HAVE_SYS_IOCCOM_H >> #include <sys/ioccom.h> >> #endif >> >> -- >> 2.18.4 >> >> > > > -- > 此致 > 礼 > 罗勇刚 > Yours > sincerely, > Yonggang Luo ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 3/4] configure: Add a proper check for sys/ioccom.h and use it in tpm_ioctl.h 2020-11-15 14:00 ` Thomas Huth @ 2020-11-15 14:34 ` Paolo Bonzini 2020-11-15 15:18 ` Thomas Huth 0 siblings, 1 reply; 15+ messages in thread From: Paolo Bonzini @ 2020-11-15 14:34 UTC (permalink / raw) To: Thomas Huth, luoyonggang, Marc-André Lureau Cc: Peter Maydell, Alexander von Gluck IV, Stefan Berger, Philippe Mathieu-Daudé, qemu-level, David CARLIER, Gerd Hoffmann, Alex Bennée On 15/11/20 15:00, Thomas Huth wrote: > On 14/11/2020 17.56, 罗勇刚(Yonggang Luo) wrote: >> Can we check this in meson.build? > > That would be nicer, indeed, but I did not spot a place where I could add my > code there ... all the other HAVE_xxx_H symbols are added in the configure > script. There is one similar test, it was split in two: has_gettid = cc.has_function('gettid') ... config_host_data.set('CONFIG_GETTID', has_gettid) but there's no particular reason for that. You can just add config_host_data.set('HAVE_SYS_IOCCOM_H', cc.has_headers('sys/ioccom.h')) in the config-host.h section of meson.build?. Paolo >> On Sun, Nov 15, 2020 at 12:53 AM Thomas Huth <thuth@redhat.com >> <mailto:thuth@redhat.com>> wrote: >>> >>> On Solaris and Haiku, the _IO() macros are defined in <sys/ioccom.h>. >>> Add a proper check for this header to our configure scripts, and >>> make sure to include the header in tpm_ioctl.h to fix a build failure >>> on Solaris and Haiku. >>> >>> Signed-off-by: Thomas Huth <thuth@redhat.com <mailto:thuth@redhat.com>> >>> +######################################### >>> +# sys/ioccom.h check >>> +have_sys_ioccom_h=no >>> +if check_include "sys/ioccom.h" ; then >>> + have_sys_ioccom_h=yes >>> +fi Paolo ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 3/4] configure: Add a proper check for sys/ioccom.h and use it in tpm_ioctl.h 2020-11-15 14:34 ` Paolo Bonzini @ 2020-11-15 15:18 ` Thomas Huth 0 siblings, 0 replies; 15+ messages in thread From: Thomas Huth @ 2020-11-15 15:18 UTC (permalink / raw) To: Paolo Bonzini, luoyonggang, Marc-André Lureau Cc: Peter Maydell, Alexander von Gluck IV, Stefan Berger, Philippe Mathieu-Daudé, qemu-level, David CARLIER, Gerd Hoffmann, Alex Bennée On 15/11/2020 15.34, Paolo Bonzini wrote: > On 15/11/20 15:00, Thomas Huth wrote: >> On 14/11/2020 17.56, 罗勇刚(Yonggang Luo) wrote: >>> Can we check this in meson.build? >> >> That would be nicer, indeed, but I did not spot a place where I could add my >> code there ... all the other HAVE_xxx_H symbols are added in the configure >> script. > > There is one similar test, it was split in two: > > has_gettid = cc.has_function('gettid') > ... > config_host_data.set('CONFIG_GETTID', has_gettid) > > but there's no particular reason for that. You can just add > > config_host_data.set('HAVE_SYS_IOCCOM_H', cc.has_headers('sys/ioccom.h')) > > in the config-host.h section of meson.build?. Thanks, that seems to do the job! I'll send a v2 with that change (and try to come up with another patch that converts the other header checks from the configure script to meson). Thomas ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH 3/4] configure: Add a proper check for sys/ioccom.h and use it in tpm_ioctl.h 2020-11-14 16:51 ` [PATCH 3/4] configure: Add a proper check for sys/ioccom.h and use it in tpm_ioctl.h Thomas Huth 2020-11-14 16:56 ` 罗勇刚(Yonggang Luo) @ 2020-11-14 23:43 ` Stefan Berger 2020-11-15 15:23 ` [PATCH v2 " Thomas Huth 2 siblings, 0 replies; 15+ messages in thread From: Stefan Berger @ 2020-11-14 23:43 UTC (permalink / raw) To: Thomas Huth, qemu-devel Cc: Peter Maydell, Alexander von Gluck IV, Stefan Berger, Philippe Mathieu-Daudé, David CARLIER, kraxel, Alex Bennée On 11/14/20 11:51 AM, Thomas Huth wrote: > On Solaris and Haiku, the _IO() macros are defined in <sys/ioccom.h>. > Add a proper check for this header to our configure scripts, and > make sure to include the header in tpm_ioctl.h to fix a build failure > on Solaris and Haiku. > > Signed-off-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Stefan Berger <stefanb@linux.ibm.com> > --- > backends/tpm/tpm_ioctl.h | 4 ++++ > configure | 11 ++++++++++- > nbd/nbd-internal.h | 2 +- > 3 files changed, 15 insertions(+), 2 deletions(-) > > diff --git a/backends/tpm/tpm_ioctl.h b/backends/tpm/tpm_ioctl.h > index f5f5c553a9..bd6c12cb86 100644 > --- a/backends/tpm/tpm_ioctl.h > +++ b/backends/tpm/tpm_ioctl.h > @@ -12,6 +12,10 @@ > #include <sys/uio.h> > #include <sys/ioctl.h> > > +#ifdef HAVE_SYS_IOCCOM_H > +#include <sys/ioccom.h> > +#endif > + > /* > * Every response from a command involving a TPM command execution must hold > * the ptm_res as the first element. > diff --git a/configure b/configure > index c0acda164d..764e903748 100755 > --- a/configure > +++ b/configure > @@ -3123,6 +3123,13 @@ if check_include "sys/signal.h" ; then > have_sys_signal_h=yes > fi > > +######################################### > +# sys/ioccom.h check > +have_sys_ioccom_h=no > +if check_include "sys/ioccom.h" ; then > + have_sys_ioccom_h=yes > +fi > + > ########################################## > # VTE probe > > @@ -6214,7 +6221,9 @@ fi > if test "$have_sys_signal_h" = "yes" ; then > echo "HAVE_SYS_SIGNAL_H=y" >> $config_host_mak > fi > - > +if test "$have_sys_ioccom_h" = "yes" ; then > + echo "HAVE_SYS_IOCCOM_H=y" >> $config_host_mak > +fi > # Work around a system header bug with some kernel/XFS header > # versions where they both try to define 'struct fsxattr': > # xfs headers will not try to redefine structs from linux headers > diff --git a/nbd/nbd-internal.h b/nbd/nbd-internal.h > index 60629ef160..1b2141ab4b 100644 > --- a/nbd/nbd-internal.h > +++ b/nbd/nbd-internal.h > @@ -19,7 +19,7 @@ > #ifndef _WIN32 > #include <sys/ioctl.h> > #endif > -#if defined(__sun__) || defined(__HAIKU__) > +#ifdef HAVE_SYS_IOCCOM_H > #include <sys/ioccom.h> > #endif > ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v2 3/4] configure: Add a proper check for sys/ioccom.h and use it in tpm_ioctl.h 2020-11-14 16:51 ` [PATCH 3/4] configure: Add a proper check for sys/ioccom.h and use it in tpm_ioctl.h Thomas Huth 2020-11-14 16:56 ` 罗勇刚(Yonggang Luo) 2020-11-14 23:43 ` Stefan Berger @ 2020-11-15 15:23 ` Thomas Huth 2020-11-16 11:51 ` Philippe Mathieu-Daudé 2 siblings, 1 reply; 15+ messages in thread From: Thomas Huth @ 2020-11-15 15:23 UTC (permalink / raw) To: qemu-devel Cc: Alexander von Gluck IV, Stefan Berger, Philippe Mathieu-Daudé, David CARLIER, 罗勇刚, Paolo Bonzini, Alex Bennée On Solaris and Haiku, the _IO() macros are defined in <sys/ioccom.h>. Add a proper check for this header to our build system, and make sure to include the header in tpm_ioctl.h to fix a build failure on Solaris and Haiku. Signed-off-by: Thomas Huth <thuth@redhat.com> --- v2: Check in meson.build instead of using the configure script backends/tpm/tpm_ioctl.h | 4 ++++ meson.build | 2 ++ nbd/nbd-internal.h | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/backends/tpm/tpm_ioctl.h b/backends/tpm/tpm_ioctl.h index f5f5c553a9..bd6c12cb86 100644 --- a/backends/tpm/tpm_ioctl.h +++ b/backends/tpm/tpm_ioctl.h @@ -12,6 +12,10 @@ #include <sys/uio.h> #include <sys/ioctl.h> +#ifdef HAVE_SYS_IOCCOM_H +#include <sys/ioccom.h> +#endif + /* * Every response from a command involving a TPM command execution must hold * the ptm_res as the first element. diff --git a/meson.build b/meson.build index 61d883bc07..be85f70e4c 100644 --- a/meson.build +++ b/meson.build @@ -789,6 +789,8 @@ config_host_data.set('QEMU_VERSION_MAJOR', meson.project_version().split('.')[0] config_host_data.set('QEMU_VERSION_MINOR', meson.project_version().split('.')[1]) config_host_data.set('QEMU_VERSION_MICRO', meson.project_version().split('.')[2]) +config_host_data.set('HAVE_SYS_IOCCOM_H', cc.has_header('sys/ioccom.h')) + ignored = ['CONFIG_QEMU_INTERP_PREFIX'] # actually per-target arrays = ['CONFIG_AUDIO_DRIVERS', 'CONFIG_BDRV_RW_WHITELIST', 'CONFIG_BDRV_RO_WHITELIST'] strings = ['HOST_DSOSUF', 'CONFIG_IASL'] diff --git a/nbd/nbd-internal.h b/nbd/nbd-internal.h index 60629ef160..1b2141ab4b 100644 --- a/nbd/nbd-internal.h +++ b/nbd/nbd-internal.h @@ -19,7 +19,7 @@ #ifndef _WIN32 #include <sys/ioctl.h> #endif -#if defined(__sun__) || defined(__HAIKU__) +#ifdef HAVE_SYS_IOCCOM_H #include <sys/ioccom.h> #endif -- 2.18.4 ^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH v2 3/4] configure: Add a proper check for sys/ioccom.h and use it in tpm_ioctl.h 2020-11-15 15:23 ` [PATCH v2 " Thomas Huth @ 2020-11-16 11:51 ` Philippe Mathieu-Daudé 0 siblings, 0 replies; 15+ messages in thread From: Philippe Mathieu-Daudé @ 2020-11-16 11:51 UTC (permalink / raw) To: Thomas Huth, qemu-devel Cc: Alexander von Gluck IV, Stefan Berger, 罗勇刚, David CARLIER, Paolo Bonzini, Alex Bennée On 11/15/20 4:23 PM, Thomas Huth wrote: > On Solaris and Haiku, the _IO() macros are defined in <sys/ioccom.h>. > Add a proper check for this header to our build system, and make sure > to include the header in tpm_ioctl.h to fix a build failure on Solaris > and Haiku. > > Signed-off-by: Thomas Huth <thuth@redhat.com> > --- > v2: Check in meson.build instead of using the configure script > > backends/tpm/tpm_ioctl.h | 4 ++++ > meson.build | 2 ++ > nbd/nbd-internal.h | 2 +- > 3 files changed, 7 insertions(+), 1 deletion(-) Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> ^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH 4/4] tests/vm: Add Haiku test based on their vagrant images 2020-11-14 16:51 [PATCH for-5.2? 0/4] Fix build failures on Haiku Thomas Huth ` (2 preceding siblings ...) 2020-11-14 16:51 ` [PATCH 3/4] configure: Add a proper check for sys/ioccom.h and use it in tpm_ioctl.h Thomas Huth @ 2020-11-14 16:51 ` Thomas Huth 3 siblings, 0 replies; 15+ messages in thread From: Thomas Huth @ 2020-11-14 16:51 UTC (permalink / raw) To: qemu-devel Cc: Peter Maydell, Alexander von Gluck IV, Stefan Berger, Philippe Mathieu-Daudé, David CARLIER, kraxel, Alex Bennée From: Alexander von Gluck IV <kallisti5@unixzen.com> Signed-off-by: Alexander von Gluck IV <kallisti5@unixzen.com> [PMD: Avoid recreating the image each time] Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> [thuth: Add ninja package, /usr/bin/env hack and --disable-slirp] Signed-off-by: Thomas Huth <thuth@redhat.com> --- tests/keys/vagrant | 27 +++++++++ tests/keys/vagrant.pub | 1 + tests/vm/Makefile.include | 3 +- tests/vm/basevm.py | 5 +- tests/vm/haiku.x86_64 | 119 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 152 insertions(+), 3 deletions(-) create mode 100644 tests/keys/vagrant create mode 100644 tests/keys/vagrant.pub create mode 100755 tests/vm/haiku.x86_64 diff --git a/tests/keys/vagrant b/tests/keys/vagrant new file mode 100644 index 0000000000..7d6a083909 --- /dev/null +++ b/tests/keys/vagrant @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEogIBAAKCAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzI +w+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoP +kcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2 +hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NO +Td0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcW +yLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQIBIwKCAQEA4iqWPJXtzZA68mKd +ELs4jJsdyky+ewdZeNds5tjcnHU5zUYE25K+ffJED9qUWICcLZDc81TGWjHyAqD1 +Bw7XpgUwFgeUJwUlzQurAv+/ySnxiwuaGJfhFM1CaQHzfXphgVml+fZUvnJUTvzf +TK2Lg6EdbUE9TarUlBf/xPfuEhMSlIE5keb/Zz3/LUlRg8yDqz5w+QWVJ4utnKnK +iqwZN0mwpwU7YSyJhlT4YV1F3n4YjLswM5wJs2oqm0jssQu/BT0tyEXNDYBLEF4A +sClaWuSJ2kjq7KhrrYXzagqhnSei9ODYFShJu8UWVec3Ihb5ZXlzO6vdNQ1J9Xsf +4m+2ywKBgQD6qFxx/Rv9CNN96l/4rb14HKirC2o/orApiHmHDsURs5rUKDx0f9iP +cXN7S1uePXuJRK/5hsubaOCx3Owd2u9gD6Oq0CsMkE4CUSiJcYrMANtx54cGH7Rk +EjFZxK8xAv1ldELEyxrFqkbE4BKd8QOt414qjvTGyAK+OLD3M2QdCQKBgQDtx8pN +CAxR7yhHbIWT1AH66+XWN8bXq7l3RO/ukeaci98JfkbkxURZhtxV/HHuvUhnPLdX +3TwygPBYZFNo4pzVEhzWoTtnEtrFueKxyc3+LjZpuo+mBlQ6ORtfgkr9gBVphXZG +YEzkCD3lVdl8L4cw9BVpKrJCs1c5taGjDgdInQKBgHm/fVvv96bJxc9x1tffXAcj +3OVdUN0UgXNCSaf/3A/phbeBQe9xS+3mpc4r6qvx+iy69mNBeNZ0xOitIjpjBo2+ +dBEjSBwLk5q5tJqHmy/jKMJL4n9ROlx93XS+njxgibTvU6Fp9w+NOFD/HvxB3Tcz +6+jJF85D5BNAG3DBMKBjAoGBAOAxZvgsKN+JuENXsST7F89Tck2iTcQIT8g5rwWC +P9Vt74yboe2kDT531w8+egz7nAmRBKNM751U/95P9t88EDacDI/Z2OwnuFQHCPDF +llYOUI+SpLJ6/vURRbHSnnn8a/XG+nzedGH5JGqEJNQsz+xT2axM0/W/CRknmGaJ +kda/AoGANWrLCz708y7VYgAtW2Uf1DPOIYMdvo6fxIB5i9ZfISgcJ/bbCUkFrhoH ++vq/5CIWxCPp0f85R4qxxQ5ihxJ0YDQT9Jpx4TMss4PSavPaBH3RXow5Ohe+bYoQ +NE5OgEXk2wVfZczCZpigBKbKZHNYcelXtTt/nP3rsCuGcM4h53s= +-----END RSA PRIVATE KEY----- diff --git a/tests/keys/vagrant.pub b/tests/keys/vagrant.pub new file mode 100644 index 0000000000..b8d012d787 --- /dev/null +++ b/tests/keys/vagrant.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== well-known vagrant key for qemu-test, do not use on any machine exposed to an external network diff --git a/tests/vm/Makefile.include b/tests/vm/Makefile.include index 61f893ffdc..e94d95ec54 100644 --- a/tests/vm/Makefile.include +++ b/tests/vm/Makefile.include @@ -4,7 +4,7 @@ EFI_AARCH64 = $(wildcard $(BUILD_DIR)/pc-bios/edk2-aarch64-code.fd) -IMAGES := freebsd netbsd openbsd centos fedora +IMAGES := freebsd netbsd openbsd centos fedora haiku.x86_64 ifneq ($(GENISOIMAGE),) IMAGES += ubuntu.i386 centos ifneq ($(EFI_AARCH64),) @@ -41,6 +41,7 @@ endif else @echo " (install genisoimage to build centos/ubuntu images)" endif + @echo " vm-build-haiku.x86_64 - Build QEMU in Haiku VM" @echo "" @echo " vm-build-all - Build QEMU in all VMs" @echo " vm-clean-all - Clean up VM images" diff --git a/tests/vm/basevm.py b/tests/vm/basevm.py index 3fac20e929..00f1d5ca8d 100644 --- a/tests/vm/basevm.py +++ b/tests/vm/basevm.py @@ -44,6 +44,7 @@ DEFAULT_CONFIG = { 'machine' : 'pc', 'guest_user' : "qemu", 'guest_pass' : "qemupass", + 'root_user' : "root", 'root_pass' : "qemupass", 'ssh_key_file' : SSH_KEY_FILE, 'ssh_pub_key_file': SSH_PUB_KEY_FILE, @@ -245,13 +246,13 @@ class BaseVM(object): return self._ssh_do(self._config["guest_user"], cmd, False) def ssh_root(self, *cmd): - return self._ssh_do("root", cmd, False) + return self._ssh_do(self._config["root_user"], cmd, False) def ssh_check(self, *cmd): self._ssh_do(self._config["guest_user"], cmd, True) def ssh_root_check(self, *cmd): - self._ssh_do("root", cmd, True) + self._ssh_do(self._config["root_user"], cmd, True) def build_image(self, img): raise NotImplementedError diff --git a/tests/vm/haiku.x86_64 b/tests/vm/haiku.x86_64 new file mode 100755 index 0000000000..37af48bf1b --- /dev/null +++ b/tests/vm/haiku.x86_64 @@ -0,0 +1,119 @@ +#!/usr/bin/env python3 +# +# Haiku VM image +# +# Copyright 2020 Haiku, Inc. +# +# Authors: +# Alexander von Gluck IV <kallisti5@unixzen.com> +# +# This code is licensed under the GPL version 2 or later. See +# the COPYING file in the top-level directory. +# + +import os +import re +import sys +import time +import socket +import subprocess +import basevm + +VAGRANT_KEY_FILE = os.path.join(os.path.dirname(__file__), + "..", "keys", "vagrant") + +VAGRANT_PUB_KEY_FILE = os.path.join(os.path.dirname(__file__), + "..", "keys", "vagrant.pub") + +HAIKU_CONFIG = { + 'cpu' : "max", + 'machine' : 'pc', + 'guest_user' : "vagrant", + 'guest_pass' : "", + 'root_user' : "vagrant", + 'root_pass' : "", + 'ssh_key_file' : VAGRANT_KEY_FILE, + 'ssh_pub_key_file': VAGRANT_PUB_KEY_FILE, + 'memory' : "4G", + 'extra_args' : [], + 'qemu_args' : "-device VGA", + 'dns' : "", + 'ssh_port' : 0, + 'install_cmds' : "", + 'boot_dev_type' : "block", + 'ssh_timeout' : 1, +} + +class HaikuVM(basevm.BaseVM): + name = "haiku" + arch = "x86_64" + + link = "https://app.vagrantup.com/haiku-os/boxes/r1beta2-x86_64/versions/20200702/providers/libvirt.box" + csum = "41c38b316e0cbdbc66b5dbaf3612b866700a4f35807cb1eb266a5bf83e9e68d5" + + poweroff = "shutdown" + + requirements = [ + "devel:libbz2", + "devel:libcapstone", + "devel:libcurl", + "devel:libfdt", + "devel:libgcrypt", + "devel:libgl", + "devel:libglib_2.0", + "devel:libgnutls", + "devel:libgpg_error", + "devel:libintl", + "devel:libjpeg", + "devel:liblzo2", + "devel:libncursesw", + "devel:libnettle", + "devel:libpixman_1", + "devel:libpng16", + "devel:libsdl2_2.0", + "devel:libsnappy", + "devel:libssh2", + "devel:libtasn1", + "devel:libusb_1.0", + "devel:libz", + "ninja", + "setuptools_python3" + ] + + # https://dev.haiku-os.org/ticket/16512 virtio disk1 shows up as 0 (reversed order) + BUILD_SCRIPT = """ + set -e; + rm -rf /tmp/qemu-test.* + cd $(mktemp -d /tmp/qemu-test.XXXXXX); + mkdir src build; cd src; + tar -xf /dev/disk/virtual/virtio_block/0/raw; + mkdir -p /usr/bin + ln -s /boot/system/bin/env /usr/bin/env + cd ../build + ../src/configure --disable-slirp {configure_opts}; + make --output-sync -j{jobs} {target} {verbose}; + """ + + def build_image(self, img): + self.print_step("Downloading disk image") + tarball = self._download_with_cache(self.link, sha256sum=self.csum) + + self.print_step("Extracting disk image") + + subprocess.check_call(["tar", "xzf", tarball, "./box.img", "-O"], + stdout=open(img, 'wb')) + + self.print_step("Preparing disk image") + self.boot(img) + + # Wait for ssh to be available. + self.wait_ssh(wait_root=True, cmd="exit 0") + + # Install packages + self.ssh_root("pkgman install -y %s" % " ".join(self.requirements)) + self.graceful_shutdown() + + self.print_step("All done") + +if __name__ == "__main__": + sys.exit(basevm.main(HaikuVM, config=HAIKU_CONFIG)) -- 2.18.4 ^ permalink raw reply related [flat|nested] 15+ messages in thread
end of thread, other threads:[~2020-11-16 11:54 UTC | newest] Thread overview: 15+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-11-14 16:51 [PATCH for-5.2? 0/4] Fix build failures on Haiku Thomas Huth 2020-11-14 16:51 ` [PATCH 1/4] configure: Fix the _BSD_SOURCE define for the Haiku build Thomas Huth 2020-11-14 23:44 ` Stefan Berger 2020-11-14 16:51 ` [PATCH 2/4] configure: Do not build pc-bios/optionrom on Haiku Thomas Huth 2020-11-14 23:44 ` Stefan Berger 2020-11-16 11:51 ` Philippe Mathieu-Daudé 2020-11-14 16:51 ` [PATCH 3/4] configure: Add a proper check for sys/ioccom.h and use it in tpm_ioctl.h Thomas Huth 2020-11-14 16:56 ` 罗勇刚(Yonggang Luo) 2020-11-15 14:00 ` Thomas Huth 2020-11-15 14:34 ` Paolo Bonzini 2020-11-15 15:18 ` Thomas Huth 2020-11-14 23:43 ` Stefan Berger 2020-11-15 15:23 ` [PATCH v2 " Thomas Huth 2020-11-16 11:51 ` Philippe Mathieu-Daudé 2020-11-14 16:51 ` [PATCH 4/4] tests/vm: Add Haiku test based on their vagrant images Thomas Huth
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).