Package from CPAN for the Debian Perl team
Become a contributor
Create an Alioth account
Go to on the register page of Alioth, and create a new account. After have confirmed by e-mail, you will have a username ended by -guest.
Introduce yourself on the mailing list
First, register you to the debian-perl mailing list.
Then, simply send an e-mail to firstname.lastname@example.org:
Hi all, I'm a perl user and Debian fan since a long time. I'm a French - my English is not perfect - engineering student in IT. I never have the opportunity to contribute directly to Debian, but I'm a local active militant of the free software, and free - and neutral and decentralized - Internet. I'm the president of Lorraine Data Network, a french ISP.  http://ldn-fai.net Since a few years, I'm looking for contribute to Debian. Some of my friends are Debian developer or maintainer - use is cool, contribute is better. The author of the young - but very active - Curses::Toolkit library  wishes I package his work.  http://search.cpan.org/dist/Curses-Toolkit I'm not currently a Debian maintainer, but it's an opportunity for me to start, with you. The author announced a near important release, and with your agreement, I would offer a first package on the subversion. My username in Alioth is ju-guest. Cheers, ju.
After some "Welcome aboard" from nice contributors:
Welcome! I've added you to the pkg-perl project on alioth now. Please take a look on the docs about our packaging guidelines and policies, if not done already .  http://wiki.debian.org/Teams/DebianPerlGroup/Welcome And don't hesitate to ask any questions here on the list or on IRC (#debian- perl @ irc.debian.org/OFTC)
On your Alioth profile, below Project Info:
This developer is a member of the following projects: Debian Perl Group (Junior Developer)
How to package
We'll try to package the fake module Eatmytux::Demo (this one is not available from CPAN, but should be). So, the corresponding Debian name is libeatmytux-demo-perl (according the rule ^lib + s/::/-/g + -perl$).
Create an ITP
A new package must close an ITP (Intent To Package) bug, so you need to create one.
Install reportbug and devscripts:
# apt-get install reportbug devscripts
First checks if your lib is really not in Debian:
$ rmadison libeatmytux-demo-perl
Then, checks if there isn't already an ITP for it with the unofficial WNPP web frontend.
If it's okay, retrieve the short description from the CPAN page:
NAME ^ Eatmytux::Demo - a demonstration lib
Then use reportbug, with a personnal SMTP:
reportbug\ --email@example.com\ --realname="Julien Vaubourg"\ --smtphost=mail.eatmytux.com\ --smtpuser=ju\ --tls\ --list-cc firstname.lastname@example.org\ wnpp
Choose ITP, enter the package name, then a short description:
[...] 1 ITP This is an `Intent To Package'. [...] 2 O The package has been `Orphaned'. [...] 3 RFA This is a `Request for Adoption'. [...] 4 RFH This is a `Request For Help'. [...] 5 RFP This is a `Request For Package'. [...] Choose the request type: 1 Please enter the proposed package name: libeatmytux-demo-perl Checking status database... Please briefly describe this package; [...]: Eatmytux::Demo - A demonstration lib Your report will be carbon-copied to debian-devel, per Debian policy. Querying Debian BTS for reports on wnpp (source)... ^CUnable to connect to Debian BTS; continue [y|N|?]? y
When reportbug displays Querying Debian BTS, use Ctrl+c to stop it. Otherwise, it's a very long step since it download a huge index file in order to check if there are any similar ITP existing (the BTS would be better to use bunny).
So, answer y to the continue? question, and complete some fields with using the CPAN module page:
Subject: ITP: libeatmytux-demo-perl -- A demonstration lib Package: wnpp Owner: Julien Vaubourg <email@example.com> Severity: wishlist *** Please type your report below this line *** * Package name : libeatmytux-demo-perl Version : 0.1 Upstream Author : Julien Vaubourg <firstname.lastname@example.org> * URL : http://search.cpan.org/~ju/Eatmytux-Demo-0.1/ * License : Artistic 1, GPL 1 Programming Lang: Perl Description : Eatmytux::Demo - A demonstration lib Eatmytux::Demo module tries to be a good demonstration, based on the real life. It's a meta package, used by eatmytux.com as part of a tutorial.
When you find "you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.", the license is Artistic 1, GPL 1.
Save your document and close it:
Spawning sensible-editor... Report will be sent to "Debian Bug Tracking System" <email@example.com> Submit this report on wnpp (e to edit) [Y|n|a|c|e|i|l|m|p|q|d|t|s|?]? Y
Enter your SMTP password, and it's ok:
Connecting to mail.eatmytux.com via SMTP... Enter SMTP password for firstname.lastname@example.org: Bug report submitted to: "Debian Bug Tracking System" <email@example.com> Copies sent to: Debian Bug Tracking System <firstname.lastname@example.org> Julien Vaubourg <email@example.com> Copies will be sent after processing to: firstname.lastname@example.org email@example.com [...]
You will receive an e-mail directly:
ITP: libeatmytux-demo-perl -- Eatmytux::Demo - A demonstration lib
And the same, but with a bug number, on the list:
Bug#637200: ITP: libeatmytux-demo-perl -- Eatmytux::Demo - A demonstration lib
Package it from CPAN
You will need some tools;
# apt-get install git git-buildpackage pristine-tar build-essential dh-make-perl pbuilder quilt apt-file
Be careful to have a recent version of dh-make-perl (>= 0.74).
The first time, think to configure correctly Git:
$ git config --global user.name "Julien Vaubourg" $ git config --global user.email firstname.lastname@example.org
Then import the sources and configure automatically the debian files (change the DEBFULLNAME and the three last values):
DEBFULLNAME='Julien Vaubourg' dh-make-perl\ --requiredeps\ -dh 8 --pkg-perl\ --source-format '3.0 (quilt)'\ --dist sid\ --vcs git\ -e email@example.com\ --cpan Eatmytux::Demo\ --closes 637200
The value of closes is the bug number that was retrieved in the last ITP e-mail.
If your cpan command is not already configured, choose the default for all questions, and choose a cpan miror.
And in order to avoid to respond these questions the next time, you can save it:
$ cpan [ same questions ] cpan> o conf commit cpan> exit
$ cd Eatmytux-Demo-0.1/
Your friend dh-make-perl you really helped. But, there are a lot of checks to be done: this is the tricky part.
Please, read the official Perl team policy.
Here are all the comments that I've ever had (as a standard, d/ represents debian/).
- Replace the Format field content with a URL like http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=248 (find the last version of rev)
- Remove the DISCLAIMER paragraph at the top
- Missing year(s) of upstream copyright
- If the license is unknown from the CPAN, you can use the default copyright statement (as in e.g. libweb-scraper-perl/debian/copyright)
- Missing inc/* (if there are special files in the upstream, add the corresponding copyright section)
- Remove perl-modules from D-B-I (Build-Depends-Indep), perl is enough
- Move perl a the top of the D-B-I list (purely esthetic)
- Don't indicate version for libtemplate-perl
- Use the last debhelper version (currently 8, defined directly with the call of dh-make-perl), and in d/compat
- Checks if the standards-version is the last (currently 3.9.2, it's already done if you have a recent dh-make-perl, and lintian will tell you if it's wrong)
- The short description (the part on the same line than Description:) should be used with: "$package is a $sortdescription". So, no capitalize the first letter, and use an noun syntaxe ("module for *-ing...")
- Replace all this module by the module name
- Remove POD styles from short and long description (e.g. "C
" => "foobar", Eatmytux::Demo|Eatmytux::Demo => Eatmytux::Demo)
- The module name must be mentioned at least once in the long description
- Shorten the size of the short and long descriptions if it too long or these lines are too long (lintian will tell you if it's wrong)
- Remove the dh-make-perl boilerplate from the bottom
Checks if there are not dependencies missing, if so add it in Build-Depends-Indep and/or Depends:
$ grep -r 'use ' .
Some nice tools for that:
- apt-file search -l Eatmytux/Demo.pm : find out the corresponding package
- corelist -a Eatmytux::Demo to find out when a dual-lifed module was integrated into perl core
- rmadison libeatmytux-demo-perl to find out in which sources is the package
- Remove all .docs
- Remove debian.bak/ if exists
- Sometimes, there are some errors in the upstream (like manual spelling), if so create a patch
(these lists will be regularly updated)
Build your package
The first time:
# pbuilder --create --distribution sid # apt-file update
Build, and monitor possible errors (from the source directory, above d/):
When it's finished, checks your package with lintian:
$ cd /var/cache/pbuilder/result $ lintian -i -I --show-overrides --pedantic --color auto libeatmytux-demo-perl_0.1-1.dsc
If there are some messages, fix your debian files, use pdebuild again, and rechecks it (e.g. an outdated version of a file, a renamed field, etc.).
Try your package:
# dpkg -i libeatmytux-demo-perl_0.1-1_all.deb
Nice work :).
You can change UNRELEASED by unstable in d/changelog.
Commit your work
In your Alitoh account (on the top-right), choose Edit Keys at the bottom, and add a public key.
Warning: DSA doesn't work, use a RSA key.
Then, add to your ~/.ssh/config:
Host git.debian.org User ju-guest IdentityFile /home/ju/.ssh/id_rsa
Create the repo
Log you directly to the git server (doc), and create a new repo:
$ ssh git.debian.org $ cd /git/pkg-perl/packages/ $ ../setup-repository libdevel-hide-perl 'Packaging of Eatmytux::Demo in Debian'
From your local folder:
$ git commit -am 'Initial Release' $ git push --all --set-upstream
It's not a problem if there are three "remote: fatal: Invalid revision range".
Verification and validation
Regularly, update your local repo:
$ git pull
It's likely that d/changelog will update with a TODO.
Applied it, rechange UNRELEASED by unstable, and commit:
$ git commit -am "Applied TODO (thx gregor)" $ git push
When it's okay
You will receive some e-mails as:
- Processed: tagging as pending bugs that are closed by packages in NEW
- libeatmytux-demo-perl_0.1-1_i386.changes ACCEPTED into unstable
- Bug#637200 closed by Julien Vaubourg < firstname.lastname@example.org > (Bug#637200: fixed in libeatmytux-demo-perl 0.1-1)
- Bug#637200: marked as done (ITP: libeatmytux-demo-perl -- Eatmytux::Demo - A demonstration lib)
- Last update in January 2012