Hi Jürgen,

Being the author of a portable, C-based Object-Oriented Extension to the C
language (https://github.com/blakemcbride/Dynace) and the Kiss Web
Development Framework (https://kissweb.org/), I sympathize with you.  In
fact, I would guess that I've spent nearly as much time with build systems
and portability issues as I have on the systems themselves.  With respect
to Dynace, I had the same goals - build with no warnings.  In the end,
however, I found it impossible.  I gave up, did what I could but ignored
the ones that were BS.

I think it is very important that GNU APL build without investigation
(looking at README-11-bogus-compiler-warnings).  If GNU APL doesn't build
out-of-the-box, most first-time users will give up and remove it.  For this
reason, I think allowing the build to proceed is very important.
README-11-bogus-compiler-warnings can be used to explain the warnings and
ways of eliminating them by lowering the warning level of the compiler.
Meanwhile, when *you* build, you can pay close attention to the warnings to
be sure you're not doing anything wrong.  Having the build fail and forcing
a new user to investigate the issue is a sure way to lose new users.

Just some opinions.

Thanks!

Blake


On Fri, May 1, 2020 at 10:52 AM Dr. Jürgen Sauermann <
mail@jürgen-sauermann.de> wrote:

> Hi Blake,
>
> this is kind of a dilemma. On the one hand I have the ambition that the
> build should be as clean as
> possible. In the majority of cases the warnings point at something that
> needs to be improved. Many
> reports come from platforms that I do not posses, or from a compiler
> version that I do not use (like in
> the example below). On the other hand the number of bogus compiler
> warnings has increased
> significantly in the last few years and the warnings get increasingly
> stupid (e.g. -Wmisleading-indentation)
>
> The idea of *README-11-bogus-compiler-warnings* was to give the user an
> idea of how to fix
> a build that is broken by a new bogus compiler warning so that I can
> prioritize the fix of the warning
> a little down without loosing the reports about the warnings.
>
> Best Regards,
> Jürgen
>
>
> On 5/1/20 4:59 PM, Blake McBride wrote:
> > Or, as a solution I've used in the past, don't kill the build on a
> > warning.  Just issue the warning and keep going.  This is the default
> > behavior of make.  Errors are errors that should be fixed.  Warnings
> > are things the compiler points out that you may want to look into.  It
> > isn't saying they're wrong.
> >
> > I think it is often the case that making a few tweaks to minimize
> > warnings is good.  However, as you've noted, trying to eliminate every
> > warning is more than a fulltime job.
> >
> > Thanks!
> >
> > Blake
> >
> >
> > On Fri, May 1, 2020 at 9:43 AM Dr. Jürgen Sauermann
> > <mail@jürgen-sauermann.de <mailto:mail@j%C3%BCrgen-sauermann.de>> wrote:
> >
> >     Hi everybody,
> >
> >     it seems like gcc/g++ continues to generate bogus warnings at a
> >     rate that makes it difficult to
> >     keep up with. For that reason I have written a
> >     *README-11-bogus-compiler-warnings* which
> >     explains how to deal with this. *SVN 1276*.
> >
> >     Maybe somebody would like to report this as a compiler error.
> >     Strictly speaking it is not
> >     because the warning itself says "maybe", but IMHO it should not
> >     occur under *-Wall*
> >     but only under *-Wextra*.
> >
> >     Best Regards,
> >     Jürgen
> >
> >
> >     On 5/1/20 4:06 PM, Blake McBride wrote:
> >>     Greetings,
> >>
> >>     Trying to build GNU APL rev 1275 on my 64-bit Linux box I get:
> >>
> >>     [...]
> >>     mv -f .deps/apl-Bif_OPER2_RANK.Tpo .deps/apl-Bif_OPER2_RANK.Po
> >>     g++ -DHAVE_CONFIG_H -I. -I..    -Wall -I sql -Werror
> >>     -I/usr/include -I/usr/include/postgresql   -rdynamic -g -O2 -MT
> >>     apl-Bif_OPER1_REDUCE.o -MD -MP -MF .deps/apl-Bif_OPER1_REDUCE.Tpo
> >>     -c -o apl-Bif_OPER1_REDUCE.o `test -f 'Bif_OPER1_REDUCE.cc' ||
> >>     echo './'`Bif_OPER1_REDUCE.cc
> >>     In file included from PrintBuffer.hh:30:0,
> >>                      from Cell.hh:30,
> >>                      from CharCell.hh:24,
> >>                      from Value.hh:24,
> >>                      from NamedObject.hh:25,
> >>                      from Function.hh:27,
> >>                      from PrimitiveFunction.hh:27,
> >>                      from PrimitiveOperator.hh:24,
> >>                      from Bif_OPER1_REDUCE.hh:24,
> >>                      from Bif_OPER1_REDUCE.cc:23:
> >>     Shape.hh: In member function ‘Token
> >>     Bif_REDUCE::reduce_n_wise(Value_P, Token&, Value_P, uAxis)’:
> >>     Shape.hh:133:18: error: ‘shape_Z.Shape::rho[axis]’ may be used
> >>     uninitialized in this function [-Werror=maybe-uninitialized]
> >>              if (rho[r])   { volume /= rho[r];  rho[r] = sh;  volume
> >>     *= rho[r]; }
> >>                  ~~~~~^
> >>     Shape.hh:109:41: error: ‘shape_Z.Shape::rho[axis]’ may be used
> >>     uninitialized in this function [-Werror=maybe-uninitialized]
> >>         { Assert(r < rho_rho);   return rho[r]; }
> >>                                              ^
> >>     Shape.hh: In member function ‘Token
> >>     Bif_REDUCE::replicate(Value_P, Value_P, uAxis)’:
> >>     Shape.hh:133:18: error: ‘shape_Z.Shape::rho[axis]’ may be used
> >>     uninitialized in this function [-Werror=maybe-uninitialized]
> >>              if (rho[r])   { volume /= rho[r];  rho[r] = sh;  volume
> >>     *= rho[r]; }
> >>                  ~~~~~^
> >>     cc1plus: all warnings being treated as errors
> >>     Makefile:3234: recipe for target 'apl-Bif_OPER1_REDUCE.o' failed
> >>     make[3]: *** [apl-Bif_OPER1_REDUCE.o] Error 1
> >>     make[3]: Leaving directory '/home/blake/Backup/apl/src'
> >>     Makefile:4584: recipe for target 'all-recursive' failed
> >>     make[2]: *** [all-recursive] Error 1
> >>     make[2]: Leaving directory '/home/blake/Backup/apl/src'
> >>     Makefile:522: recipe for target 'all-recursive' failed
> >>     make[1]: *** [all-recursive] Error 1
> >>     make[1]: Leaving directory '/home/blake/Backup/apl'
> >>     Makefile:409: recipe for target 'all' failed
> >>     make: *** [all] Error 2
> >>
> >
>
>

Reply via email to