[aur-general] LDFLAGS question

Ranguvar ranguvar at archlinux.us
Wed Nov 25 19:17:16 EST 2009


On Wed, Nov 25, 2009 at 18:58, bardo <ilbardo at gmail.com> wrote:

> Hi all.
> Recently I've been having fun with the latest pulseaudio quirk: it
> doesn't build because of the --as-needed flag in linking. I don't
> understand linking in depth, but as I understood it there's some
> dependency cycle that gets triggered by the aforementioned ld flag.
> However this doesn't happen when building in a chroot, where the
> package builds fine.
>
> It isn't the only package where it happens, and I have a handful of
> questions about the correct way to handle this.
>
> 1. If something like this happens, is it an upstream bug?
> 2. If it builds fine in a chroot there's obviously a software that
> triggers the bug, does it mean I am missing a dependency?
> 3. If a package builds inside a chroot but not outside, should it be
> changed in such a way that it builds everywhere regardless of the
> changes that are to be made? Or should it be left as it is, and
> related bugs closed with "build it in a chroot"?
> 4. What does the absence of the ld flag imply in practical terms? Is
> it just a "nice to have" or has it some real implications?
>


Hello bardo,

1.) Depends on whether they see it as such :p  Some upstreams
get all annoyed and tag the bug as WONTFIX.  Others care about it
and take a look into it.  I would file it upstream though, just in case.
Also, check the Gentoo bug reports, both closed and open, for your
problem -- Gentoo has lately been trying to resolve all --as-needed
compile issues.

2.) Probably not missing a dependency so much as revealing a flaw in
how the software is built (or the linker itself).  --as-needed affects how
binaries link in other stuff, a certain package may trigger the problem.

3.) I would say, personally, make it build the same everywhere.  Do put
a comment in the PKGBUILD though, for future reference by others

4.) --as-needed reduces some of the library dependencies of binaries,
and also speeds up the dynamic linking step -- applications start faster.
Therefore, it's nice to have, but can be removed if it presents problems
(as it does every now and again).

And lastly, please filter --as-needed in a sane way instead of exporting
LDFLAGS :P
I like the following three-line solution to filter all variants of
--as-needed:

LDFLAGS="${LDFLAGS//-Wl,--as-needed}"
LDFLAGS="${LDFLAGS//,--as-needed}"
export LDFLAGS="${LDFLAGS//--as-needed}"

Again, please tag that block with a comment about the failure and that it
doesn't fail in a clean chroot or whatever :)


Hope that helps,
-- 
Ranguvar
[Devin Cofer]


More information about the aur-general mailing list