libtool archive madness

Rex Dieter rdieter at math.unl.edu
Thu Mar 16 14:39:27 UTC 2006


Ralf Corsepius wrote:
> On Thu, 2006-03-16 at 06:24 -0600, Rex Dieter wrote:
> 
>>Michael Schwendt wrote:
>>
>>>On Mon, 13 Mar 2006 15:03:24 -0600, Rex Dieter wrote:
>>>
>>>
>>>>>I have found the solution after a strace session.
>>>>>
>>>>>Don't remove the *.la files which will be installed by the make
>>>>>install step into the '%install' stanza.. Both .la files, the
>>>>>Kpart and the kio_slave will be needed.
>>>>>
>>>>>Conclussion: IN opposite to the packaging guidelines it may be
>>>>>make sense to put .la files into rpms for KDE programs.
>>>>
>>>>If the packaging guidelines don't already say it, the omission of .la 
>>>>files should be limited to shared libraries in %{_libdir}/
>>>
>>>This is insufficient and creates broken inter-library dependency chains.
>>>
>>>It seems that pieces within KDE still _require_ .la files to be present in
>>>%{_libdir}/kde3 in order to find/load plugins. E.g. k3b needs .la files
>>>for its plugins. However, these .la files contain dependencies to other
>>>.la files in %_libdir. So if you don't package .la files in %_libdir, but
>>>include other .la files which contain a dependency on the excluded files,
>>>this breaks the dependency chain. 
>>
>>Turns out that the missing dependancies of loadable modules, in 100% of
>>cases that *I* have seen, is harmless.  So, I'm of the opinion that
>>unless a concrete example of broken-ness (ie, an app that doesn't work
>>after removing *only %_libdir/lib*.la), then I'd say don't worry about it.
> 
> 
> The point about *.la's, you both are seem to be deliberately want to ignore:
> * Many aspects about shared libraries are non-portable
> * Many aspects about shared libraries are non-standardized.
> * Many aspects about mixing shared/static libraries are non-portable.
> 
> What libtool tries with it's *.la's is to implement is an additional
> layer (API) on top of libraries, which makes many of those aspects
> portable.
> 
> As Linux is a fairly modern OS it isn't affected by most of the issues,
> which affect building shared libraries on other OSes. That's why *.la's,
> in the vast majority of cases are not necessary to keep Linux systems
> operational and appear as "unnecessarily restrictive and disturbing".

*I* certainly am not ignoring this, and have almost always claimed the 
same, that "*.la's, in the vast majority of cases are not necessary". 
However, the point I'm trying to make is that the only case that I know 
of where .la files cause concrete harm (esp in packaging) are those 
associated with shared libs.  That's why I'm suggesting that the 
packaging guidelines only include the requirement/hard-recommendation 
regarding %_libdir}/lib*.la files.  Other .la files *probably* aren't 
needed (in most cases, except for many kde loadable modules/plugins(*)), 
but neither do they cause harm, so these should be dealt with either on 
a case-by-case basis and/or at the discretion of the packager

-- Rex

(*) Which I'd argue means there's probably a bug in there somewhere, but 
AFAIK, is difficult to diagnose/fix.





More information about the fedora-extras-list mailing list