[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