On Mon, 2006-10-02 at 21:01 +0200, Enrico Scholz wrote:
Axel.Thimm(a)ATrpms.net (Axel Thimm) writes:
> You missed the beginning of this discussion: There *are* packages of
> this millenium that break when *.la files are blindly removed.
Ok; there are some projects from the last millenium which are still
requiring .la files. But it should be really trivial to fix them by
arts is an example of a program so broken. I'm attaching a patch that
fixes it. It is a little more involved than I'd hoped as arts (and
apparently other kde packages) include an older version of libtool with
some broken .m4 files for detecting the shared object extension (The
first half of this bug:
Explanation of patch:
*.mcopclass: These files have the name of the module that needs to be
loaded. Due to the use of lt_dlopen(), they use libfoo.la. With the
switch to lt_dlopenext() these can safely become libfoo.
extensionloader.cc: Here's where we switch from lt_dlopen() to
acinclude.m4, ltdl.m4: Probably only ltdl.m4 needs to be changed here.
Basically I replaced the erroroneous detection with the simple check of
newer libtools. This step is needed because arts includes its own,
somewhat dated, copy of libltdl. Do we want to get rid of that anyway
(because we want to use system libraries whenever possible)? Or does
arts need this specific version of libltdl for some reason?
With this patch, I am able to build an artsd that doesn't segfault when
running other KDE apps that generate sound. It's possible that there
are other issues beyond this as I don't normally run KDE. Rex, if you
can throw me some problem packages I'll be happy to look into what is
causing things to break.
Note that this is not a vote for or against removing .la files when they
are used as loadable modules. It's just a patch that demonstrates what
has to be done to fix the code to not require .la files.
Also note that according to the wording of the proposed draft, arts
would still be in violation even though the shared objects are loadable
modules rather than libraries intended for linking.