[Fedora-packaging] Re: libtool(.la) archive policy proposal

Enrico Scholz enrico.scholz at informatik.tu-chemnitz.de
Thu Oct 12 19:24:42 UTC 2006

Axel.Thimm at ATrpms.net (Axel Thimm) writes:

>> > E.g. keep the *.la if you like in the main packge or elsewhere, the
>> > issue is still only "bloat in BRs in *-devel". Do you agree?
>> When it would be only the small .la file in -devel, I agree.
> The question on agreeing wasn't on putting it in *-devel or whereever,
> it was on whether the final issue is simply "bloat in BRs in *-devel"
> or more. Still agree?


Final issues are, whether we want useless files with sideeffects in main

Another issue: .la files are slowing down library loading significantly
because a text file must parsed additionally, instead of interpreting an
ELF header.

>> >> - they add untracked dependencies to the rpm packages: when B was
>> >>   built against A which has libA.la, B will stop to work when A does
>> >>   not ship libA.la anymore (e.g. because it uses now cmake).
>> >
>> > It will also break when libA changes the soname, an API, add/remove
>> > include files and the like.
>> rpm would bark loudly about broken dependencies in these casees.
> Indeed? You never hit any funny bugs where gcc happily *warns* you
> about missing include files and continues to build?

Include files are a documented part of an API. .la files are stuff where
most developers are unaware of its existence and do not care about it.

>> I know exactly one case where they are required: when software uses
>> 'lt_dlopen("foo.la")'.
>> This can be fixed easily by writing 'lt_dlopenext("foo")'.
> Is this portable, so that upstream can accept this?


> What about the normal libtool use where it is required?

Which "normal use"? libtool .la files:

* might be required for static linking where static libs have dependencies.

  --> this is discouraged in Fedora and there exist more powerful
      alternatives (pkgconfig)

* might be required when architecture supports flat library dependencies
  only (e.g. on Darwin)

  --> uninteresting for Fedora and there exist more powerful
      alternatives (pkgconfig)

* are used internally when building a package consisting of multiple
  libs and/or applications

  --> uninteresting for packaging

* are required for 'lt_dlopen("foo.la")'

  --> can be replaced by 'lt_dlopenext("foo")'

> Removing *.la means that you need to take care of adding non-trivial
> required flags to the linker manually.

Due to reordering of linker options by libtool, only '-l' and '-L' make
sense in linker flags.

Most dynamic libs should not need '-l' overall and pkgconfig provides
the same (and more) functionality.

> E.g. any ISV/IHV packaging under /opt

I do not see, how /opt fits into any Fedora packaging discussion...

> (as the standards tell him to) suddenly needs special handling only
> for Fedora because we kill *.la.
>> Installing .la files happens probably only due to legacy reasons.
> Not really. That would imply that the libtool folks are too dumb to
> track modern development

lt_dlopenext() was probably added while tracking modern development.

Declaring a (former) elementary feature (installed .la files) as obsolete
requires a quorum and convincing reasons which cover all possible use

For Fedora, we can ignore use cases like static linking and flat library

>> See above about lt_dlopen(); KDE (which requires .la) moved away from
>> .la recently.
> Check fedora-list for packages breaking outside of kde world, I just
> saw a report yesterday again. The nuke-la solution has created more
> problems than it thought it solved.

I would make it a packager's decision whether he adds a small patch
(lt_dlopenext()) or whether he packages .la files.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 480 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/fedora-packaging/attachments/20061012/6398208b/attachment.sig>

More information about the Fedora-packaging mailing list