library packages and Debian
ross at soi.city.ac.uk
Fri Sep 12 11:38:32 EDT 2003
[rather Debian-specific, I'm afraid]
On the Wiki, two solutions to the problem of N compilers and M libraries
1. NxM binary packages (x number of architectures)
2. M packages, compiled with the available compilers on installation,
and recompiled on upgrade.
and Ganesh writes:
> I think solution 2 is horrible; building Haskell code can take a
> long time, and it opens users up to experiencing failures at package
> install time. Compiling code is something that properly belongs at
> package build time. Solution 1 admittedly has the drawbacks mentioned,
> but as long as timely updates happen (e.g. when a new release of GHC
> appears) it's superior.
Agreed. 2 also requires the user to have a build environment (with
more packages), but the failure at upgrade time is the worst problem.
Suppose I have several compilers and libraries installed, and one day I
upgrade the system, get a new version of GHC, and for whatever reason one
of the library packages I have installed doesn't work with that version.
My system is broken.
Would the following work?
- one source package per library package, generating a binary package
for each compiler (and each architecture). Debian maintainer for the
package gets it working with each compiler, and records dependencies
on specific version numbers of each compiler in the control file.
(Maybe there are compiler- and architecture-independent packages too.)
- when a Debian package of a compiler is upgraded, the Debian maintainer
for that compiler also performs (preferably automatically) a non-maintainer
upload for each library package, in which the only change is to the
version number of that compiler that the library package depends on.
Would not the autobuilder then do the rest? Then if the compiler upgrade
causes some library package to fail, the user will see a conflict: they
either remove the library package or postpone the compiler upgrade.
This only checks build failures, but library authors and maintainers
could include tests in the build process.
Might be a bit hard on the autobuilders, of course.
More information about the Libraries