This is an old revision of the document!
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.
TODO
THIS STEP NOT INCLUDED …. did not provide clear results, docs not clear
$ dpkg -S libfoo.so.6
Then you just take -dev version of every package as Build-Depends entry.
TODO
Minor changes to the “rules” file, and added some flag spec from the synopd case
compat echo 7 > debian/compat
/ not available on the ubuntu system … so this went back to 5 Now try to make a package by writing in . the source directory:
$ dpkg-buildpackage
Now try to sort out all the dependencies … many errors:
dpkg-shlibdeps -Tdebian/kvqc2.substvars debian/kvqc2/usr/local/bin/kvqc2 dpkg-shlibdeps: failure: no dependency information found for /metno/kvalobs/lib/libkvalobs_dnmithread.so.1 (used by debian/kvqc2/usr/local/bin/kvqc2). dh_shlibdeps: command returned error code 512 make: *** [binary-arch] Error 1 dpkg-buildpackage: failure: fakeroot debian/rules binary gave error exit status 2
I would like to include items such as metlibs-putools-dev but caanot get access to the internal met sources from my external machine, i.e. such like:
$ apt-get update ... W: Failed to fetch http://mirror.oslo.dnmi.no/development/dists/etch/contrib/i18n/Translation-en_US.bz2 Could not connect to mirror.oslo.dnmi.no:80 (157.249.16.70). - connect (111 Connection refused) ...
ToDos
- Add full copyright information