[squid-dev] Automake bug workaround

Garri Djavadyan garryd at comnet.uz
Sat Dec 10 21:01:14 UTC 2016


On 2016-12-10 15:41, Amos Jeffries wrote:
> On 9/12/2016 12:18 p.m., Eliezer Croitoru wrote:
>> What happen with this?
>> 
> 
> Nothing so far. It is not going to be as simple as adding those lines 
> to
> the configure.ac script unfortunately.
> 
> There is already a hack in configure.ac to work around some
> system-specific issues with the AR tool. We need somebody familiar with
> (or able to spend lot of time learning) the build chain tools to
> investigate what the original details of that were** and figure out how
> to make this addition integrate cleanly.
> 
> ** sorry I've forgotten specifics.
> 
> Amos
> 
> 
>> -----Original Message-----
>> From: Alex Rousskov
>> 
>> Hello,
>> 
>>     Squid build produces lots of warnings in modern build environments 
>> such as Ubuntu 16.04:
>> 
>>> make > /dev/null
>>> /usr/bin/ar: `u' modifier ignored since `D' is the default (see `U')
>>> /usr/bin/ar: `u' modifier ignored since `D' is the default (see `U')
>> ...
>>> /usr/bin/ar: `u' modifier ignored since `D' is the default (see `U')
>>> ar: `u' modifier ignored since `D' is the default (see `U')
>>> ar: `u' modifier ignored since `D' is the default (see `U')
>>> /usr/bin/ar: `u' modifier ignored since `D' is the default (see `U')
>>> /usr/bin/ar: `u' modifier ignored since `D' is the default (see `U')
>> ...
>> 
>> These benign warnings is most likely an ancient Automake bug awaken by 
>> recent environmental changes. It is becoming a well-known issue among 
>> many projects AFAICT. The attached Web Polygraph patch works around 
>> this problem. The patch preamble has more technical references.
>> 
>> If you think Squid should do something like this, please consider 
>> adopting and adjusting this patch as needed for Squid.
>> 
>> 
>> Thank you,
>> 
>> Alex.


I believe, the GNU bug tracker [1] is more complete information source 
regarding the issue. Libtool already switched to 'cr' flags by default. 
Patch for automake is awaiting review. Following are technical details 
from the patches:

---
In some GNU/Linux distributions people started to compile 'ar'
binary with --enable-deterministic-archives (binutils project).
That, however, in combination with previous autotools long time
working default AR{_,}FLAGS=cru causes warnings on such
installations:
ar: `u' modifier ignored since `D' is the default (see `U')

The 'u' option (at least with GNU binutils) did small optimization
during repeated builds because it instructed 'ar' to not
open/close unchanged *.o files and to rather read their contents
from old archive file.  However, its removal should not cause a
big performance hit for usual workflows.

Distributions started using --enable-deterministic-archives
knowing that it will disable the 'u', with the benefit of having
rather a bit more deterministic builds.

Also, to justify this change a bit more, keeping 'u' in ARFLAGS
could only result in many per-project changes to override
Automake's ARFLAGS default, just to silent such warnings.
---

The proposal by Alex to substitute ARFLAGS and AR_FLAGS with 'cr' seems 
safe enough with some performance degradation in certain cases. The more 
advanced approach is to add a configure check for default compile 
options of 'ar' and set 'cr' flags only if 'ar' compiled with 
--enable-deterministic-archives.

[1] https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20082


Garri


More information about the squid-dev mailing list