Debian Packaging Guide

This is a quick set of instructions for packaging Parrot for Debian. See the Debian New Maintainer's Guide (http://www.debian.org/doc/maint-guide) for more information. The Ubuntu Packaging Guide is also a good resource (http://doc.ubuntu.com/ubuntu/packagingguide/C/).

This guide assumes that you're running in a chroot environment set up as in: http://www.perlfoundation.org/parrot/index.cgi?debian_chroot_setup. For other configurations, see that page for a list of Debian packages you will need to install before building the Parrot packages.

To package Parrot for Debian:

0.

Download the latest tarball.

1.

Compile it and run the tests, just to be sure the tarball is sound (especially useful if you're running in a chroot environment different than your usual dev environment).

2.

Create a new directory. (The name is irrelevant, but we'll use ~/deb/parrot for the sake of illustration.)

Create a fresh extract of the tarball in the ~/deb/parrot directory. The directory should be named "parrot-<version>" (it will be by default).

Copy the debian/ directory from the Parrot source tree into the fresh tarball extract.

cp -r <path/to/parrot/svn>/ports/debian ~/deb/parrot/parrot-<version>/.

Copy the original tarball into ~/deb/parrot, naming it "parrot_<version>.orig.tar.gz" (note the "_" in place of dash).

3.

Update the debian/parrot-doc.docs file by running the script tools/dev/debian_docs.sh in the Parrot repository.

4.

Update the debian/changelog file in ~/deb/parrot/parrot-<version>/. The format of the changelog file is strict (automatically parsed). The first line of the log entry gives the package version and categorization. For a new version upload, the version number is the Parrot version number followed by -1. For example:

parrot (0.5.1-1) unstable; urgency=low

The next few lines are the changelog record entries. These record changes in the Debian packaging of Parrot, not changes in Parrot itself. New package versions should include the line:

* New upstream release.

Please note any closed bugs related to the Parrot packages with an entry that includes the text "(Closes: #<bugnum>)".

The final line gives the maintainer's name, email address, and the date. The date must be in RFC822 format, and can be generated by running date -R. (Note that two spaces are required between the email and the date.)

-- Your Name <you@example.org>  Sun, 30 Dec 2007 17:21:45 +0000
5.

Update the debian/control.in file in ~/deb/parrot/parrot-<version>/. Make sure you are listed in "Uploaders". The "Maintainer" will always be "Debian Parrot Maintainers <pkg-parrot-devel@lists.alioth.debian.org>".

6.

Update the debian/copyright file in ~/deb/parrot/parrot-<version>/. Check for any removed files that no longer need copyright notices. Update the years in the Perl Foundation copyright line if needed.

7.

Regenerate the debian/control file from ~/deb/parrot/parrot-<version>/:

$ debian/rules debian/control
8.

Install all dependencies:

$ sudo /usr/lib/pbuilder/pbuilder-satisfydepends
9.

Build the packages. From ~/deb/parrot/parrot_<version>/, run:

$ export DEBSIGN_KEYID="<gpg key id>"
$ debuild
10.

Check the package for errors. From ~/deb/parrot, run:

$ lintian -i parrot_<version>.changes
$ linda -i parrot_<version>.changes
11.

Commit all changes made to the files in the debian/ directory to the Parrot repository. (Skip the generated debian/control file.)

SEE ALSO

README, RESPONSIBLE_PARTIES.

Appendix 1

Parrot Debian Release Managers

- Allison Randal
- Nuno Carvalho
- Patrick Michaud

Parrot Debian Sponsors

- Colin Watson
- Jeff Bailey
- Benjamin Mako Hill

Appendix 2

Set up instructions for new Debian Parrot release managers.

0.

Create an account on http://alioth.debian.org and request to join the group pkg-parrot.

1.

If you will be uploading through a sponsor, create an account on http://mentors.debian.net.

2.

Set up a chroot environment for building packages. See <http://www.perlfoundation.org/parrot/index.cgi?debian_chroot_setup>.

13 POD Errors

The following errors were encountered while parsing the POD:

Around line 24:

Expected text after =item, not a number

Around line 30:

Expected text after =item, not a number

Around line 46:

Expected text after =item, not a number

Around line 51:

Expected text after =item, not a number

Around line 76:

Expected text after =item, not a number

Around line 82:

Expected text after =item, not a number

Around line 88:

Expected text after =item, not a number

Around line 94:

Expected text after =item, not a number

Around line 100:

Expected text after =item, not a number

Around line 107:

Expected text after =item, not a number

Around line 114:

Expected text after =item, not a number

Around line 150:

Expected text after =item, not a number

Around line 155:

Expected text after =item, not a number