PythonModulesTeam
Getting package into Debian through the Python Modules Team
General
If you have a Python package that you would like to push upstream to Debian, you can easily do it through the Debian Python Modules Team.
In Debian, you can only upload to their repositories if you are a "Debian Developer" or DD. This is very similar to being a MOTU for Universe or a Core Dev for Main in Ubuntu. 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. They are very open to contributions from Ubuntu and to participation by people that are not experts. The team web page can be found here:
http://python-modules.alioth.debian.org/
The team has two primary communication media:
- 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 dirs of their packages in the svn repository.
The team has a team policy document that describes how to use the svn repository and other packaging policies:
http://python-modules.alioth.debian.org/python-modules-policy.html
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:
http://www.debian.org/devel/wnpp/
There is a good (but long) FAQ about packaging for non-DD's here:
http://people.debian.org/~mpalmer/debian-mentors_FAQ.html
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 very similar to REVU for Debian).
The general process is to develop the debian dir for your package and then commit it to the packagename/trunk directory in the team svn repository and 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 dir in svn at packagname/tags/version-number/. 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, make sure to work through whoever is listed in the Maintainer field unless they tell 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):
http://ftp-master.debian.org/new.html
You will also have a single page you can monitor the status of all of your packages at:
http://qa.debian.org/developer.php?login=''email@address
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://login@svn.debian.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. You can also browse the repository via the web: http://svn.debian.org/wsvn/python-modules/
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: https://wiki.ubuntu.com/DebootstrapChroot
You should also use pbuilder to ensure that your packages will build in a clean build environment. General Ubuntu pbuilder information is here: https://wiki.ubuntu.com/PbuilderHowto You can find a pbuilder script for Sid here: http://revu.tauware.de/~laserjock/pbuilder-sid
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://login@svn.debian.org/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: svn-buildpackage --svn-tag-only
Ubuntu is derived from Debian and packaging for the two distributions is very similar.
In virutally all cases you will be uploading your package to Tools
Subversion
Sid chroot
pbuilder
svn-inject and svn-buildpackage
Debian differences
Release naming
Patching
In Ubuntu, small changes are often allowed to the source files direct, 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 the exceptions. dpatch, quilt or simple-patchsys are recommended if you're using CDBS.
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 Upload) here.
Are you working on a existing python-modules package ? - Add you name in the Uploaders field. - Don't touch the Maintainers field and the existing entries in the Uploaders field, make sure that Python Modules Team is there.
Note: If lintian complains about a lack of NMU versioning when you build the source package, you made a mistake in your control file.