RFC: --as-needed to default LDFLAGS (Was: RFC: Should preserve-libs be enabled by default?)
On R, 2008-05-30 at 22:37 +0100, Ciaran McCreesh wrote:
> On Sat, 31 May 2008 00:31:22 +0300
> Mart Raudsepp <firstname.lastname@example.org> wrote:
> > On R, 2008-05-30 at 20:20 +0100, Ciaran McCreesh wrote:
> > > On Fri, 30 May 2008 21:13:32 +0200
> > > Luca Barbato <email@example.com> wrote:
> > > > Talk to the upstream about this, probably getting a satisfying
> > > > solution isn't that difficult.
> > >
> > > The solution is to use --as-needed in the same way that -ffast-math
> > > is used: only with applications specifically designed to support it.
> > You mean everything but paludis?
> Paludis is fine with as-needed. But hey, don't let reality get in the
> way of your pathetic attempts at turning everything into Paludis
It happens to be the only package that I know of that couldn't be fixed
to work with --as-needed (fix for others being to actually state linking
with a library whose symbols are directly used). I have not heard of
> > Doesn't your grand plan include supporting Prefix and Interix with PE
> > binaries and so on?
> I have no particular interest in supporting any platform that can't
> ship a Standard-compliant C++ environment.
That doesn't mean Gentoo progress, in maintainability of a running
system through the ease of ABI breaks meaning magnitudes of less
recompilations, should be inhibited.
> > I know projects that need to work around static initialization not
> > being reliable - they only happen to have done that for other reasons
> > (such as Windows PE format, iirc) years before --as-needed was
> > implemented for binutils.
> > Standards is one thing - reality is something quite different.
> > The reality is that everything designed to work everywhere is just
> > mighty happy with --as-needed and lots of benefits to gain from it.
> And twenty years ago C++ had to work around linkers that only supported
> eight character symbol names. Reality moves forward, except in
> situations like these where people try to rice it backwards.
Maybe you'd like to tell that to the authors of the platforms that don't
support this extreme corner case, but are amongst the platforms that we
do somewhat support in Gentoo?
The story that matters here is, that a C++ corner case that does not
work on 0.01% of packages with --as-needed and breaks on non-ELF
platforms, should not cause good things for our users to be shot down.
99.9% packages in the tree work just great with --as-needed with many
benefits, including ABI break pain reduction (and less importantly
memory savings from dirty library private memory pages), so given that
percentage the default should be what makes things better for users with
exceptions for those tiny percentage of packages that fall into the
corner case (that break on more exotic platforms anyway and arguably
should be fixed).
Portage developers - is there anything we should do to get --as-needed
to make.conf.example and other places, beyond fixing the known bugs on
the appropriate bug tracker?