Debian Build Notes

### some debian environment pieces:
$ cat >>~/.bashrc <<EOF
DEBEMAIL=your.email.address@example.org
DEBFULLNAME="Firstname Lastname"
EOF
### Setup a crystal clean source package, with lower program name and version number
$ svn co https://svn.met.no/kvoss/kvQc2/trunk/kvqc2-0.9.0
$ tar cvf kvqc2-0.9.0.tar kvqc2-0.9.0/
$ gzip kvqc2-0.9.0.tar
### For this sandbox exercise I made up the 0.9.0 version number ... but Debian likes that and needs it!
###Initial debianisation
$ cd kvqc2-0.9.0/
pak@pak:~/DEBIAN-SANDBOX/kvqc2/kvqc2-0.9.0$ dh_make -f ../kvqc2-0.9.0.tar.gz
Type of package: single binary, multiple binary, library, kernel module or cdbs?
[s/m/l/k/b] s
Maintainer name : emilssen
Email-Address : pak@pak
Date : Sun, 25 Apr 2010 17:21:34 +0200
Package Name : kvqc2
Version : 0.9.0
License : blank
Type of Package : Single
Hit <enter> to confirm:
Currently there is no top level Makefile. This may require additional tuning.
Done. Please edit the files in the debian/ subdirectory now. You should also
check that the kvqc2 Makefiles install into $DESTDIR and not in / .
pak@pak:~/DEBIAN-SANDBOX/kvqc2/kvqc2-0.9.0$

Lets look now into the debian directory and see what needs to be done:

pak@pak:~/DEBIAN-SANDBOX/kvqc2/kvqc2-0.9.0$ pwd
/home/pak/DEBIAN-SANDBOX/kvqc2/kvqc2-0.9.0
pak@pak:~/DEBIAN-SANDBOX/kvqc2/kvqc2-0.9.0$ ls debian
changelog emacsen-install.ex manpage.1.ex preinst.ex
compat emacsen-remove.ex manpage.sgml.ex prerm.ex
control emacsen-startup.ex manpage.xml.ex README.Debian
copyright init.d.ex menu.ex rules
cron.d.ex init.d.lsb.ex patches watch.ex
dirs kvqc2-default.ex postinst.ex
docs kvqc2.doc-base.EX postrm.ex
pak@pak:~/DEBIAN-SANDBOX/kvqc2/kvqc2-0.9.0$

control

Some initial minor mods:

Source: kvqc2
Section: science
Priority: extra
Maintainer: kvalobs <kvalobs@met.no>
Build-Depends: debhelper (>= 5)
Standards-Version: 3.7.2
Package: kvqc2
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: <insert up to 60 chars description>
<insert long description, indented with spaces>

How to find what to put in Build-Depends, go to an autobuilt version of kvqc2:

kvalobs@pak:~/kvQc2-svn/trunk$ objdump -p /metno/kvalobs/bin/kvqc2 | grep NEEDED
NEEDED libkvalobs_kvcpp.so.1
NEEDED libpuTools.so.3
NEEDED libboost_thread-gcc42-mt-1_34_1.so.1.34.1
NEEDED libboost_regex-gcc42-1_34_1.so.1.34.1
NEEDED libboost_filesystem-gcc42-1_34_1.so.1.34.1
NEEDED libboost_program_options-gcc42-1_34_1.so.1.34.1
NEEDED libomniDynamic4.so.1
NEEDED libomniORB4.so.1
NEEDED libomnithread.so.3
NEEDED libperl.so.5.8
NEEDED libpthread.so.0
NEEDED libcrypt.so.1
NEEDED libproj.so.0
NEEDED libnetcdf.so.4
NEEDED libnetcdf_c++.so.4
NEEDED libgsl.so.0
NEEDED libgslcblas.so.0
NEEDED libdl.so.2
NEEDED libstdc++.so.6
NEEDED libm.so.6
NEEDED libc.so.6
NEEDED libgcc_s.so.1
NEEDED libkvalobs_kvalobs.so.1
NEEDED libkvalobs_kvdb.so.1
NEEDED libkvalobs_fileutil.so.1
NEEDED libkvalobs_milog.so.1
NEEDED libkvalobs_kvskel.so.1
NEEDED libkvalobs_dnmithread.so.1
NEEDED libkvalobs_miconfparser.so.1

Or ...

kvalobs@pak:~/kvQc2-svn/trunk$ dpkg-depcheck -d ./configure
...
...
Packages needed:
postgresql-server-dev-8.3
m4
libc6-i686
libomniorb4-dev
gcc-3.4
libboost-filesystem-dev
libboost-thread-dev
flex
libsqlite3-dev
locales
cpp-3.4
g77
r-base-core
libxml++2.6-dev
libboost-program-options-dev
libboost-regex-dev
g77-3.4
libcppunit-dev
gawk

This leads to a first guess of (probably over the top):

Source: kvqc2
Section: science
Priority: extra
Maintainer: kvalobs <kvalobs@met.no>
Build-Depends: debhelper (>= 5), autotools-dev, lsb-base, g++ (>= 4.1.1), debconf,
automake, libtool, sqlite3 (>= 3.3.8), libsqlite3-dev (>= 3.3.8),
libboost-dev (>= 1.33.1), libboost-thread-dev (>= 1.33.1),
libboost-regex-dev (>= 1.33.1), libboost-filesystem-dev (>= 1.33.1),
libboost-program-options-dev (>= 1.33.1), libomniorb4-dev (>= 4.0.6),
omniidl4 (>= 4.0.6), metlibs-putools-dev (>= 3.0), libproj (>= 0.0.0),
libperl (>= 5.8), libnetcdf (>= 4.0.0), libnetcf_c++ (>= 4.0.0), libgsl (>= 0.0.0),
libgslcblas (>= 0.0.0), libkvalobs_kvcpp (>= 1.0.0), libkvalobs_kvalobs (>= 1.0.0),
libkvalobs_kvdb (>= 1.0.0), libkvalobs_fileutil (>= 1.0.0),
libkvalobs_milog (>= 1.0.0), libkvalobs_kvskel (>= 1.0.0),
libkvalobs_dnmithread (>= 1.0.0), libkvalobs_miconfparser (>= 1.0.0)
Standards-Version: 3.7.2
Package: kvqc2
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, sqlite3
Description: Non-real-time and geo-statistical quality controls.
The geo-statistical algorithms will make up the QC2-ROM (space-control)
and will rely on: handling of data-sets comprising points from the
whole station network of interest, filtering of uncertain values before
and after checks, gridding of data and iterative techniques,
kriging interpolation and cross-validation, as well as the additional
user-defined algorithms performing specific checks on data selected
by the QC2-ROM engine in both time and/or space.