kvalobs:kvoss:system:qc2:8hdk376snf09zj37dk82s92:debian-build-notes

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 FIXME

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 FIXME

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)
...

http://mirror.oslo.dnmi.no/development

Switching to Internal Test Machine

Work has been switched to an internal virtual machine where package dependencies are more easily met. Since the machine wants to remain confidential she is hereafter referred to as AGNES.

The following are addiitonal libraries installed on AGNES to compile Qc2:

 apt-get install libgsl0-dbg
 apt-get install libgsl0-dev
 apt-get install proj
 apt-get install netcdfg-dev

Then test the build:

 autoreconf -i
./configure --prefix=$MY-DIRS/deploy
 make
 make install

Afterwards ran as kvalobs: $MY-DIRS/deploy/bin/kvqc2 OUTPUT as follows:

INFO: 
-- Reading configuration from file </etc/kvalobs/kvalobs.conf>!
INFO: 
-- Configuration file loaded!
INFO: 
-- Using 'database.dbconnect' from configuration file
FROM CONFIGURATION FILE: pgdriver.so
FROM CONFIGURATION FILE: 
HTMLPATH
HTMLPATH
Logging to file </var/log/kvalobs/Qc2.log>!
HTMLPATH/var/log/kvalobs/html
INFO: (Qc2 ...)
-- Qc2: starting ....
INFO: (Qc2 ...)
-- Using <kvtest-dev-vm101-test/> as path in CORBA nameserver
INFO: (Qc2 ...)
-- Using CORBA nameserver at: corbans.met.no
INFO: (Qc2 ...)
-- Soup
arg 0: /home/paulee/deploy/bin/kvqc2
INFO: (Qc2 ...)
-- Loading driver for database engine </usr/lib/kvalobs/db/pgdriver.so>!
INFO: (Qc2 ...)
-- Driver <PostgreSQL> loaded!
INFO: (Qc2 ...)
-- Writing pid to file </var/run/kvalobs/kvQc2-dev-vm101.pid>!
INFO: 
-- Qc2Work: starting work thread!
INFO: 
-- New database connection (PostgreSQL) created!
DEBUG: 
-- Created a new connection to the database!
INFO: 
-- %%%%%%%%%%%%%%%%%%%%%%%%
Scanning For Files
Does not exist: /etc/kvalobs/Qc2Config
INFO: (Qc2 ...)
-- Writing pid to file </var/run/kvalobs/Qc2-dev-vm101.pid>!
Scanning For Files
Does not exist: /etc/kvalobs/Qc2Config

First debian package construction ...

 mkdir DEBIAN-SANDBOX
 cd DEBIAN-SANDBOX/
svn co https://svn.met.no/kvoss/kvQc2/trunk/
mv trunk kvqc2-0.9.0
tar cvf kvqc2-0.9.0.tar kvqc2-0.9.0/
gzip kvqc2-0.9.0.tar

Now I would do something like the following if from scratch … but this has already been done and the “debain” directory exists in the svn repositpory. But I just add this box here for reference (note my paths were a little different on pak (extra kvqc2):

###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$ 
cd kvqc2-0.9.0
dpkg-buildpackage -rfakeroot

Some useful commands:

 dpkg --get-selections # see what is installed
 dpgk -s kvalobs # get all the details on a package

Running “dpgk -s kvalobs” one can see all the dependencies defined for kvalobs, jolly useful for building like packages. For kvqc2 .. just need to add “kvalobs” to the control:

 cat kvqc2-0.9.0/debian/control 
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), kvalobs (>=2.1.2)
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 space.

See the svn repository https://svn.met.no/viewvc/kvoss/kvQc2/ Revision 1551 for the debian “control” and “rules” specified.

ToDos

  • Add full copyright information
This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • kvalobs/kvoss/system/qc2/8hdk376snf09zj37dk82s92/debian-build-notes.1273186805.txt.gz
  • Last modified: 2022-05-31 09:23:18
  • (external edit)