[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

packaging static lib oriented software



The Debian packaging policy makes assumptions which are
just not appropriate for software that primarily use static
libraries. This includes numerical libraries and libs used
only in development settings.

Many people wonder why people would bother with static libraries.
The reasons are simple:
 1. speed
For most libraries, there is a few percent performance loss in
using shared libraries. If the problem were that simple, people
wouldn't care, but for many computationally intensive applications
the cost seems to be much higher - sometimes as high as 30%.

 2. size
Again, although shared libraries are only a little larger than
static libs, that isn't the whole story. If you are sharing a
library among many applications running simultaneously then
shared libraries make sense. But with shared libraries, the
entire library is loaded while with static libraries only
those routines actually used are used. This means that for
work which tends to have only one or a few copies running
at a time, then static libraries end up using a LOT less
RAM. When you are running large jobs, this can be quite
important (with a package like lapack using a few hundred
meg of RAM is quite common. You don't run more than one of
those at a time).

Anyway, to get to the point. I'd like to see policy allow
slightly different packaging guidelines for packages that
have different goals. In particular, allowing for package
installation without installing shared libraries.

I have actually broken policy (gasp!) and done this with
fftw1. There is a base package, which contains the
appropriate /usr/doc/files, documentation, and the
header files. It depends on installation of one of two other
packages: fftw1-shared or fftw1-static. Of course, they
can both be installed at the same time and it is possible
for a package to depend on fftw1-shared.  (please ignore the
mistake of the missing copyright file if you look at the
package).

If space were not an issue I wouldn't bother pushing the
point, but a lot of numerical software has big libraries
and it is stupid to waste space on shared libraries (over
3MB is common) that never get used.  Actually, since
header files tend to be rather small, it makes more sense than
our current setup, since most static libraries never get used
but get installed with -dev packages. This packaging method
would allow for other packages to be compiled against it
without downloading another package.

A lot of people will object to this simply because it is
against current policy. It has no drawbacks and makes
life easier for many users. Shouldn't policy allow for 
such things?

- Jay


--
TO UNSUBSCRIBE FROM THIS MAILING LIST: e-mail the word "unsubscribe" to
debian-devel-request@lists.debian.org . 
Trouble?  e-mail to templin@bucknell.edu .


Reply to: