diff mbox series

libvirt: disable Werror for non-libvirt flights

Message ID 20220913100328.27771-1-roger.pau@citrix.com (mailing list archive)
State Superseded
Headers show
Series libvirt: disable Werror for non-libvirt flights | expand

Commit Message

Roger Pau Monné Sept. 13, 2022, 10:03 a.m. UTC
Current usage of Werror=switch-enum by default for libvirt builds out
of the git tree causes issues when new items are added to libxl public
API enums if those are used in a switch statement in libvirt code.
This leads to libvirt build failures for seemingly unrelated libxl
changes.

In order to prevent those errors from blocking the push gate, disable
Werror for libvirt builds when not in a libvirt specific flight.

The errors will be reported on the libvirt flight, and block the
pushes there.  So the author of the changes in libxl is still expected
to send a fix to libvirt code.  This is no ideal, but the other option
is to just disable Werror for all libvirt builds and let libvirt
developers fix the breakage when they notice it.

runvar differences for a xen-unstable flight are:

Comments

Ian Jackson Sept. 13, 2022, 12:54 p.m. UTC | #1
Roger Pau Monne writes ("[PATCH] libvirt: disable Werror for non-libvirt flights"):
> Current usage of Werror=switch-enum by default for libvirt builds out
> of the git tree causes issues when new items are added to libxl public
> API enums if those are used in a switch statement in libvirt code.
> This leads to libvirt build failures for seemingly unrelated libxl
> changes.
> 
> In order to prevent those errors from blocking the push gate, disable
> Werror for libvirt builds when not in a libvirt specific flight.
> 
> The errors will be reported on the libvirt flight, and block the
> pushes there.  So the author of the changes in libxl is still expected
> to send a fix to libvirt code.  This is no ideal, but the other option
> is to just disable Werror for all libvirt builds and let libvirt
> developers fix the breakage when they notice it.
..
> +build-i386-libvirt                                    autogen_options                 --disable-werror

We have no way to specify -Wno-error-switch-enum specifically ?
(I'm not sure if that would be desirable.)

> I'm unsure whether we want o disable Werror even for libvirt flights,
> but this seems more conservative.

Probably disabling it only for Xen is right.

Ian.
Roger Pau Monné Sept. 13, 2022, 1:15 p.m. UTC | #2
On Tue, Sep 13, 2022 at 01:54:12PM +0100, Ian Jackson wrote:
> Roger Pau Monne writes ("[PATCH] libvirt: disable Werror for non-libvirt flights"):
> > Current usage of Werror=switch-enum by default for libvirt builds out
> > of the git tree causes issues when new items are added to libxl public
> > API enums if those are used in a switch statement in libvirt code.
> > This leads to libvirt build failures for seemingly unrelated libxl
> > changes.
> > 
> > In order to prevent those errors from blocking the push gate, disable
> > Werror for libvirt builds when not in a libvirt specific flight.
> > 
> > The errors will be reported on the libvirt flight, and block the
> > pushes there.  So the author of the changes in libxl is still expected
> > to send a fix to libvirt code.  This is no ideal, but the other option
> > is to just disable Werror for all libvirt builds and let libvirt
> > developers fix the breakage when they notice it.
> ..
> > +build-i386-libvirt                                    autogen_options                 --disable-werror
> 
> We have no way to specify -Wno-error-switch-enum specifically ?
> (I'm not sure if that would be desirable.)

Hm, maybe playing with CFLAGS, but not from the autogen/meson options
AFAIK.  Using the autogen/meson flags seems cleaner and less error
prone (albeit the disabling of Werror is more wide than what we
strictly require).

> > I'm unsure whether we want o disable Werror even for libvirt flights,
> > but this seems more conservative.
> 
> Probably disabling it only for Xen is right.

Thanks, let's try this first then.

Roger.
Anthony PERARD Sept. 15, 2022, 2:10 p.m. UTC | #3
On Tue, Sep 13, 2022 at 12:03:28PM +0200, Roger Pau Monne wrote:
> Current usage of Werror=switch-enum by default for libvirt builds out
> of the git tree causes issues when new items are added to libxl public
> API enums if those are used in a switch statement in libvirt code.
> This leads to libvirt build failures for seemingly unrelated libxl
> changes.
> 
> In order to prevent those errors from blocking the push gate, disable
> Werror for libvirt builds when not in a libvirt specific flight.
> 
> The errors will be reported on the libvirt flight, and block the
> pushes there.  So the author of the changes in libxl is still expected
> to send a fix to libvirt code.  This is no ideal, but the other option
> is to just disable Werror for all libvirt builds and let libvirt
> developers fix the breakage when they notice it.
> 
> runvar differences for a xen-unstable flight are:
> 
> --- /dev/fd/63  2022-09-13 09:53:58.044441678 +0000
> +++ /dev/fd/62  2022-09-13 09:53:58.044441678 +0000
> @@ -574,6 +574,10 @@
>  test-xtf-amd64-amd64-3                                arch                            amd64
>  test-xtf-amd64-amd64-4                                arch                            amd64
>  test-xtf-amd64-amd64-5                                arch                            amd64
> +build-amd64-libvirt                                   autogen_options                 --disable-werror
> +build-arm64-libvirt                                   autogen_options                 --disable-werror
> +build-armhf-libvirt                                   autogen_options                 --disable-werror
> +build-i386-libvirt                                    autogen_options                 --disable-werror
>  test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm    bios                            seabios
>  test-amd64-amd64-qemuu-nested-amd                     bios                            seabios
>  test-amd64-amd64-qemuu-nested-intel                   bios                            seabios
> @@ -1217,6 +1221,10 @@
>  build-arm64-libvirt                                   make_njobs                      1
>  build-armhf-libvirt                                   make_njobs                      1
>  build-i386-libvirt                                    make_njobs                      1
> +build-amd64-libvirt                                   meson_options                   -Dgit_werror=disabled
> +build-arm64-libvirt                                   meson_options                   -Dgit_werror=disabled
> +build-armhf-libvirt                                   meson_options                   -Dgit_werror=disabled
> +build-i386-libvirt                                    meson_options                   -Dgit_werror=disabled
>  test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict recipe_dmrestrict               true
>  test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict  recipe_dmrestrict               true
>  test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict recipe_nomigrate                true

For "osstest" flight or "xen-unstable-smoke" flight, we would have the
same difference, right?

The only branch with no change would be libvirt, right?

> 
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> ---
> I'm unsure whether we want o disable Werror even for libvirt flights,
> but this seems more conservative.
> 
> This does at least unblock the libvirt builds for both the
> xen-unstable and the libvirt flights.
> ---
> Cc: Ian Jackson <iwj@xenproject.org>
> Cc: Anthony PERARD <anthony.perard@citrix.com>
> Cc: Julien Grall <julien@xen.org>
> ---
>  mfi-common       | 2 +-
>  ts-libvirt-build | 3 ++-
>  2 files changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/mfi-common b/mfi-common
> index 59e712f4..450229e9 100644
> --- a/mfi-common
> +++ b/mfi-common
> @@ -459,7 +459,7 @@ create_build_jobs () {
>      libvirt_build_runvars=''
>      case "$branch" in
>      libvirt*) ;;
> -    *)        libvirt_build_runvars+=" make_njobs=1";;
> +    *)        libvirt_build_runvars+=" make_njobs=1 meson_options=-Dgit_werror=disabled autogen_options=--disable-werror";;

For meson, I think '-Dwerror=false' would be enough, instead of the
unusual 'git_werror' configuration.

But, we might not need to disable all errors, for meson we can have:
    -Dc_args='-Wno-error=switch -Wno-error=switch-enum'

But disabling werror is fine too, as less likely to be an issue later.

Both 'werror' and 'c_args' seems to be meson built-in options rather
than options implemented for only libvirt.
    https://mesonbuild.com/Builtin-options.html
While 'git_werror' is libvirt only.


Thanks,
Roger Pau Monné Sept. 15, 2022, 3:47 p.m. UTC | #4
On Thu, Sep 15, 2022 at 03:10:59PM +0100, Anthony PERARD wrote:
> On Tue, Sep 13, 2022 at 12:03:28PM +0200, Roger Pau Monne wrote:
> > Current usage of Werror=switch-enum by default for libvirt builds out
> > of the git tree causes issues when new items are added to libxl public
> > API enums if those are used in a switch statement in libvirt code.
> > This leads to libvirt build failures for seemingly unrelated libxl
> > changes.
> > 
> > In order to prevent those errors from blocking the push gate, disable
> > Werror for libvirt builds when not in a libvirt specific flight.
> > 
> > The errors will be reported on the libvirt flight, and block the
> > pushes there.  So the author of the changes in libxl is still expected
> > to send a fix to libvirt code.  This is no ideal, but the other option
> > is to just disable Werror for all libvirt builds and let libvirt
> > developers fix the breakage when they notice it.
> > 
> > runvar differences for a xen-unstable flight are:
> > 
> > --- /dev/fd/63  2022-09-13 09:53:58.044441678 +0000
> > +++ /dev/fd/62  2022-09-13 09:53:58.044441678 +0000
> > @@ -574,6 +574,10 @@
> >  test-xtf-amd64-amd64-3                                arch                            amd64
> >  test-xtf-amd64-amd64-4                                arch                            amd64
> >  test-xtf-amd64-amd64-5                                arch                            amd64
> > +build-amd64-libvirt                                   autogen_options                 --disable-werror
> > +build-arm64-libvirt                                   autogen_options                 --disable-werror
> > +build-armhf-libvirt                                   autogen_options                 --disable-werror
> > +build-i386-libvirt                                    autogen_options                 --disable-werror
> >  test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm    bios                            seabios
> >  test-amd64-amd64-qemuu-nested-amd                     bios                            seabios
> >  test-amd64-amd64-qemuu-nested-intel                   bios                            seabios
> > @@ -1217,6 +1221,10 @@
> >  build-arm64-libvirt                                   make_njobs                      1
> >  build-armhf-libvirt                                   make_njobs                      1
> >  build-i386-libvirt                                    make_njobs                      1
> > +build-amd64-libvirt                                   meson_options                   -Dgit_werror=disabled
> > +build-arm64-libvirt                                   meson_options                   -Dgit_werror=disabled
> > +build-armhf-libvirt                                   meson_options                   -Dgit_werror=disabled
> > +build-i386-libvirt                                    meson_options                   -Dgit_werror=disabled
> >  test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict recipe_dmrestrict               true
> >  test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict  recipe_dmrestrict               true
> >  test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict recipe_nomigrate                true
> 
> For "osstest" flight or "xen-unstable-smoke" flight, we would have the
> same difference, right?
> 
> The only branch with no change would be libvirt, right?

Indeed, that's the intention.

> > 
> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> > ---
> > I'm unsure whether we want o disable Werror even for libvirt flights,
> > but this seems more conservative.
> > 
> > This does at least unblock the libvirt builds for both the
> > xen-unstable and the libvirt flights.
> > ---
> > Cc: Ian Jackson <iwj@xenproject.org>
> > Cc: Anthony PERARD <anthony.perard@citrix.com>
> > Cc: Julien Grall <julien@xen.org>
> > ---
> >  mfi-common       | 2 +-
> >  ts-libvirt-build | 3 ++-
> >  2 files changed, 3 insertions(+), 2 deletions(-)
> > 
> > diff --git a/mfi-common b/mfi-common
> > index 59e712f4..450229e9 100644
> > --- a/mfi-common
> > +++ b/mfi-common
> > @@ -459,7 +459,7 @@ create_build_jobs () {
> >      libvirt_build_runvars=''
> >      case "$branch" in
> >      libvirt*) ;;
> > -    *)        libvirt_build_runvars+=" make_njobs=1";;
> > +    *)        libvirt_build_runvars+=" make_njobs=1 meson_options=-Dgit_werror=disabled autogen_options=--disable-werror";;
> 
> For meson, I think '-Dwerror=false' would be enough, instead of the
> unusual 'git_werror' configuration.
> 
> But, we might not need to disable all errors, for meson we can have:
>     -Dc_args='-Wno-error=switch -Wno-error=switch-enum'
> 
> But disabling werror is fine too, as less likely to be an issue later.
> 
> Both 'werror' and 'c_args' seems to be meson built-in options rather
> than options implemented for only libvirt.
>     https://mesonbuild.com/Builtin-options.html
> While 'git_werror' is libvirt only.

I don't have a strong opinion really, I've used git_werror because
that's the first thing that I found in:

https://libvirt.org/git/?p=libvirt.git;a=blob;f=meson_options.txt

I don't mind using -Dwerror=false if that's considered better. Ian, do
you have an opinion?

Thanks, Roger.
Ian Jackson Sept. 16, 2022, 12:20 a.m. UTC | #5
Roger Pau Monné writes ("Re: [PATCH] libvirt: disable Werror for non-libvirt flights"):
> I don't mind using -Dwerror=false if that's considered better. Ian, do
> you have an opinion?

No, I don't think I do.  I think it depends on what kinds of things
are likely to change, or go wrong, in libvirt.

-    *)        libvirt_build_runvars+=" make_njobs=1";;
+    *)        libvirt_build_runvars+=" make_njobs=1 meson_options=-Dwerror=false autogen_options=--disable-werror";;

I wonder if it would be better to abstract this away and instead have
a runvar like "libvrit_build_werror=false".  But maybe that is
gold-plating it.

If you choose to keep that the way it is, then for either version of
this patch:

Acked-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Roger Pau Monné Sept. 16, 2022, 8:19 a.m. UTC | #6
On Fri, Sep 16, 2022 at 01:20:11AM +0100, Ian Jackson wrote:
> Roger Pau Monné writes ("Re: [PATCH] libvirt: disable Werror for non-libvirt flights"):
> > I don't mind using -Dwerror=false if that's considered better. Ian, do
> > you have an opinion?
> 
> No, I don't think I do.  I think it depends on what kinds of things
> are likely to change, or go wrong, in libvirt.
> 
> -    *)        libvirt_build_runvars+=" make_njobs=1";;
> +    *)        libvirt_build_runvars+=" make_njobs=1 meson_options=-Dwerror=false autogen_options=--disable-werror";;
> 
> I wonder if it would be better to abstract this away and instead have
> a runvar like "libvrit_build_werror=false".  But maybe that is
> gold-plating it.

Did consider this initially, but decided to use specific options for
mesa/autogen in case we need to add further switches to specific
configuration systems (unlikely I guess, because autogen won't be used
anymore).

> If you choose to keep that the way it is, then for either version of
> this patch:
> 
> Acked-by: Ian Jackson <ijackson@chiark.greenend.org.uk>

Thanks, Roger.
diff mbox series

Patch

--- /dev/fd/63  2022-09-13 09:53:58.044441678 +0000
+++ /dev/fd/62  2022-09-13 09:53:58.044441678 +0000
@@ -574,6 +574,10 @@ 
 test-xtf-amd64-amd64-3                                arch                            amd64
 test-xtf-amd64-amd64-4                                arch                            amd64
 test-xtf-amd64-amd64-5                                arch                            amd64
+build-amd64-libvirt                                   autogen_options                 --disable-werror
+build-arm64-libvirt                                   autogen_options                 --disable-werror
+build-armhf-libvirt                                   autogen_options                 --disable-werror
+build-i386-libvirt                                    autogen_options                 --disable-werror
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm    bios                            seabios
 test-amd64-amd64-qemuu-nested-amd                     bios                            seabios
 test-amd64-amd64-qemuu-nested-intel                   bios                            seabios
@@ -1217,6 +1221,10 @@ 
 build-arm64-libvirt                                   make_njobs                      1
 build-armhf-libvirt                                   make_njobs                      1
 build-i386-libvirt                                    make_njobs                      1
+build-amd64-libvirt                                   meson_options                   -Dgit_werror=disabled
+build-arm64-libvirt                                   meson_options                   -Dgit_werror=disabled
+build-armhf-libvirt                                   meson_options                   -Dgit_werror=disabled
+build-i386-libvirt                                    meson_options                   -Dgit_werror=disabled
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict recipe_dmrestrict               true
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict  recipe_dmrestrict               true
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict recipe_nomigrate                true

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
I'm unsure whether we want o disable Werror even for libvirt flights,
but this seems more conservative.

This does at least unblock the libvirt builds for both the
xen-unstable and the libvirt flights.
---
Cc: Ian Jackson <iwj@xenproject.org>
Cc: Anthony PERARD <anthony.perard@citrix.com>
Cc: Julien Grall <julien@xen.org>
---
 mfi-common       | 2 +-
 ts-libvirt-build | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/mfi-common b/mfi-common
index 59e712f4..450229e9 100644
--- a/mfi-common
+++ b/mfi-common
@@ -459,7 +459,7 @@  create_build_jobs () {
     libvirt_build_runvars=''
     case "$branch" in
     libvirt*) ;;
-    *)        libvirt_build_runvars+=" make_njobs=1";;
+    *)        libvirt_build_runvars+=" make_njobs=1 meson_options=-Dgit_werror=disabled autogen_options=--disable-werror";;
     esac
 
     job_create_build build-$arch-libvirt build-libvirt                       \
diff --git a/ts-libvirt-build b/ts-libvirt-build
index 16b45cfd..e4faa1d7 100755
--- a/ts-libvirt-build
+++ b/ts-libvirt-build
@@ -73,7 +73,7 @@  sub config() {
                              --with-libxl --without-xen --without-xenapi --without-selinux \\
                              --without-lxc --without-vbox --without-uml \\
                              --without-qemu --without-openvz --without-vmware \\
-                             --sysconfdir=/etc --localstatedir=/var #/
+                             --sysconfdir=/etc --localstatedir=/var $r{autogen_options} #/
 END
     } else {
         target_cmd_build($ho, 3600, $builddir, <<END);
@@ -87,6 +87,7 @@  END
                 -Ddriver_libvirtd=enabled \\
                 -Ddriver_remote=enabled \\
                 --sysconfdir=/etc --localstatedir=/var \\
+                $r{meson_options} \\
                 build
 END
     }