Alexandre Oliva <aoliva(a)redhat.com> writes:
>>> - .la files must be shipped in main package, not in
Aah, I think I see what you mean.
libfoo.la is a loadable module.
libbar.la is a library in a separate package that libfoo.la was linked
Someone lt_dlopenext()s libfoo, and that fails if libbar.la is not
Is this what you mean?
/me wonders if his reasoning breaks if both libfoo and libbar are in
the same package.
no; 'libbar.la' might be used by a 'libbaz.la' loadable module which is
added to the repository a year later by a different maintainer.
Therefore, 'libbar.la' must be handled like 'libbar.so.0' and must be in
the main package but not in devel.
> Because a library can be linked against arbitrary .la modules, a
> library must either remove .la files completely or ship them in the
> main package.
I don't think this follows. It does hold that they probably ought to be in
the same package, or arranged such that the package containing libfoo.la
requires that containing libbar.la.
Exactly. Because (usually) main packages (e.g. this with 'libfoo.la')
must not depend on -devel packages, the required 'libbar.la' must not be
in -devel but in a main package.
Automatic dependencies (by interpreting 'dependency_libs') will prevent
silent breakage but do not change this rule. Checking only the current
state of the repository does not help. There exists always the chance
that 'libX.la' is used later by some loadable module (which is shipped
in a main package).