Message ID | 20201114165137.15379-4-thuth@redhat.com |
---|---|
State | New |
Headers | show |
Series | Fix build failures on Haiku | expand |
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
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 >
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
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
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
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
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(-)