Getting a package into Debian through the Python Modules Team
If you have a Python package that you would like to push upstream to Debian, you can do it easily through the Debian Python Modules Team. Note that this team only deals with Python Modules, not Python applications. You can (as detailed below) upload your Python application packages to mentors and look for a sponsor on the team's IRC channel, or you can use the Python Applications Packaging Team.
In Debian, you can only upload to their repositories if you are a "Debian Developer" (DD). This requirement is analogous to requiring an MOTU (for Ubuntu Universe) or a core-dev (for Ubuntu Main) to upload to Ubuntu's repositories. You will have to work through a DD to get your packages uploaded to Debian. For Python packages, this is easily done through the Python Modules Team, which is open to contributions from Ubuntu and to participation by people who are not experts. The team web page can be found here:
The team has two primary communication media:
- Internet Relay Chat (IRC) - #debian-python on irc.oftc.net
Mailing List - http://lists.debian.org/debian-python/
The first step is create an alioth account (Gforge) at http://alioth.debian.org. Your account will be username-guest. Then ask to be added to the Debian Python Modules Team. You can do this via either the mailing list or the IRC channel. You will be able to help the team with more than 50 packaged modules into the svn repository and of course add new ones. The team maintains the debian subdirectories of their source packages in the svn repository.
The team has a policy document that describes how to use the svn repository and other packaging policies:
To bring your new package into Debian, you will first need to file an Intent To Package (ITP) bug against the wnpp package. The process for this is described here:
There is a good (but lengthy) FAQ about packaging for non-DDs here:
You will also want to make an account on mentors.debian.net so that you have a place to upload your packages for your sponsor to review (this site provides a function for Debian very similar to that provided by REVU for Ubuntu). When you have a package ready for review, add it to:
The general process is to develop the debian subdirectory for your package and then commit it to the packagename/trunk directory in the team svn repository. Then, if you want, you can ask on IRC for an experienced member of the team to review it. Once you are confident of your package, you build a signed source package and upload it (to either mentors or sponsors). Then you can ask on IRC for a DD to review it. Once it's been blessed by your sponsor and uploaded, you then tag the final debian subdirectory in svn at packagename/tags/version-number/ (use svn-buildpackage for this - see below). Your work is done. You will be notified via e-mail that your package has been uploaded.
Note: If you are updating an existing package, and an invdividual (not the team), is listed in the Maintainer field make sure to work through that individual, unless he/she tells you otherwise.
Next (much like Ubuntu), your new package will go to the Debian NEW queue for review before it is added to the Debian repositories. You can follow the status of the NEW queue here (the page is uploaded roughly once an hour, so don't sit there and click refresh on your browser):
You will also have a single page you can monitor the status of all of your packages at:
Many of the tools used to package for Debian will be the same as you use in Ubuntu.
If you haven't used svn before, you will want to study the documentation and basic commands a bit. To check out the team svn package repository, the command is:
svn co svn+ssh://firstname.lastname@example.org/svn/python-modules/packages/
If you don't have your ssh pass phrase cached locally, you will be asked for your alioth password multiple (three) times when you do this. The method for setting up svn+ssh is described here:
You can also browse the repository via the web:
Unless you have also installed Debian, you will want a Debian chroot. The process for setting up a chroot on an Ubuntu system (including a Debian Sid chroot) is here:
You should also use pbuilder to ensure that your packages will build in a clean build environment. General Ubuntu pbuilder information is here:
You can find a pbuilder script for Sid here:
svn-inject and svn-buildpackage
You will need these two tools to add your packages to the repository and tag the different versions uploaded to the Debian archive.
If it is your initial upload to the repository, svn-inject will help you create the appropriate directory structure:
svn-inject -o your-package_0.1-1.dsc svn+ssh://email@example.com/svn/python-modules/packages/
Note: Do not forget the /packages/ suffix.
Each time a new version of the package is uploaded to the Debian archive, you should tag it in the repository running the following command in the 'your-package' directory:
Ubuntu is derived from Debian and packaging for the two distributions is very similar.
In virtually all cases, you will be uploading your package to unstable. Debian releases have names (from the characters in the movie Toy Story), but the initial point of upload is almost always unstable (always known as Sid).
In Ubuntu, small changes are often allowed to the source files directly, but the Debian approach as a whole is 'always use a patch system' for such changes. There are exceptions and errors, but a package entering Debian isn't one of the exceptions. dpatch, quilt or CDBS's simple-patchsys is recommended. Information on how to set up and use patching systems is here:
Maintainer/Uploaders control fields
Are you working on a new python-modules package ? - List your name and email address as maintainer, you're the primary maintainer and responsible. - List Python Modules Team in the Uploaders field, it will give the group a clue about the package and carte blanche for uploads; there are no NMUs (Non-Maintainer Uploads) here.
Are you working on a existing python-modules package ? - Add your name in the Uploaders field. - Don't touch the Maintainers field or the existing entries in the Uploaders field; make sure that Python Modules Team is present.
Note: If lintian complains about a lack of NMU versioning when you build the source package, you've made a mistake in your control file.