Hi,
On Tue, 20 Feb 2007, Richard Guenther wrote:
> > > /usr/lib64/libxfce4mcs-client.a
> >
> > Well, tell the xfce maintainer ;)
>
> Seems to be fixed in Factory (I quoted from an installed 10.2 system).
> Still the .so links are not in the -devel package.
Reminds me of something which we eventually want to have (and which I had
on my disc since some time): A packaging policy for libraries. I've
started to cobble up something, though I find my language a bit awkward
:-/ Anyway, the ideas should become clear.
I haven't yet read the debian library policy, but it certainly is inspired
by it (via conversation with debian guys). Probably their policy contains
much more interesting stuff, which might become usable. But let's start
with something small, and discuss about it.
Ciao,
Michael.
Definitions
lib$NAME.so.* - a shared library, programs can depend on them, usually
two files exist:
lib$NAME.so.$MAJOR
lib$NAME.so.$MAJOR.$MINOR.$MICRO
lib$NAME.so - file used by link editor (ld) to build executable, usually
softlink to the shared library file
Goal
Enable running old applications needing old shared libraries, without
recompilation (i.e. by merely copying over some old binary rpms and installing
them).
Library policy
* Shared libs are to be packaged into rpms whose name is
"lib" + $NAME + $NUM.
* There is no package containing lib*.so.* files which
is not named lib$NAME$NUM.rpm.
* Packages named lib* contain only files named lib*.so.*
(no headers, no *.so files, no config files, nothing else).
* $NUM contains only decimal digits.
* $NUM increases strictly with at least the SO version of the
contained shared libs.
Ideally it corresponds with either the upstream package version or the SO
version. Example: libfoo.so.1 is packaged in libfoo1.rpm. Or
libbar.so.3, a part of the program suite PLONK 4.1, would be packaged
into libplonk41.rpm.
* All packages named lib* end with $NUM.
* Files needed to develop programs using shared libraries contained in
lib$NAME$NUM.rpm are packaged in lib$NAME-devel.rpm.
[??? do we really want to remove $NUM from the -devel rpm?]
Those files include lib*.so, lib*.la and all headers. Optionally those
files can also be placed in $NAME.rpm, in the case that it also comes
with other tools or documentation. But _if_ there is a *-devel.rpm
package then it contains all lib*.{so,la} and headers.
Rationale
That scheme makes it possible to install and use multiple shared libraries
of the same base name, but different so-version (e.g. of older distribution
in case there are programs requiring them). A discriminator needs to be
part of the rpm name, as otherwise the update stack will be confused, and
using some monotonically increasing number as that makes sense. A strict
structure on rpm names will also help those writing quick&dirty tools.
>From that follows that only files should be included therein, which aren't
generating file conflicts later if installed together with another libbla*
rpm. Hence only lib*.so.* files are allowed in them. To ensure that no
shared libraries creep in which aren't handled that way we disallow them
to be in any package not named via these rules.
Effectively that creates a partition of all files into shared libs and
others, and makes sure that no rpm contains files from both partitions.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]