Periapt Technologies - fresh clean websites
Bookmark and Share

Life in the Debian Perl Group

Request for package

I have been contributing the Debian Perl Group since August 2010. My motivation has been a mixture of interest, therapy, desire to learn about Perl modules I would not otherwise use and practical need. Others have written about the Debian Perl Group from the users' perspective. I shall endeavour to document the progress of a Perl module into Debian, as it happens with no particular insight into what the journey will be like. I cannot even say for sure if it will be successful, as sometimes a module cannot easily be made to build or fails Debian's strict copyright requirements. So thus we received the following email:

Bug#626005: RFP: libcss-minifier-perl -- minify a CSS file and have the output written directly to another file


Package: wnpp
Severity: wishlist

* Package name    : libcss-minifier-perl
  Version         : 0.01
  Upstream Author : Peter Michaux, <petermichaux@gmail.com>
* URL             : … CSS-Minifier-0.01 …
* License         : Perl
  Programming Lang: Perl
  Description     : minify a CSS file and have the output written
                    directly to another file

        This package is required to package otrs 3.0 in Debian.

        This module removes unnecessary whitespace from
        CSS. The primary requirement developing this module
        is to not break working stylesheets: if working CSS
        is in input then working CSS is output. The
        Mac/Internet Explorer comment hack will be minimized
        but not stripped and so will continue to function.  …

So someone had found a need for this package and requested it by raising an Request for Package. Oh, I thought

Patrick,
    We have libcss-minifier-xs-perl in Debian. Does this suffice
    for you?

but sadly I get the response.

No. Otrs needs the != xs version 

I am still somewhat in two minds about this. In some ways it is probably easier to not ask many questions and just package it. On the other hand packaging is not always trivial, and those within the group that actually have upload rights might raise the same objections.

Patrick,

Actually I am really rather struggling with whether to
proceed on this one. I downloaded the latest otrs source
and grepped for CSS::Minifier. It seems that otrs bundles
CSS::Minifier with it so I assume you are concerned about
section 4.13 of the Debian Policy (Convenience copies of
code). There only seem to be a few lines in
otrs/Kernel/System/Loader.pm that actually refer to CSS:Minifier.

So if you are going to patch the otrs code to unbundle
CSS::Minifier surely it will be better to patch it as
well to use CSS::Minifier::XS.  I am copying the rest
of the Debian Perl Group in case anyone disagrees.

In a further email Patrick resisted this idea, and discussing the request on the Debian Perl Group's IRC channel, someone pointed out that the interface of the two modules has diverged a bit. So now I need to take control of the ticket and change it from a Request for package to an Intention to package. This requires sending an email to the Debian control@bugs.debian.org using a specific format:

retitle 626005 ITP: libcss-minifier-perl -- minify a CSS file
owner 626005 nicholas@periapt.co.uk
thanks 

The Fun Bit

Now we come to the glory of the Debian Perl Group: dh-make-perl. It will download the module from CPAN and add most of the bits needed to make it a Debian package. The program does not assume the Perl module will be maintained by the Perl Group, so we need to set the --pkg-perl argument to say that it will.

? dh-make-perl --pkg-perl --closes 626005 --cpan CSS::Minifier
CPAN: File::HomeDir loaded ok (v0.97)
Going to read '/home/nicholas/.cpan/Metadata'
  Database was generated on Tue, 10 May 2011 01:38:46 GMT
CPAN: Time::HiRes loaded ok (v1.9719)
Fetching with LWP:
  ftp://cpan.etla.org/pub/CPAN/authors/01mailrc.txt.gz
Going to read '/home/nicholas/.cpan/source/authors/01mailrc.txt.gz'
Going to read 84 yaml files from /home/nicholas/.cpan/build/
........................................................................DONE
Restored the state of none (in 1.8395 secs)
............................................................................DONE
Fetching with LWP:
  ftp://cpan.etla.org/pub/CPAN/modules/02packages.details.txt.gz
Going to read '/home/nicholas/.cpan/source/modules/02packages.details.txt.gz'
  Database was generated on Fri, 13 May 2011 01:43:27 GMT
...............
  New CPAN.pm version (v1.9600) available.
  [Currently running version is v1.9402]
  You might want to try
    install CPAN
    reload cpan
  to both upgrade CPAN.pm and run the new version without leaving
  the current session.


.............................................................DONE
Fetching with LWP:
  ftp://cpan.etla.org/pub/CPAN/modules/03modlist.data.gz
Going to read '/home/nicholas/.cpan/source/modules/03modlist.data.gz'
............................................................................DONE
Going to write /home/nicholas/.cpan/Metadata
Fetching with LWP:
  ftp://cpan.etla.org/pub/CPAN/authors/id/P/PM/PMICHAUX/CSS-Minifier-0.01.tar.gz
CPAN: Digest::SHA loaded ok (v5.47)
Fetching with LWP:
  ftp://cpan.etla.org/pub/CPAN/authors/id/P/PM/PMICHAUX/CHECKSUMS
Checksum for /home/nicholas/.cpan/source/authors/id/P/PM/PMICHAUX/CSS-Minifier-0.01.tar.gz ok
CPAN: Archive::Tar loaded ok (v1.52)
CSS-Minifier-0.01/
CSS-Minifier-0.01/README
CSS-Minifier-0.01/Changes
CSS-Minifier-0.01/MANIFEST
CSS-Minifier-0.01/Makefile.PL
CSS-Minifier-0.01/lib/
CSS-Minifier-0.01/lib/CSS/
CSS-Minifier-0.01/lib/CSS/Minifier.pm
CSS-Minifier-0.01/META.yml
CSS-Minifier-0.01/t/
CSS-Minifier-0.01/t/CSS-Minifier.t
CSS-Minifier-0.01/t/sheets/
CSS-Minifier-0.01/t/sheets/s3-expected.css
CSS-Minifier-0.01/t/sheets/s2-expected.css
CSS-Minifier-0.01/t/sheets/s3.css
CSS-Minifier-0.01/t/sheets/s2.css
CPAN: File::Temp loaded ok (v0.22)
Found: CSS-Minifier 0.01 (libcss-minifier-perl arch=all)
No APT contents can be loaded.
Please install 'apt-file' package and run 'apt-file update'
as root.
Dependencies not updated.
Using maintainer: Debian Perl Group <pkg-perl-maintainers@lists.alioth.debian.org>
Found docs: README
Using rules: /usr/share/dh-make-perl/rules.dh7.tiny
**********
Copyright information incomplete!

Upstream copyright information could not be automatically determined.

If you are building this package for your personal use, you might disregard
this information; however, if you intend to upload this package to Debian
(or in general, if you plan on distributing it), you must look into the
complete copyright information.

The causes for this warning are:
No licensing information found
--- Done
100%Reading package lists... Done
79%Building dependency tree       
Reading state information... Done

This created a CSS-Minifier-0.01 directory which is the upstream tarball unpacked and the debian sub-directory. Now I have to tweak it in the following ways:

  • The README file is standard boilerplate and we do not install those. So I remove the debian/libcss-minifier-perl.docs file.
  • The debian/control file looks okay apart from a line of bolierplate right at the end. So I remove that.
  • The debian/copyright file also looks okay apart from the boilerplate disclaimer and the missing copyright years for the upstream author. The program does not seem to try to find the copyright years, and I think it likely that it would not be worth the effort to fix that given the variability of copyright statements on CPAN.
  • Normally one would need to add a dependency but not on this occasion.

The source tar ball is missing so I download it again.

? uscan --force-download
libcss-minifier-perl: Version (0.01) available on remote site:
  http://search.cpan.org/CPAN/authors/id/P/PM/PMICHAUX/CSS-Minifier-0.01.tar.gz
  (local version is 0.01)
libcss-minifier-perl: Successfully downloaded updated package CSS-Minifier-0.01.tar.gz
    and symlinked libcss-minifier-perl_0.01.orig.tar.gz to it

So now is the first time I have considered actually trying to build the package.

? dpkg-buildpackage -us -uc
dpkg-buildpackage: export CFLAGS from dpkg-buildflags (origin: vendor): -g -O2
dpkg-buildpackage: export CPPFLAGS from dpkg-buildflags (origin: vendor): 
dpkg-buildpackage: export CXXFLAGS from dpkg-buildflags (origin: vendor): -g -O2
dpkg-buildpackage: export FFLAGS from dpkg-buildflags (origin: vendor): -g -O2
dpkg-buildpackage: export LDFLAGS from dpkg-buildflags (origin: vendor): 
dpkg-buildpackage: source package libcss-minifier-perl
dpkg-buildpackage: source version 0.01-1
dpkg-buildpackage: source changed by Nicholas Bamber <nicholas@periapt.co.uk>
dpkg-buildpackage: host architecture i386
 dpkg-source --before-build CSS-Minifier-0.01
 fakeroot debian/rules clean
dh clean
   dh_testdir
   dh_auto_clean
make[1]: Entering directory `/home/nicholas/svn/CSS-Minifier-0.01'
rm -f \
	  *.a core \
	  core.[0-9] blib/arch/auto/CSS/Minifier/extralibs.all \
	  core.[0-9][0-9] Minifier.bso \
	  pm_to_blib.ts core.[0-9][0-9][0-9][0-9] \
	  Minifier.x  \
	  perl tmon.out \
	  *.o pm_to_blib \
	  blib/arch/auto/CSS/Minifier/extralibs.ld blibdirs.ts \
	  core.[0-9][0-9][0-9][0-9][0-9] *perl.core \
	  core.*perl.*.? Makefile.aperl \
	  perl Minifier.def \
	  core.[0-9][0-9][0-9] mon.out \
	  libMinifier.def perlmain.c \
	  perl.exe so_locations \
	  Minifier.exp 
rm -rf \
	  blib 
mv Makefile Makefile.old > /dev/null 2>&1
rm -f \
	  Makefile.old Makefile 
rm -rf \
	  CSS-Minifier-0.01 
/usr/bin/perl "-MExtUtils::Manifest=fullcheck" -e fullcheck
Not in MANIFEST: debian/changelog
Not in MANIFEST: debian/compat
Not in MANIFEST: debian/control
Not in MANIFEST: debian/copyright
Not in MANIFEST: debian/files
Not in MANIFEST: debian/libcss-minifier-perl.debhelper.log
Not in MANIFEST: debian/libcss-minifier-perl.substvars
Not in MANIFEST: debian/libcss-minifier-perl/DEBIAN/control
Not in MANIFEST: debian/libcss-minifier-perl/DEBIAN/md5sums
Not in MANIFEST: debian/libcss-minifier-perl/usr/share/doc/libcss-minifier-perl/changelog.Debian.gz
Not in MANIFEST: debian/libcss-minifier-perl/usr/share/doc/libcss-minifier-perl/changelog.gz
Not in MANIFEST: debian/libcss-minifier-perl/usr/share/doc/libcss-minifier-perl/copyright
Not in MANIFEST: debian/libcss-minifier-perl/usr/share/man/man3/CSS::Minifier.3pm.gz
Not in MANIFEST: debian/libcss-minifier-perl/usr/share/perl5/CSS/Minifier.pm
Not in MANIFEST: debian/rules
Not in MANIFEST: debian/source/format
Not in MANIFEST: debian/watch
Not in MANIFEST: t/sheets/s2-got.css
Not in MANIFEST: t/sheets/s3-got.css
make[1]: Leaving directory `/home/nicholas/svn/CSS-Minifier-0.01'
   dh_clean
 dpkg-source -b CSS-Minifier-0.01
dpkg-source: info: using source format `3.0 (quilt)'
dpkg-source: info: building libcss-minifier-perl using existing ./libcss-minifier-perl_0.01.orig.tar.gz
dpkg-source: warning: file CSS-Minifier-0.01/t/sheets/s3-got.css has no final newline (either original or modified version)
dpkg-source: warning: file CSS-Minifier-0.01/t/sheets/s2-got.css has no final newline (either original or modified version)
dpkg-source: info: local changes stored in CSS-Minifier-0.01/debian/patches/debian-changes-0.01-1, the modified files are:
 CSS-Minifier-0.01/t/sheets/s2-got.css
 CSS-Minifier-0.01/t/sheets/s3-got.css
dpkg-source: info: building libcss-minifier-perl in libcss-minifier-perl_0.01-1.debian.tar.gz
dpkg-source: info: building libcss-minifier-perl in libcss-minifier-perl_0.01-1.dsc
 debian/rules build
dh build
   dh_testdir
   dh_auto_configure
Checking if your kit is complete...
Looks good
'CREATE_PACKLIST' is not a known MakeMaker parameter name.
Writing Makefile for CSS::Minifier
   dh_auto_build
make[1]: Entering directory `/home/nicholas/svn/CSS-Minifier-0.01'
cp lib/CSS/Minifier.pm blib/lib/CSS/Minifier.pm
Manifying blib/man3/CSS::Minifier.3pm
make[1]: Leaving directory `/home/nicholas/svn/CSS-Minifier-0.01'
   dh_auto_test
make[1]: Entering directory `/home/nicholas/svn/CSS-Minifier-0.01'
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/CSS-Minifier.t .. t/CSS-Minifier.t .. 1/4                          t/CSS-Minifier.t .. ok
All tests successful.
Files=1, Tests=4,  0 wallclock secs ( 0.08 usr  0.01 sys +  0.10 cusr  0.01 csys =  0.20 CPU)
Result: PASS
make[1]: Leaving directory `/home/nicholas/svn/CSS-Minifier-0.01'
 fakeroot debian/rules binary
dh binary
   dh_testroot
   dh_prep
   dh_installdirs
   dh_auto_install
make[1]: Entering directory `/home/nicholas/svn/CSS-Minifier-0.01'
Installing /home/nicholas/svn/CSS-Minifier-0.01/debian/libcss-minifier-perl/usr/share/perl5/CSS/Minifier.pm
Installing /home/nicholas/svn/CSS-Minifier-0.01/debian/libcss-minifier-perl/usr/share/man/man3/CSS::Minifier.3pm
make[1]: Leaving directory `/home/nicholas/svn/CSS-Minifier-0.01'
   dh_install
   dh_installdocs
   dh_installchangelogs
   dh_installexamples
   dh_installman
   dh_installcatalogs
   dh_installcron
   dh_installdebconf
   dh_installemacsen
   dh_installifupdown
   dh_installinfo
   dh_pysupport
   dh_installinit
   dh_installmenu
   dh_installmime
   dh_installmodules
   dh_installlogcheck
   dh_installlogrotate
   dh_installpam
   dh_installppp
   dh_installudev
   dh_installwm
   dh_installxfonts
   dh_installgsettings
   dh_bugfiles
   dh_ucf
   dh_lintian
   dh_gconf
   dh_icons
   dh_perl
   dh_usrlocal
   dh_link
   dh_compress
   dh_fixperms
   dh_strip
   dh_makeshlibs
   dh_shlibdeps
   dh_installdeb
   dh_gencontrol
   dh_md5sums
   dh_builddeb
dpkg-deb: building package `libcss-minifier-perl' in `../libcss-minifier-perl_0.01-1_all.deb'.
 dpkg-genchanges  >../libcss-minifier-perl_0.01-1_i386.changes
dpkg-genchanges: including full source code in upload
 dpkg-source --after-build CSS-Minifier-0.01
dpkg-buildpackage: full upload (original source is included)

So it built okay. Now Debian has its own quality assurance checker called lintian. However in the Perl Group we like to be as thorough as possible so we turn on all the checks. So I wrap this up in a local script lint.

? cat /usr/local/bin/lint
#!/bin/sh
lintian --info -I -E --pedantic --color=auto $*
? lint ../libcss-minifier-perl_0.01-1_i386.changes

On this occaision we are lucky and nothing goes wrong. So now I inject it into the subversion repository. Again the arguments are too boring and I wrap this up in a local script svninj.

 ? cat /usr/local/bin/svninj
#!/bin/sh
svn-inject -l 2 --setprops $1 svn+ssh://svn.debian.org/svn/pkg-perl/
? cd ..
? svninj libcss-minifier-perl_0.01-1.dsc
Checking if the default $TMPDIR allows execution...
Default $TMPDIR allows execution.
Starting ssh connection..
Enter passphrase for key '/home/nicholas/.ssh/id_rsa': 
cp -l CSS-Minifier-0.01.tar.gz /home/nicholas/svn/tarballs/libcss-minifier-perl_0.01.orig.tar.gz
mkdir -p branches/upstream/libcss-minifier-perl
tar -z -x -f /home/nicholas/svn/libcss-minifier-perl_0.01.orig.tar.gz
mv CSS-Minifier-0.01 current
 svn -q import -m [svn-inject] Installing original source of libcss-minifier-perl (0.01) branches/upstream/libcss-minifier-perl svn+ssh://svn.debian.org/svn/pkg-perl/branches/upstream/libcss-minifier-perl
svn import /tmp/tmp.me5HqCCyVV svn+ssh://svn.debian.org/svn/pkg-perl/tags -m [svn-inject] Creating libcss-minifier-perl/ directory.
Adding         /tmp/tmp.me5HqCCyVV/libcss-minifier-perl

Committed revision 74330.
 svn -m [svn-inject] Tagging upstream source version of libcss-minifier-perl (0.01) copy svn+ssh://svn.debian.org/svn/pkg-perl/branches/upstream/libcss-minifier-perl/current <2 more arguments>
 svn -m [svn-inject] Forking libcss-minifier-perl source to Trunk copy svn+ssh://svn.debian.org/svn/pkg-perl/branches/upstream/libcss-minifier-perl/current <2 more arguments>
dpkg-source --no-copy --skip-patches -x /home/nicholas/svn/libcss-minifier-perl_0.01-1.dsc
dpkg-source: warning: extracting unsigned source package (/home/nicholas/svn/libcss-minifier-perl_0.01-1.dsc)
dpkg-source: info: extracting libcss-minifier-perl in libcss-minifier-perl-0.01
dpkg-source: info: unpacking libcss-minifier-perl_0.01.orig.tar.gz
dpkg-source: info: unpacking libcss-minifier-perl_0.01-1.debian.tar.gz
fakeroot debian/rules clean || debian/rules clean
dh clean
   dh_testdir
   dh_auto_clean
   dh_clean
svn co svn+ssh://svn.debian.org/svn/pkg-perl/trunk/libcss-minifier-perl /tmp/tmp.gqTjElN5rL/trunk
A    /tmp/tmp.gqTjElN5rL/trunk/t
A    /tmp/tmp.gqTjElN5rL/trunk/t/CSS-Minifier.t
A    /tmp/tmp.gqTjElN5rL/trunk/t/sheets
A    /tmp/tmp.gqTjElN5rL/trunk/t/sheets/s2-expected.css
A    /tmp/tmp.gqTjElN5rL/trunk/t/sheets/s2.css
A    /tmp/tmp.gqTjElN5rL/trunk/t/sheets/s3-expected.css
A    /tmp/tmp.gqTjElN5rL/trunk/t/sheets/s3.css
A    /tmp/tmp.gqTjElN5rL/trunk/MANIFEST
A    /tmp/tmp.gqTjElN5rL/trunk/META.yml
A    /tmp/tmp.gqTjElN5rL/trunk/lib
A    /tmp/tmp.gqTjElN5rL/trunk/lib/CSS
A    /tmp/tmp.gqTjElN5rL/trunk/lib/CSS/Minifier.pm
A    /tmp/tmp.gqTjElN5rL/trunk/Makefile.PL
A    /tmp/tmp.gqTjElN5rL/trunk/Changes
A    /tmp/tmp.gqTjElN5rL/trunk/README
Checked out revision 74332.
cp -a /tmp/tmp.gqTjElN5rL/unpdir/libcss-minifier-perl-0.01/. /tmp/tmp.gqTjElN5rL/trunk/.
svn commit -m [svn-inject] Applying Debian modifications (0.01-1) to trunk /tmp/tmp.gqTjElN5rL/trunk
Adding         trunk/debian
Adding         trunk/debian/changelog
Adding         trunk/debian/compat
Adding         trunk/debian/control
Adding         trunk/debian/copyright
Adding         trunk/debian/patches
Adding         trunk/debian/patches/debian-changes-0.01-1
Adding         trunk/debian/patches/series
Adding         trunk/debian/rules
Adding         trunk/debian/source
Adding         trunk/debian/source/format
Adding         trunk/debian/watch
Transmitting file data .........
Committed revision 74333.
svn up /tmp/tmp.gqTjElN5rL/trunk/debian
At revision 74333.
svn propset svn-bp:trunkUrl svn+ssh://svn.debian.org/svn/pkg-perl/trunk/libcss-minifier-perl /tmp/tmp.gqTjElN5rL/trunk/debian
property 'svn-bp:trunkUrl' set on '/tmp/tmp.gqTjElN5rL/trunk/debian'
svn propset svn-bp:tagsUrl svn+ssh://svn.debian.org/svn/pkg-perl/tags/libcss-minifier-perl /tmp/tmp.gqTjElN5rL/trunk/debian
property 'svn-bp:tagsUrl' set on '/tmp/tmp.gqTjElN5rL/trunk/debian'
svn propset svn-bp:upsCurrentUrl svn+ssh://svn.debian.org/svn/pkg-perl/branches/upstream/libcss-minifier-perl/current /tmp/tmp.gqTjElN5rL/trunk/debian
property 'svn-bp:upsCurrentUrl' set on '/tmp/tmp.gqTjElN5rL/trunk/debian'
svn propset svn-bp:upsTagUrl svn+ssh://svn.debian.org/svn/pkg-perl/branches/upstream/libcss-minifier-perl /tmp/tmp.gqTjElN5rL/trunk/debian
property 'svn-bp:upsTagUrl' set on '/tmp/tmp.gqTjElN5rL/trunk/debian'
svn commit -m [svn-inject] Setting svn-bp props /tmp/tmp.gqTjElN5rL/trunk/debian
Sending        trunk/debian

Committed revision 74334.
Storing trunk copy in /home/nicholas/svn/libcss-minifier-perl.
svn checkout svn+ssh://svn.debian.org/svn/pkg-perl/trunk/libcss-minifier-perl /home/nicholas/svn/libcss-minifier-perl -q
Done!
Checked out source is in /home/nicholas/svn/libcss-minifier-perl - have fun!
Removing tempdir /tmp/tmp.gqTjElN5rL.
Exit request sent.

That creates a new libcss-minifier-perl directory and inside a clean subversion workspace. We now build the package again using svn-buildpackage -us -uc. Quite often a package has not been quite this smooth so I usually run the lintian checks again. The only check that remains is to check that the package will actually build from scratch. I use pbuilder, which creates a chroot envionment, installs therein a minimal set of packages and tries to build the package. My chroot environment is already created so I can just go ahead and build.

So I run pbuilder and everything is fine, as you … Oh, um, actually the build process is writing to the files t/sheets/s2-got.css and t/sheets/s3-got.css and the change is getting summarized in an auto-generated patch. I did not notice that in the build above. This is the downside of Debian packaging. Most of them have some irritating little niggle. Anyway it turns out that the files are the output of a little regression script. All I need to do is have them cleaned up and the debian/clean exists for that purpose.

    echo t/sheets/s2-got.css >> debian/clean
    echo t/sheets/s3-got.css >> debian/clean
    svn add debian/clean
    svn rm debian/patches
    svn commit -m'cleaning up test results'

Now when I build the package it is clean and running pbuilder on the results also runs cleanly.

? cd ../build-area
? sudo pbuilder --build libcss-minifier-perl_0.01-1.dsc 
[sudo] password for nicholas: 
W: /root/.pbuilderrc does not exist
I: using fakeroot in build.
I: Current time: Fri May 13 21:47:41 BST 2011
I: pbuilder-time-stamp: 1305319661
I: Building the build Environment
I: extracting base tarball [/var/cache/pbuilder/base.tgz]
I: creating local configuration
I: copying local configuration
I: mounting /proc filesystem
I: mounting /dev/pts filesystem
I: policy-rc.d already exists
I: Obtaining the cached apt archive contents
I: Setting up ccache
I: Installing the build-deps
 -> Attempting to satisfy build-dependencies
 -> Creating pbuilder-satisfydepends-dummy package
Package: pbuilder-satisfydepends-dummy
Version: 0.invalid.0
Architecture: i386
Maintainer: Debian Pbuilder Team <pbuilder-maint@lists.alioth.debian.org>
Description: Dummy package to satisfy dependencies with aptitude - created by pbuilder
 This package was created automatically by pbuilder to satisfy the
 build-dependencies of the package being currently built.
Depends: debhelper (>= 7), perl
dpkg-deb: building package `pbuilder-satisfydepends-dummy' in `/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'.
Selecting previously deselected package pbuilder-satisfydepends-dummy.
(Reading database ... 10477 files and directories currently installed.)
Unpacking pbuilder-satisfydepends-dummy (from .../pbuilder-satisfydepends-dummy.deb) ...
dpkg: pbuilder-satisfydepends-dummy: dependency problems, but configuring anyway as you requested:
 pbuilder-satisfydepends-dummy depends on debhelper (>= 7); however:
  Package debhelper is not installed.
Setting up pbuilder-satisfydepends-dummy (0.invalid.0) ...
The following NEW packages will be installed:
  bsdmainutils{a} debhelper{a} file{a} gettext{a} gettext-base{a} 
  groff-base{a} html2text{a} intltool-debian{a} libcroco3{a} 
  libglib2.0-0{a} libmagic1{a} libpcre3{a} libpipeline1{a} libunistring0{a} 
  libxml2{a} man-db{a} po-debconf{a} 
The following packages are RECOMMENDED but will NOT be installed:
  autopoint curl libglib2.0-data libmail-sendmail-perl lynx-cur 
  shared-mime-info wget xml-core 
0 packages upgraded, 17 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/8786 kB of archives. After unpacking 26.4 MB will be used.
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously deselected package bsdmainutils.
(Reading database ... 10477 files and directories currently installed.)
Unpacking bsdmainutils (from .../bsdmainutils_8.2.2_i386.deb) ...
Selecting previously deselected package groff-base.
Unpacking groff-base (from .../groff-base_1.21-5_i386.deb) ...
Selecting previously deselected package libpipeline1.
Unpacking libpipeline1 (from .../libpipeline1_1.2.0-1_i386.deb) ...
Selecting previously deselected package man-db.
Unpacking man-db (from .../man-db_2.6.0.2-1_i386.deb) ...
Selecting previously deselected package libmagic1.
Unpacking libmagic1 (from .../libmagic1_5.04-5+b1_i386.deb) ...
Selecting previously deselected package file.
Unpacking file (from .../file_5.04-5+b1_i386.deb) ...
Selecting previously deselected package gettext-base.
Unpacking gettext-base (from .../gettext-base_0.18.1.1-3_i386.deb) ...
Selecting previously deselected package libpcre3.
Unpacking libpcre3 (from .../libpcre3_8.12-3_i386.deb) ...
Selecting previously deselected package libxml2.
Unpacking libxml2 (from .../libxml2_2.7.8.dfsg-2+b1_i386.deb) ...
Selecting previously deselected package html2text.
Unpacking html2text (from .../html2text_1.3.2a-15_i386.deb) ...
Selecting previously deselected package libglib2.0-0.
Unpacking libglib2.0-0 (from .../libglib2.0-0_2.28.6-1_i386.deb) ...
Selecting previously deselected package libcroco3.
Unpacking libcroco3 (from .../libcroco3_0.6.2-1_i386.deb) ...
Selecting previously deselected package libunistring0.
Unpacking libunistring0 (from .../libunistring0_0.9.3-4_i386.deb) ...
Selecting previously deselected package gettext.
Unpacking gettext (from .../gettext_0.18.1.1-3_i386.deb) ...
Selecting previously deselected package intltool-debian.
Unpacking intltool-debian (from .../intltool-debian_0.35.0+20060710.1_all.deb) ...
Selecting previously deselected package po-debconf.
Unpacking po-debconf (from .../po-debconf_1.0.16+nmu1_all.deb) ...
Selecting previously deselected package debhelper.
Unpacking debhelper (from .../debhelper_8.1.6_all.deb) ...
Setting up bsdmainutils (8.2.2) ...
update-alternatives: using /usr/bin/bsd-write to provide /usr/bin/write (write) in auto mode.
update-alternatives: using /usr/bin/bsd-from to provide /usr/bin/from (from) in auto mode.
Setting up groff-base (1.21-5) ...
Setting up libpipeline1 (1.2.0-1) ...
Setting up man-db (2.6.0.2-1) ...
Building database of manual pages ...
Setting up libmagic1 (5.04-5+b1) ...
Setting up file (5.04-5+b1) ...
Setting up gettext-base (0.18.1.1-3) ...
Setting up libpcre3 (8.12-3) ...
Setting up libxml2 (2.7.8.dfsg-2+b1) ...
Setting up html2text (1.3.2a-15) ...
Setting up libglib2.0-0 (2.28.6-1) ...
No schema files found: doing nothing.
Setting up libcroco3 (0.6.2-1) ...
Setting up libunistring0 (0.9.3-4) ...
Setting up gettext (0.18.1.1-3) ...
Setting up intltool-debian (0.35.0+20060710.1) ...
Setting up po-debconf (1.0.16+nmu1) ...
Setting up debhelper (8.1.6) ...
[100%] Writing extended state information                                         
Current status: 0 broken [-1].
 -> Finished parsing the build-deps
Reading package lists...
Building dependency tree...
Reading state information...
The following NEW packages will be installed:
  fakeroot
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/117 kB of archives.
After this operation, 451 kB of additional disk space will be used.
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously deselected package fakeroot.
(Reading database ... 11794 files and directories currently installed.)
Unpacking fakeroot (from .../fakeroot_1.15.1-1_i386.deb) ...
Processing triggers for man-db ...
Setting up fakeroot (1.15.1-1) ...
update-alternatives: using /usr/bin/fakeroot-sysv to provide /usr/bin/fakeroot (fakeroot) in auto mode.
I: Copying back the cached apt archive contents
I: Copying source file
I: copying [libcss-minifier-perl_0.01-1.dsc]
I: copying [./libcss-minifier-perl_0.01.orig.tar.gz]
I: copying [./libcss-minifier-perl_0.01-1.debian.tar.gz]
I: Extracting source
dpkg-source: warning: extracting unsigned source package (libcss-minifier-perl_0.01-1.dsc)
dpkg-source: info: extracting libcss-minifier-perl in libcss-minifier-perl-0.01
dpkg-source: info: unpacking libcss-minifier-perl_0.01.orig.tar.gz
dpkg-source: info: unpacking libcss-minifier-perl_0.01-1.debian.tar.gz
I: Building the package
I: Running cd tmp/buildd/*/ && dpkg-buildpackage -us -uc  -rfakeroot
dpkg-buildpackage: export CFLAGS from dpkg-buildflags (origin: vendor): -g -O2
dpkg-buildpackage: export CPPFLAGS from dpkg-buildflags (origin: vendor): 
dpkg-buildpackage: export CXXFLAGS from dpkg-buildflags (origin: vendor): -g -O2
dpkg-buildpackage: export FFLAGS from dpkg-buildflags (origin: vendor): -g -O2
dpkg-buildpackage: export LDFLAGS from dpkg-buildflags (origin: vendor): 
dpkg-buildpackage: source package libcss-minifier-perl
dpkg-buildpackage: source version 0.01-1
dpkg-buildpackage: source changed by Nicholas Bamber <nicholas@periapt.co.uk>
dpkg-buildpackage: host architecture i386
 dpkg-source --before-build libcss-minifier-perl-0.01
 fakeroot debian/rules clean
dh clean
   dh_testdir
   dh_auto_clean
   dh_clean
 dpkg-source -b libcss-minifier-perl-0.01
dpkg-source: info: using source format `3.0 (quilt)'
dpkg-source: info: building libcss-minifier-perl using existing ./libcss-minifier-perl_0.01.orig.tar.gz
dpkg-source: info: building libcss-minifier-perl in libcss-minifier-perl_0.01-1.debian.tar.gz
dpkg-source: info: building libcss-minifier-perl in libcss-minifier-perl_0.01-1.dsc
 debian/rules build
dh build
   dh_testdir
   dh_auto_configure
Checking if your kit is complete...
Looks good
'CREATE_PACKLIST' is not a known MakeMaker parameter name.
Writing Makefile for CSS::Minifier
   dh_auto_build
make[1]: Entering directory `/tmp/buildd/libcss-minifier-perl-0.01'
cp lib/CSS/Minifier.pm blib/lib/CSS/Minifier.pm
Manifying blib/man3/CSS::Minifier.3pm
make[1]: Leaving directory `/tmp/buildd/libcss-minifier-perl-0.01'
   dh_auto_test
make[1]: Entering directory `/tmp/buildd/libcss-minifier-perl-0.01'
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/CSS-Minifier.t .. t/CSS-Minifier.t .. 1/4                          t/CSS-Minifier.t .. ok
All tests successful.
Files=1, Tests=4,  0 wallclock secs ( 0.08 usr  0.02 sys +  0.11 cusr  0.00 csys =  0.21 CPU)
Result: PASS
make[1]: Leaving directory `/tmp/buildd/libcss-minifier-perl-0.01'
 fakeroot debian/rules binary
dh binary
   dh_testroot
   dh_prep
   dh_installdirs
   dh_auto_install
make[1]: Entering directory `/tmp/buildd/libcss-minifier-perl-0.01'
Installing /tmp/buildd/libcss-minifier-perl-0.01/debian/libcss-minifier-perl/usr/share/perl5/CSS/Minifier.pm
Installing /tmp/buildd/libcss-minifier-perl-0.01/debian/libcss-minifier-perl/usr/share/man/man3/CSS::Minifier.3pm
make[1]: Leaving directory `/tmp/buildd/libcss-minifier-perl-0.01'
   dh_install
   dh_installdocs
   dh_installchangelogs
   dh_installexamples
   dh_installman
   dh_installcatalogs
   dh_installcron
   dh_installdebconf
   dh_installemacsen
   dh_installifupdown
   dh_installinfo
   dh_installinit
   dh_installmenu
   dh_installmime
   dh_installmodules
   dh_installlogcheck
   dh_installlogrotate
   dh_installpam
   dh_installppp
   dh_installudev
   dh_installwm
   dh_installxfonts
   dh_installgsettings
   dh_bugfiles
   dh_ucf
   dh_lintian
   dh_gconf
   dh_icons
   dh_perl
   dh_usrlocal
   dh_link
   dh_compress
   dh_fixperms
   dh_strip
   dh_makeshlibs
   dh_shlibdeps
   dh_installdeb
   dh_gencontrol
   dh_md5sums
   dh_builddeb
dpkg-deb: building package `libcss-minifier-perl' in `../libcss-minifier-perl_0.01-1_all.deb'.
 dpkg-genchanges  >../libcss-minifier-perl_0.01-1_i386.changes
dpkg-genchanges: including full source code in upload
 dpkg-source --after-build libcss-minifier-perl-0.01
dpkg-buildpackage: full upload (original source is included)
I: Copying back the cached apt archive contents
I: unmounting dev/pts filesystem
I: unmounting proc filesystem
I: cleaning the build env 
I: removing directory /var/cache/pbuilder/build//17170 and its subdirectories
I: Current time: Fri May 13 21:52:11 BST 2011
I: pbuilder-time-stamp: 1305319931

So now we can return to the source directory and release the package for a Debian developer.

    dch --release --no-force-save-on-release
    svn commit -m'releasing'

And soon enough the Package Entropy Tracker has picked up that the package is available for review.

pet.cgi#for_upload

A package is born

The following morning things have already moved on. Since the initial svn inject, all the subversion commits have been echoed to the Debian Perl Group's IRC channel via a bot.

(00:08:55) KGB-2: pkg-perl gregoa tags r74355 libcss-minifier-perl 0.01-1; (00:08:55) KGB-2: pkg-perl tagging version 0.01-1

Now I have already moved onto other stuff, when I find that the package has been rejected by the FTP masters.

Subject: libcss-minifier-perl_0.01-1_i386.changes REJECTED
Sender: Ansgar Burchardt <ansgar@franck.debian.org>

Hi,

the license information for the upstream source is missing from
debian/copyright.

Regards,
Ansgar

How could this have happened? I checked the README file and it has a clear copyright statement, the package was lintian clean and the hawk-eyed developer missed it. Anyway the issue is easily fixed and there is a little chat about it.

(11:41:18) ansgar: gregoa: libcss-minifier-perl's debian/copyright has 'License: [nothing here]'.; (11:42:09) ansgar: periapt: ^^^; (11:49:24) periapt: ansgar: How come Lintian did not pick that up.; (11:54:06) KGB-0: pkg-perl periapt-guest r74383 libcss-minifier-perl debian/copyright; (11:54:06) KGB-0: pkg-perl missing license; (11:55:25) periapt: ansgar: Aslo does that require a new version?; (11:55:58) ansgar: periapt: No. But remove the tag for the old one from svn.; (11:56:48) periapt: ansgar: Is that something I do?; (12:02:36) ansgar: periapt: svn rm svn+ssh://svn.debian.org/svn/pkg-perl/tags/libcss-minifier-perl/0.01-1

Finally this time it worked.

Subject: libcss-minifier-perl_0.01-1_i386.changes ACCEPTED into unstable
Sender: Archive Administrator <dak@franck.debian.org>

Accepted:
libcss-minifier-perl_0.01-1.debian.tar.gz
  to main/libc/libcss-minifier-perl/libcss-minifier-perl_0.01-1.debian.tar.gz
libcss-minifier-perl_0.01-1.dsc
  to main/libc/libcss-minifier-perl/libcss-minifier-perl_0.01-1.dsc
libcss-minifier-perl_0.01-1_all.deb
  to main/libc/libcss-minifier-perl/libcss-minifier-perl_0.01-1_all.deb
libcss-minifier-perl_0.01.orig.tar.gz
  to main/libc/libcss-minifier-perl/libcss-minifier-perl_0.01.orig.tar.gz


Override entries for your package:
libcss-minifier-perl_0.01-1.dsc - optional perl
libcss-minifier-perl_0.01-1_all.deb - optional perl

Announcing to debian-devel-changes@lists.debian.org
Closing bugs: 626005 


Thank you for your contribution to Debian.

What can be made better?

The exercise showed something I knew but did not expect to come up. Nowadays the Debian packages are encouraged (but not obliged) to use a standard format for copyright, known as DEP-5. This format is both machine-readable and human-readable. However it is still relatively new and I am aware of only one tool, Config::Model that can validate it. Unfortunately it is a bit awkward for me. I would prefer something integrated into lintian, and indeed there is a request to that effect.

Nicholas Bamber, 16th May 2011
 
Behind the magic there has to be technology:
Valid XHTML 1.0 Transitional Valid Robots.txt Ethical Junction Member 2010 Sitemap ©2009-11 Periapt Technologies Ltd