maintainer-feedback requested: [Bug 260484] x11/xorg-cf-files: Stop using 'l' option with 'ar'

From: <bugzilla-noreply_at_freebsd.org>
Date: Fri, 17 Dec 2021 02:50:40 UTC
Bugzilla Automation <bugzilla@FreeBSD.org> has asked freebsd-x11 (Nobody)
<x11@FreeBSD.org> for maintainer-feedback:
Bug 260484: x11/xorg-cf-files: Stop using 'l' option with 'ar'
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=260484



--- Description ---
In the ar(1) man page of base system 'l' option is explained as following.

     -l      This option is accepted for compatibility with GNU ar(1), but is
	     ignored.

However, since binutils 2.36 GNU ar changed the meaning of 'l' option.
According to the ar(1) man page of binutils 2.37 it is explained as following.

       l   Specify dependencies of this library.  The dependencies must
	   immediately follow this option character, must use the same syntax
	   as the linker command line, and must be specified within a single
	   argument.  I.e., if multiple items are needed, they must be quoted
	   to form a single command line argument.  For example L
	   "-L/usr/local/lib -lmydep1 -lmydep2"

And this incompatible change affects to the build of ports that uses
'USES=imake' if devel/binutils is installed and /usr/local/bin is before
/usr/bin in the value of PATH environment variable. For example build of
textproc/docbook-to-man fails as following.

rm -f libtptregexp.a
ar clq libtptregexp.a regexp.o regsub.o regerror.o
ar: libdeps specified more than once
*** Error code 1

Stop.
make[3]: stopped in
/usr0/freebsd/ports/work/usr/ports/textproc/docbook-to-man/work/docbook-to-man/
Instant/tptregexp
*** Error code 1

Stop.
make[2]: stopped in
/usr0/freebsd/ports/work/usr/ports/textproc/docbook-to-man/work/docbook-to-man/
Instant
*** Error code 1

Stop.
make[1]: stopped in
/usr0/freebsd/ports/work/usr/ports/textproc/docbook-to-man/work/docbook-to-man
*** Error code 1

Stop.
make: stopped in /usr/ports/textproc/docbook-to-man

Therefore change Imake.tmpl so 'l' options isn't used with 'ar'. As is
explained above 'ar' of base system ignores 'l' option. So it should work fine
even if devel/binutils isn't installed and 'ar' of base system is used.