Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > c19e19dccb2f9a49f95629cbbd11307c > files > 47

libnco-devel-3.9.5-3mdv2010.0.i586.rpm

# $Header: /cvsroot/nco/nco/doc/debian.txt,v 1.116 2008/05/11 20:30:37 zender Exp $ -*-text-*-

# Purpose: Debian information for NCO netCDF Operators project
# Notes describe procedure to manipulate Debian-specific distribution

netCDF packages:
cd ${DATA}
wget http://ftp.debian.org/debian/pool/main/n/netcdf/netcdf_3.6.1-0.1.dsc
wget http://ftp.debian.org/debian/pool/main/n/netcdf/netcdf_3.6.1.orig.tar.gz
wget http://ftp.debian.org/debian/pool/main/n/netcdf/netcdf_3.6.1-0.1.diff.gz
dpkg-source -x netcdf_3.6.1-0.1.dsc

Debian:	    http://packages.debian.org/unstable/math/nco.html
Gentoo:	    http://gentoo-stable.iq-computing.de/browse?type=version&category=app-sci&package=nco&version=2.2.0

Debian New Maintainer's Guide (Rod05) is Bible for packaging .deb's: 
/data/zender/tmp/debian.pdf
# Debian Policy Manual
file:///usr/share/doc/debian-policy/policy.html/
Questions on procedure go to Debian Mentors <debian-mentors@lists.debian.org> 

0. Install Debian packages required to build new packages
apt-get install dh-make debhelper devscripts fakeroot gnupg debian-policy developers-reference

0.5 Create key to sign packages
   gpg --gen-key

1. Create ~/nco/debian directory to hold Debian configuration files

2. Debian build procedure recommends placing entire package source in
   subdirectory of main package. 
   For starters, we wish to create .debs of tagged releases, e.g., nco-3.9.5
   First we create a clean source distribution of nco and place it in nco-3.9.5
   Once automated, we will use cvs co -rnco-3_9_5 to get source
   Until we know what is necessary, however, we just copy a snapshot
   
   2.1 Clean all build files from development directory

cd ~/nco;make distclean;cd bld;make clean;cd ~
tar cvzf ./nco/nco.tar.gz ./nco/*
cd ~/nco;tar xvzf nco.tar.gz;mv nco nco-3.9.5
/bin/rm nco.tar.gz;tar cvzf nco-3.9.5.tar.gz ./nco-3.9.5/*
cd ~/nco/nco-3.9.5
dh_make -e zender@uci.edu -f ../nco-3.9.5.tar.gz

    2.2 The preceding steps created template debian files for a .deb,
    Those files now reside in ~/nco/debian.
    They are now checked into the CVS repository of the main distribution
    Step 2 only needs to be performed once per package
    Now that the Debian template files are a part of the upstream
    directory, future work consists of building the Debian packages

3. Build new .deb package

   3.1 First, remove detritus including *.gz files in parent directory
   from previous build

   cd ~/nco;/bin/rm *.gz
   cd ~/nco/nco-3.9.5
   dpkg-buildpackage -rfakeroot > foo 2>&1

4. Find out which packages new package needs for building
   From Rod02 p. 14

   strace -f -o /tmp/strace_log ./configure
   for x in `dpkg -S ${grep open /tmp/strace_log | perl -pe 's!.* open\(\"([^\"]*).*!$1}

5. Going backwards: How to create the Debian tarball source given
the distributed Debian files, nco_X.Y.Z-3.dsc nco_X.Y.Z-3.orig.tar.gz,
and nco_X.Y.Z-3.diff.gz  

dpkg-source -x nco_X.Y.Z-3.dsc

This dpkg-source command is functionally equivalent to applying the
Debian diff to the original source to produce Debian source:

cd /data/zender;/bin/rm -r nco-X.Y.Z.orig nco-X.Y.Z 
tar xvzf nco_X.Y.Z.orig.tar.gz # Untar original source
cp -r nco-X.Y.Z.orig nco-X.Y.Z # Create destination for patches
patch -p0 < nco_X.Y.Z-3.diff # Patch destination with Debian diff

6. To synchronize .debs with new releases, follow this procedure:
   cd ~/nco/bld
   make tags
# Put cute version-specific string in nco_ctl.c:nco_nmn_get()
# Install correct version numbers before updating Debian
# tags-query replace 3_9_5 with X_Y_Z+1
# tags-query replace 3.9.5 with X.Y.Z+1
# If tags-query replace does not work, be sure to manually change
# versions in configure.in, debian/files, doc/ANNOUNCE, doc/debian.txt,
# doc/index.shtml, doc/nco.texi, bld/nco_dst.pl, doc/VERSION 
   cd ~/nco/debian
   dch -v 3.9.5-1 # Update changelog
   emacs ~/nco/bld/nco.spec # Update changelog
# For unknown reason rules file may lose its executable bit
   chmod a+x ~/nco/debian/rules
# Rebuild autotools so new version # propagates
   cd ~/nco;aclocal;autoheader;automake --foreign;autoconf
# Save all files in emacs before tagging
# Tag CVS code after changing files in ~/nco/debian
   cd ~/nco;cvs commit -m "Preparing nco-3.9.5 release";cvs tag -c nco-3_9_5
   ${HOME}/nco/bld/nco_dst.pl --dbg=2 --bld --cln nco-3_9_5

# Location of build diagnostics for mentors to help 
http://dust.ess.uci.edu/nco/src/nco_3.9.5-1.dpkg-buildpackage.txt
http://dust.ess.uci.edu/nco/src/nco_3.9.5-1.dsc
http://dust.ess.uci.edu/nco/src/nco_3.9.5-1_i386.changes
http://dust.ess.uci.edu/nco/src/nco_3.9.5-1_i386.deb
http://dust.ess.uci.edu/nco/src/nco_3.9.5.orig.tar.gz

# Becoming a Debian developer
http://www.debian.org/devel/join/newmaint
# Debian mentor FAQ
http://people.debian.org/~mpalmer/debian-mentors_FAQ.html

Debian Acronyms & Abbreviations:
BTS Bug Tracking System
DD  Debian Developer
DDPO Debian Developer's Packages Overview
DNMG Debian New Maintainer's Guide
FTBFS Fails to Build from Source
ITA Intent to Adopt
NMU Non-Naintainer Upload
PTS Package Tracking System
RC  Release Critical
RFP Request for Package 
RFS Request for Sponsor 
WNPP Work-Needing and Prospective Packages 

# NCO orphan/ITA bug
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=273322
# netCDF orphan/ITA bug
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=321336

# Debian QA member who was de-facto NCO maintainer
Matej Vela <vela@debian.org>
# New NCO sponsor
Oleksandr (Alex) Moskalenko <malex@debian.org> 
# Former NCO mentor/sponsor
Daniel Baumann <daniel.baumann@panthera-systems.net>
Daniel Baumann <daniel@debian.org>
# Created netCDF 3.6.1 package
Warren Turkal <wt@atmos.colostate.edu>

Matej Vela <vela@debian.org>, Daniel Baumann <daniel@debian.org>, Warren Turkal <wt@atmos.colostate.edu>

# New build system
# Non-native debian builds Rod05 p. 46
cd ~/nco;cvc
/bin/rm -rf ${DATA}/nco-3.9.5 ${DATA}/nco_3.9.5* ${DATA}/debian # Cleanup last build
# cd ${DATA};cvs -d zender@nco.cvs.sf.net:/cvsroot/nco export -kkv -r nco-3_9_5-1 -d nco-3.9.5 nco # Export based on tag
cd ${DATA};cvs -d zender@nco.cvs.sf.net:/cvsroot/nco export -kkv -D "1 second ago" -d nco-3.9.5 nco # Export most recent
tar cvzf ./nco_3.9.5.orig.tar.gz --exclude='nco-3.9.5/debian*' --exclude='.cvsignore' --exclude='ncap_lex.c' --exclude='ncap_yacc.[ch]' ./nco-3.9.5 
/bin/rm -rf ${DATA}/nco-3.9.5 # Remove cvs-exported directory
tar xvzf ./nco_3.9.5.orig.tar.gz # Untar to get directory without excluded files
mkdir ${DATA}/nco-3.9.5/debian;cd ~/nco/debian;/bin/cp changelog compat control convert copyright doc-base files info rules ${DATA}/nco-3.9.5/debian # Replace debian directory with _CURRENT_ (main trunk) settings
export NETCDF_INC='/usr/include';export NETCDF_LIB='/usr/lib';export LD_LIBRARY_PATH='/usr/lib';unset NETCDF4_ROOT; # Guarantee that Debian packages take precedence over development libraries in, e.g., /usr/local. Indirectly inhibits libtool from using RPATH.
#cd ${DATA}/nco-3.9.5;dpkg-buildpackage -rfakeroot -uc -us > ~/foo.nco 2>&1 # -uc -us: Do not sign changes or source files
#cd ${DATA}/nco-3.9.5;dpkg-buildpackage -rfakeroot -sa > ~/foo.nco 2>&1 # -sa: Include _orig.tar.gz in .changes 
cd ${DATA}/nco-3.9.5;dpkg-buildpackage -rfakeroot > ~/foo.nco 2>&1
sudo dpkg --remove nco
sudo dpkg --install ${DATA}/nco_3.9.5-1_*.deb
lintian ${DATA}/nco_3.9.5-1_*.deb
ls -l ${DATA}/nco_3.9.5*
m ~/foo.nco
scp ${DATA}/nco_3.9.5* dust.ess.uci.edu:/var/www/html/nco/src
scp ${DATA}/nco_3.9.5* nco.sf.net:/home/groups/n/nc/nco/htdocs/src
# NB: Make sure RPMs build before uploading to debian, since changing
# Debian versions are such a PITA
cd ${DATA};dupload -t mentors nco_3.9.5-1_*.changes
bsrc # Reset shell environment for regular development

# Pbuilder/chroot system
# Configuration in ~/.pbuilderrc or /etc/pbuilderrc
# https://wiki.ubuntu.com/PbuilderHowto
# DIST=sid sudo pbuilder create
DIST=sid sudo pbuilder update # Update chroot before building package in it
cd ${DATA}
# dget http://ftp.debian.org/debian/pool/main/n/nco/nco_3.9.0-1.dsc
# dget http://ftp.debian.org/debian/pool/main/n/netcdf/netcdf_3.6.1-1.dsc
# apt-get source nco # Get package source
DIST=sid sudo pbuilder build nco_3.9.5-1.dsc
lintian /var/cache/pbuilder/sid/result/nco_3.9.5-1_*.deb
# NB: Make sure RPMs build before uploading to debian, since changing
# Debian versions is such a PITA
cd /var/cache/pbuilder/sid/result;dupload -t mentors nco_3.9.5-1_*.changes

# RPM builds as root
export rpm_root='/usr/src/redhat'
# export sudo_sng='' # sudo not-necessary when builing in user directories
export sudo_sng='sudo' # sudo necessary when building in system directories
cd ~/nco;cvc;cvu
/bin/rm -rf ${DATA}/nco-3.9.5 ${DATA}/nco-3.9.5* # Cleanup last build
${sudo_sng} /bin/rm -r -f \
${rpm_root}/BUILD/nco-3.9.5 \
${rpm_root}/RPMS/i386/nco-3.9.5-?.i386.rpm \
${rpm_root}/RPMS/i386/nco-debuginfo-3.9.5-?.i386.rpm \
${rpm_root}/RPMS/i386/nco-devel-3.9.5-?.i386.rpm \
${rpm_root}/SOURCES/nco-3.9.5.tar.gz \
${rpm_root}/SPECS/nco-3.9.5.spec \
${rpm_root}/SRPMS/nco-3.9.5-?.src.rpm
cd ${DATA};cvs -d zender@nco.cvs.sf.net:/cvsroot/nco export -kkv -r nco-3_9_5-1 -d nco-3.9.5 nco # Export based on tag
${sudo_sng} ln -s ${HOME}/nco/bld/nco.spec ${rpm_root}/SPECS/nco-3.9.5.spec
tar cvzf ./nco-3.9.5.tar.gz --exclude='nco-3.9.5/debian*' --exclude='.cvsignore' --exclude='ncap_lex.c' --exclude='ncap_yacc.[ch]' ./nco-3.9.5 
${sudo_sng} /bin/cp ${DATA}/nco-3.9.5.tar.gz ${rpm_root}/SOURCES
cd ${rpm_root}/SPECS
${sudo_sng} rpmbuild -ba --sign nco-3.9.5.spec > ~/foo.nco 2>&1
scp \
${rpm_root}/RPMS/i386/nco-3.9.5-?.i386.rpm \
${rpm_root}/RPMS/i386/nco-debuginfo-3.9.5-?.i386.rpm \
${rpm_root}/RPMS/i386/nco-devel-3.9.5-?.i386.rpm \
${rpm_root}/SRPMS/nco-3.9.5-?.src.rpm \
dust.ess.uci.edu:/var/www/html/nco/src
scp \
${rpm_root}/RPMS/i386/nco-3.9.5-?.i386.rpm \
${rpm_root}/RPMS/i386/nco-debuginfo-3.9.5-?.i386.rpm \
${rpm_root}/RPMS/i386/nco-devel-3.9.5-?.i386.rpm \
${rpm_root}/SRPMS/nco-3.9.5-?.src.rpm \
nco.sf.net:/home/groups/n/nc/nco/htdocs/src

# RPM builds as user
# http://myy.helia.fi/~karte/linux/doc/rpm-build-as-user.html
export rpm_root="${DATA}/rpm/nco"
cd ~/nco;cvc;cvu
mkdir -p ${DATA}/rpm/nco/TMP ${DATA}/rpm/nco/BUILD
/bin/rm -rf ${DATA}/nco-3.9.5 ${DATA}/nco-3.9.5* # Cleanup last build
/bin/rm -r -f \
${rpm_root}/nco-3.9.5-?.src.rpm \
${rpm_root}/nco-3.9.5.spec \
${rpm_root}/nco-3.9.5.tar.gz \
${rpm_root}/*/nco-3.9.5-?.*.rpm \
${rpm_root}/*/nco-debuginfo-3.9.5-?.*.rpm \
${rpm_root}/*/nco-devel-3.9.5-?.*.rpm
# cd ${DATA};cvs -d zender@nco.cvs.sf.net:/cvsroot/nco export -kkv -r nco-3_9_5-1 -d nco-3.9.5 nco # Export based on tag
cd ${DATA};cvs -d zender@nco.cvs.sf.net:/cvsroot/nco export -kkv -D "1 second ago" -dnco-3.9.5 nco # Export most recent and build as 3.9.5-1
tar cvzf ./nco-3.9.5.tar.gz --exclude='nco-3.9.5/debian*' --exclude='.cvsignore' --exclude='ncap_lex.c' --exclude='ncap_yacc.[ch]' ./nco-3.9.5 
/bin/cp ${DATA}/nco-3.9.5.tar.gz ${rpm_root}
ln -s ${HOME}/nco/bld/nco.spec ${rpm_root}/nco.spec
cd ${rpm_root}
rpmbuild -ba --sign nco.spec > ~/foo.nco 2>&1
rpmlint ${rpm_root}/*/nco-3.9.5-?.*.rpm
sudo yum remove nco
sudo yum install ${rpm_root}/*/nco-3.9.5-?.*.rpm
scp \
${rpm_root}/*/nco-3.9.5-?.*.rpm \
${rpm_root}/*/nco-debuginfo-3.9.5-?.*.rpm \
${rpm_root}/*/nco-devel-3.9.5-?.*.rpm \
${rpm_root}/nco-3.9.5-?.*.src.rpm \
dust.ess.uci.edu:/var/www/html/nco/src
scp \
${rpm_root}/*/nco-3.9.5-?.*.rpm \
${rpm_root}/*/nco-debuginfo-3.9.5-?.*.rpm \
${rpm_root}/*/nco-devel-3.9.5-?.*.rpm \
${rpm_root}/nco-3.9.5-?.*.src.rpm \
nco.sf.net:/home/groups/n/nc/nco/htdocs/src