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=lowThe 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