[Neurodebian-devel] Debian packages for Stimfit

Yaroslav Halchenko yoh at dartmouth.edu
Tue Jan 25 16:07:41 UTC 2011


On Tue, 25 Jan 2011, Christoph Schmidt-Hieber wrote:
> I've looked into libfann2 and some more packages, but either missed the point or they're doing it differently:

> In the case of stimfit and python-stfio, the binaries are generated using different configure flags; i.e. to build stimfit, you do:

> ./configure --enable-python
> make
> sudo make install

> whereas to build python-stfio, you do (in a separate build - none of the *.o files can be re-used):

> ./configure --enable-module
> make
> sudo make install

> How would I go about this in the debian/rules and
> debian/*.install files? Do you know of any package that uses a similar
> build process that I could use as a template?
it is hard to choose any particular one ;-)  and to have multiple calls
to configure and then make -- nothing comes in mind (I know those who
call cmake multiple times for different kinds of builds, e.g.:
http://git.debian.org/?p=pkg-exppsy/afni.git;a=blob;hb=HEAD;f=debian/rules
but there it is also 'out of source' building

> Or should I try to tweak
> my build toolchain so that both packages are generated during the same
> build?

Well -- it is ok actually if I got you right, a

you could simply override install target of debian/rules and
just call 

configure --enable-python
make
make install DESTDIR=debian/stimfit (or whatever that package name would be)

configure --enable-module
make
make install DESTDIR=debian/python-stfio

actually since stfio is an extension (not pure python) -- you better
enable it building for all supported versions of Python (not just
default).  For that, I guess, you would need to loop through them... I
guess similar to

http://git.debian.org/?p=pkg-exppsy/brian.git;a=blob;hb=HEAD;f=debian/rules

there it is a bit obfuscated since I wanted also to
* build sphinx documentation
* unittest against every supported python version
* move arch-dep extensions (.so) into their own package

but it should give you the idea ;-)
just do not get confused -- it uses 'debhelper 7' features, so you will
not see much of dh_* calls in there, only the "override_"s where things
need to be changed from the default behavior

Sidenote:

you are using HG -- branching/merging should be easy, why not to keep
'debian/' directory as is in a 'debian' branch... then you could,
whenever release ready simply merge your 'tip' into it, adjust and build
from it... also it should make things easier while working on packaging.
Such setup is very common in Debian world and you could even benefit
from helper tools such as

mercurial-buildpackage

disclaimer: I am not HG user myself, GIT, so I use git-buildpackage and
svn-buildpackage before (when I used SVN primarily); but I guess
mercurial-buildpackage should be similar in functionality

-- 
Yaroslav O. Halchenko
Postdoctoral Fellow,   Department of Psychological and Brain Sciences
Dartmouth College, 419 Moore Hall, Hinman Box 6207, Hanover, NH 03755
Phone: +1 (603) 646-9834                       Fax: +1 (603) 646-1419
WWW:   http://www.linkedin.com/in/yarik        



More information about the Neurodebian-devel mailing list