<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/3.32.2">
</HEAD>
<BODY>
On Mon, 2011-12-19 at 10:31 -0800, Jeremy Huddleston wrote:
<BLOCKQUOTE TYPE=CITE>
<PRE>
The problem is that --enable-strict-compilation adds -Werror to $CFLAGS which is a bit too strict to be used by default.

The problem is that without these -Werror=... flags, real bugs slip through the cracks and we ship broken code or don't fix drivers when API changes.&nbsp; -Werror=implicit would've caught broken drivers years ago rather than when I added it in my tinderbox at the beginning of the year to find drivers broken by my API changes.
</PRE>
</BLOCKQUOTE>
Only a dozen of drivers have CWARNFLAGS.
<BLOCKQUOTE TYPE=CITE>
<PRE>

The util-macro changes added just a handful of select errors (like implicit) to catch these types of bad bugs.  I want them to be on for everyone because they will catch bugs.  I'm sorry that I hadn't tested kdrive on linux before shipping, but the tinderbox has been updated to build that case now, but I don't think that's a reason to disable them.

Would people prefer the --disable-selectve-werror option to turn them off if needed?  That's the other option that will allow users to easily get past it (and hopefully prompt a bug report if they run into issues).

</PRE>
</BLOCKQUOTE>
It looks you are getting close to finding the right balance. It usually takes a few iterations. Adding a new configure option could be justified for a few corner cases like older version of compiler or whatever else we cannot think of. Situations that are rare where there is no easy workaround. <BR>
<BR>
If too many people find they have to use it, then they will ask for the &quot;defaults&quot; to change anyway. Keep in mind this affects all 200+ modules.
<BLOCKQUOTE TYPE=CITE>
<PRE>
On Dec 19, 2011, at 7:13 AM, Gaetan Nadon wrote:

&gt; On Sun, 2011-12-18 at 16:19 -0800, Jeremy Huddleston wrote:
&gt; 
&gt;&gt; For the more dangerous compiler warnings that we made into errors,
&gt;&gt; use -Werror=... if .git exists and -W... if not.  This way we still
&gt;&gt; force developers to trip on them but end users will just see
&gt;&gt; warnings.
&gt;&gt; 
&gt;&gt; Signed-off-by: Jeremy Huddleston &lt;<A HREF="mailto:jeremyhu@apple.com">jeremyhu@apple.com</A>&gt;
&gt;&gt; ---
&gt;&gt; xorg-macros.m4.in |   17 +++++++++++++++++
&gt;&gt; 1 files changed, 17 insertions(+), 0 deletions(-)
&gt;&gt; 
&gt;&gt; 
&gt; 
&gt; I am concerned about creating a precedent here regarding the detection
&gt; of git and the assumption of a &quot;use model&quot;.
&gt; 
&gt; We have been confronted with this on numerous occasions where we wanted
&gt; to do something different depending if the build is from git or from a
&gt; tarball. I, for one, have been reminded many times by reviewers not to
&gt; make assumptions about the role of the person who is building and the
&gt; reason why the build is performed, let alone matching roles with &quot;git vs
&gt; tarball&quot; builds.
&gt; 
&gt; The proposed behavior will appear to be erratic and unpredictable when
&gt; alternating between git/tarball builds until one realizes what is going
&gt; on. Some may report bugs or post patches to fix warnings just to be told
&gt; by others that they cannot reproduce the warning. Invariably we will
&gt; begin to see questions like &quot;are you building from git or from tarball&quot;?
&gt; 
&gt; The concept of a &quot;development build&quot; vs a &quot;production build&quot; where
&gt; compiler options are different is very common. This should not occur
&gt; without the builder's knowledge or consent. We can provide some
&gt; mechanism to help builder select the type of build desired, but we
&gt; cannot enforce it. The most obvious autotools features are configure
&gt; options (we have --enable-strict-compilation) and environment variables
&gt; that would be picked up by makefiles. 
&gt; 
&gt; There are no centralized builds and therefore no way to enforce a more
&gt; stringent build. The tinderbox can play a role and the documented
&gt; development process too.
&gt; 
&gt; Some of the readers may recall this (git vs tarball) issue being
&gt; discussed at length in other areas:
&gt; 
&gt;        ChangeLog: git is required to generate it.
&gt;        Special tools: like lex and yacc which may not be available when
&gt;        building from tarball which contains the special tool generated
&gt;        code
&gt; 
&gt; I know these cases are not quite the same, but they always raised the
&gt; question &quot;if git do this, else do that&quot; but it never worked out and we
&gt; had to find a different way without explicitly testing for git.
&gt; 
&gt; Would it not be possible to modify the content and semantic of
&gt; --enable-strict-compilation to mean &quot;development build&quot;? Make this
&gt; option a requirement in the server build process and on tinderbox. It
&gt; will take time for working habits to adapt, as for any change.
&gt; 
&gt; 
&gt; 
&gt; 
&gt; 

</PRE>
</BLOCKQUOTE>
<BR>
</BODY>
</HTML>