Hi Paul,

> I have a bug report for a compiler error in GNU Make, using
> intprops-internal.h, on Debian 10 with GCC 8.3:
> 
> https://savannah.gnu.org/bugs/?65537
> 
> This is with gnulib stable-202401 current Git HEAD.
> 
> Thoughts?  Maybe I just have to disable this warning?
> 
> 
> Note, I already do not enable -Werror etc. by default in source
> distributions so this wouldn't be seen by a user of an official
> release, but this user is building straight from the Git repository and
> I usually enable all warnings + -Werror for these builds.

Regarding warnings and -Werror, there is some text in the Gnulib
documentation:

  * The last paragraph of
    https://www.gnu.org/software/gnulib/manual/html_node/warnings.html
    says:
    "‘gl_WARN_ADD([-Werror])’ is intended for developers, and should
     be avoided in contexts where it would affect ordinary installation
     builds. The warnings emitted by GCC depend, to some extent, on the
     contents of the system header files, on the size and signedness of
     built-in types, etc. Use of ‘-Werror’ would cause frustration to
     all users on platforms that the maintainer has not tested before
     the release. It is better if ‘-Werror’ is off by default, and is
     enabled only by developers."

    The problem with your git repository setup (maintMakefile line 32,
    that enables -Werror by default) is that in practice, it's not
    only developers who build from git repositories. Namely, many people
    whose habits have been shaped by GitHub will look for the git
    repository before looking for a release tarball. And these people
    use other platforms (this user was on a 4-years old Debian,
    other users may be on OpenBSD or whatever) with other compilers
    than you use (not GCC 13, but GCC 8 or clang). *Even* if you have
    eliminated all warnings with GCC 13, these other compilers often
    spew more warnings, and -Werror magnifies them into errors.

  * The last paragraph of
    https://www.gnu.org/software/gnulib/manual/html_node/manywarnings.html
    explains why -Wsign-compare, in particular, is a waste of time.
    However, you have (in maintMakefile line 32) enabled -Wextra, which
    implies -Wsign-compare [1].

So, while Paul Eggert has been able to come up with a patch for one of the
warnings, the general cause of this bug report is in the build system of the
GNU Make project.

I would invite you to fix both problems:
  - Add -Wno-sign-compare to the warning options.
  - Do *not* enable -Werror for all users who build from the git repository.

Further reading:
  - The 'manywarnings' documentation
    https://www.gnu.org/software/gnulib/manual/html_node/manywarnings.html
  - The coreutils warnings configuration.
  - The gettext warnings configuration
    
https://git.savannah.gnu.org/gitweb/?p=gettext.git;a=blob;f=m4/more-warnings.m4

Bruno

[1] https://gcc.gnu.org/onlinedocs/gcc-13.2.0/gcc/Warning-Options.html




Reply via email to