[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
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=260484

            Bug ID: 260484
           Summary: x11/xorg-cf-files: Stop using 'l' option with 'ar'
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: Individual Port(s)
          Assignee: x11@FreeBSD.org
          Reporter: yasu@freebsd.org
          Assignee: x11@FreeBSD.org
             Flags: maintainer-feedback?(x11@FreeBSD.org)
             Flags: merge-quarterly?

Created attachment 230189
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=230189&action=edit
Patch file

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.

-- 
You are receiving this mail because:
You are the assignee for the bug.