# Quicklisp to debian
This projects updates Common Lisp libraries debian packages from the current
release found at Quicklisp, if an update is needed.
## Quicklisp
ql-to-deb works with a directory of debian packaging as input, and then
fetches informations from the quicklisp web site.
The quicklisp URLs used are:
- http://beta.quicklisp.org/dist/quicklisp.txt
- http://beta.quicklisp.org/dist/quicklisp/2014-04-25/releases.txt
The first URL contains as its `release-index-url` the second URL, which
contains the list of currently most recent available releases in Quicklisp.
## Debian
It's only possible to `ql-to-deb` on packages you've prepared before hand.
Add the packaging in the `debian/` subdirectory of the project. A typical
workflow would be:
$ ql-to-deb status [ package ]
$ ql-to-deb build [ package ]
$ ql-to-deb lint
$ ql-to-deb sign
$ ql-to-deb upload
The `build` command stores the name of the debian *changes* files in
`~/.ql-to-deb.changes` and will reuse that information in the other steps,
so that it's possible to use the `lint`, `sign` and `upload` commands
without any arguments meaning *work on what I just built please*.
The application will parse the `debian/control` file to figure out the name
of the debian source package, it is adviced to name the packaging directory
the same as the source file for easier maintenance.
### Origin tarball
The tarball given by Quicklisp is considered to be the `.orig.tar.gz` file
for debian packaging purposes. `ql-to-deb` just symlinks it in the format
expected by debian, and at the right place.
### Version numbers
Basically Quicklisp wins. When quicklisp release has a version number that
is both not the same as the current debian one, nor `gt` to it (in terms of
`dpkg --compare-versions`), then an *epoch* is added to the debian version
number.
For example, the `cffi` package debian version currently is *20100219* where
in Quicklisp the release version string is *0.12.0*. In that case
`ql-to-deb` will prepare a new version of the package with the debian
version string `1:0.12.0-1`.
## INSTALL
Currently lacking a debian package, because of a classic chicken and eggs
problem: `ql-to-deb` itself has some dependencies that are not to be found
in debian yet (drakma, md5 and command-line-arguments).
$ sudo apt-get install sbcl cl-ppcre cl-split-sequence cl-alexandria
$ sudo apt-get build-dep cl-asdf
$ sudo apt-get build-dep buildapp
$ dpkg -i cl-asdf...
Note that we need `cl-asdf` version 3.0.3 or more recent, and `buildapp`
version 1.5 or more recent, both as found in *sid* and an `apt-get
build-dep` command away to being backported into *squeeze*.
Now that you have the build requirements sorted:
$ make
## Usage
And then:
$ ./build/bin/ql-to-deb --version
ql-to-deb version "0.7.0"
compiled with SBCL 1.2.3.debian
$ ./build/bin/ql-to-deb --help
./build/bin/ql-to-deb [ option ... ] command [ package ...]
Options:
--help -h boolean Show usage and exit.
--version -V boolean Displays version and exit.
--verbose -v boolean Be verbose.
--fix-bugs -F boolean Fix packaging bugs.
--config -c string configuration file. (default: #P"/vagrant/ql-to-deb.ini")
--dir -D string where to build packages. (default: "/tmp/ql-to-deb/")
--logs -L string where to write detailed logs. (default: "/tmp/ql-to-deb/logs/")
--quicklisp -Q string URL to use to fetch quicklisp.txt main file (default: "http://beta.quicklisp.org/dist/quicklisp.txt")
Commands:
status Compare versions (debian sid, local, Quicklisp)
check List packages that need building
update Build either packages or all that need a build
build Build either packages or all that need a build
lint Run lintian on just built packages
install Run dpkg -i on just built packages
sign Run debsign on just built packages
upload Run dput on just built packages