[libvirt PATCH 021/351] meson: add compiler warnings
Daniel P. Berrangé
berrange at redhat.com
Wed Jul 22 16:10:33 UTC 2020
On Wed, Jul 22, 2020 at 05:49:59PM +0200, Pavel Hrdina wrote:
> > > + # -Wformat=2 implies -Wformat-nonliteral so we need to manually exclude it
> > > + '-Wno-format-nonliteral',
> > > +
> > > + # -Wformat enables this by default, and we should keep it,
> > > + # but need to rewrite various areas of code first
> > > + '-Wno-format-truncation',
> > > +
> > > + # This should be < 256 really. Currently we're down to 4096,
> > > + # but using 1024 bytes sized buffers (mostly for virStrerror)
> > > + # stops us from going down further
> > > + '-Wframe-larger-than=4096',
> > > +
> > > + # extra special flags
> > > + '-fexceptions',
> > > + '-fasynchronous-unwind-tables',
> > > +
> > > + # Need -fipa-pure-const in order to make -Wsuggest-attribute=pure
> > > + # fire even without -O.
> > > + '-fipa-pure-const',
> > > +
> > > + # We should eventually enable this, but right now there are at
> > > + # least 75 functions triggering warnings.
> > > + '-Wno-suggest-attribute=pure',
> > > + '-Wno-suggest-attribute=const',
> > > +]
> > > +
> > > +if git
> > > + cc_flags += [ '-Werror' ]
> > > +endif
> >
> > This doesn't seem right. We definitely don't want this to be based
> > solely on whether we're building from git.
>
> So the thing with Meson is that it has build-in option --werror with
> default value 'false'. It is possible to change the default value
> in the project() function. Unfortunately it is not possible to call
> anything else before project() function so we cannot detect if building
> from GIT before we can change the default value.
>
> There are three solutions:
>
> 1) Keep it as it is, it would not be possible to disable -Werror if
> building from GIT.
That mostly shouldn't be a problem for upstream GIT since we expect to
be -Werror clean, but new GCCs break us sometimes. Today in fact with
GCC 10 :-). Could also be a problem for downstreams, eg we use git to
maintain patches in RPMs.
So I think this is not viable.
> 2) Drop the GIT detection and require developers to use --werror to
> have this functionality.
The main goal of defaulting to Werror was to make sure developers
didn't accidentally introduce build warnings. As long as we don't
have gating pre-merge CI, I think need to try really hard to keep
it.
>
> 3) Introduce our own -Dgit_werror which would allow us to change the
> default behavior and disable -Werror for build from GIT.
This duplicates --werror behaviour, but I think it is the least
worst option right now.
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
More information about the libvir-list
mailing list