ANN: cabal-debian et el
Hello,
Having received no negative feedback, I uploaded the latest version of
cabal-debian to hackage. cabal-debian is part of the debian package
which features:
1. cabal-debian
Automatically generate a debian directory from a .cabal package. To
use, cd in the root directory of the .cabal project and run:
cabal-debian --debianize
Then edit the debian directory as needed. Mostly cabal libraries
should build out of the box, but some may require extra love and care
to build or to make lintian happy.
2. the Debian library
The debian library contains code for:
+ parsing, manipulating, and printing common debian file formats,
such as .changes files, control files, sources.list files, etc.
+ parsing and comparing Debian Version numbers. (Includes support for
~, not sure if the version number policy has had any new additions
since that?)
+ mapping entries in sources.list to the corresponding file names of
the downloaded index files on disk.
+ interface for using the binaries in /usr/lib/apt/methods for
'downloading' files.
+ a Debian dependency solver. You give it a Depends line, and it will
provide solutions that satisfy the Depends. Due to the combination
of 'or' dependencies and implicit/explicit Conflicts, calculating a
solution for the dependencies is an NP-Hard problem. However, last
time I tested, this solver performed well against the packages in
sid. So, experimentally, I believe the types of cases that would
cause this solver to choke, do not naturally occur often in the
real world.
3. BONUS: apt-get-build-depends
apt-get provides a command build-depends so that you can do, apt-get
build-depends for a source package, to install all the required build
dependencies. Unfortuantely, it does not look at the local
debian/control, but rather, the Source package index file that it
downloaded.
Additionally, when dpkg-buildpackage fails, it spits out a list of the
missing build dependencies. In theory, you would just copy and paste
those missing build dependencies as the arguments to apt-get
install. Unfortuantely, apt-get install does not know how to parse the
build-dependencies if they include | or version numbers.
Hence, the creation of apt-get-build-depends. It will look in
debian/control, find all the Build-Depends and Build-Depends-Indep and
attempt to install them. At present it is very hackish -- I believe it
ignores architecture and version requiresments. But, it's a start :)
- jeremy
Reply to: