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
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.
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:
README file is standard boilerplate and we do not install
those. So I remove the debian/libcss-minifier-perl.docs file.debian/control file looks okay apart from a line of bolierplate right at the end. So I remove that.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.The source tar ball is missing so I download it again.
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: 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.
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.

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.
Finally this time it worked.
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.
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.