[quagga-dev 12161] Re: [GIT RFC] "final" warning cleanup

David Lamparter equinox at opensourcerouting.org
Sun Apr 19 20:01:27 BST 2015


On Thu, Mar 05, 2015 at 01:22:31PM -0500, Greg Troxel wrote:
> David Lamparter <equinox at opensourcerouting.org> writes:
> 
> > Everything else *should* be trivial.  Note the last 2 patches in the
> > branch change CFLAGS behavior and add "--enable-werror".  I intend to
> > start using the latter and insta-refuse any patches that introduce
> > warnings.
> 
> Thanks for doing this  - it helps a lot to get to a 'no warnings
> allowed' state.
> 
> 
> I am a little uncomfortable with the notion of trying a random list of
> cflags and accepting those that don't error.  But I can't think of
> trouble from this.

I've done the very same thing in 2006 on another software package
without any ill effects.  In fact, I stole my own autoconf macro
(AC_C_FLAG) from there ;D

> Diffing builds from release and this branch turned up different flags,
> but it's hard to figure out from reorderingl

I did indeed change some bits there; -Wcast-qual got bumped down to
"--enable-gcc-ultra-verbose" (it was way too noisy) and -Wextra replaced
some individual flags.  -Wno-unused-parameter and
-Wno-missing-field-initializers are new to silence false warnings from
-Wextra.

> There's a note in the configure output about make not being GNU make.
> Our docs say that it's a bug if quagga doesn't build with the system
> make on recent *BSD (meaning that we may not use gnu make extensions).
> As far as I know (I build that way) this is actually true.  So any
> 'require gnu make' in the configure.ac is off.  This might not be a new
> issue.

Indeed it works at least on FreeBSD with the system's make.  Only the
solaris/ directory's Makefile seems to use GNUisms (oh the irony...),
but I'd say this is a change for another day.  (Patches welcome!)

[...]

> From "./README.NetBSD build" on NetBSD 6 i386 with system gcc:
>   gcc version 4.5.3 (NetBSD nb2 20110806) 
> 
> Diffing from a build on master, many warnings remain and many have been
> fixed.  Broad themes of what's left (plus a few less-common ones):
> 
>   time_t printed as "long int"
> 
>   signed/unsigned
> 
>   size_t printed as "long int" (instead of %z)
> 
>   array subscript has type 'char' (due to isalpha or similar on char,
>   when it's documented to take an int; the spec says:
>     The argument to isalpha() must be EOF or representable as an unsigned
>     char; otherwise, the behavior is undefined.  See the CAVEATS section of
>     ctype(3) for more details.

These should all be fixed - I think - can you retest?

Thanks,


-David




More information about the Quagga-dev mailing list