upload - Debian Perl Group uploading how-to
Some of the steps here are svn-specific. For git please look into https://perl-team.pages.debian.net/git.html. The rest of Russ' how-to is still very helpful ... -- gregoa
The Debian Perl Group has a lot of active contributors, many of whom are not full Debian Developers and hence do not have upload privileges. One of the main ways that Debian Developers can help the group is to upload pending updates from Subversion, either after a request on the group mailing list or after looking at http://pet.debian.net/pkg-perl/pet.cgi and seeing packages in need of uploading.
This step-by-step tutorial lays out one way of processing an upload, suggesting verification steps and checks. It covers uploading work that's already been committed to the Subversion repository and doesn't cover how to do new work, create new packages, or upgrade packages to new upstream versions.
Note that packages should only be uploaded if the distribution in the changelog header is already set to
Packages with a distribution of
UNRELEASED are still being worked on and shouldn't be uploaded without confirmation from the person who made the last changes or someone who regularly works on that package.
Create a working area if you haven't done this before and cd into it. From this point on, I'll assume that all actions take place in that working area. I find it useful to create a directory only for Debian Perl Group work separate from the rest of my Debian work.
In that working area, create subdirectories:
mkdir build-area tarballs old
The first two are used by
svn-buildpackage. The last is used below for package comparisons.
Check out a package from the repository that you're going to upload:
svn co svn+ssh://svn.debian.org/svn/pkg-perl/trunk/<package>
This will check it out into a directory named after the package inside your working area, which is what you want. Be sure to not add a username before svn.debian.org (no user@). If you do,
svn-buildpackage --svn-tag will fail later. Instead, if your local username doesn't match your username on svn.debian.org, edit ~/.ssh/config and add a stanza like:
Host svn.debian.org User <user>
where <user> is your username on svn.debian.org.
Review debian/changelog to understand what you're uploading.
If you're not already in Uploaders, add yourself.
Update the signature and timestamp for the package with:
(and then exit the editor if you don't need to change anything else). This will also change the signature of the most recent changelog entry to you.
Commit those changes with
Download the upstream tarball. If this is just a Debian revision of a package already in the archive, do that with:
cd tarballs apt-get -t unstable source -d --tar-only <package>
Otherwise, cd to the package directory and run:
uscan --force-download --rename --destdir ../tarballs
and double-check that the upstream URL from which
uscan downloaded the tarball looks reasonable.
Build the package with:
(I assume that your ~/.svn-buildpackage.conf file is already set up with the options you want to use, set up to build in an unstable chroot if needed, and so forth.)
Go to the build-area directory and do a basic sanity check on the package:
lintian -iI *.changes lsdiff -z *.diff.gz debc *.changes
lsdiff (from the patchutils package) will tell you if there are any changes outside of the debian directory; if so, they may be accidental or the package maybe should use quilt, but in any case they're worthy of special review.
debc shows you the metadata (
dpkg -I) and contents (
dpkg -c) for each built package.
If the package already exists in the archive, see what changed. Go to the old directory created above, and then download the current package:
apt-get -t unstable source -d <package>
(Obviously, do this on a system with unstable in the apt sources.list.) Then cd up one directory, to the top of your working directory, and compare the new and old package with debdiff:
debdiff old/*.dsc build-area/*.dsc | less
For the wildcards to work, you'll need to delete the contents of your build-area and old directories after you finish with each package. Make sure the changes look reasonable.
debsign the *.changes file in build-area and the
dupload it to the archive.
Change directories back to the checkout of the package and tag it:
svn-buildpackage --svn-tag --svn-tag-only
Be sure that you've configured
svn-buildpackage not to modify debian/changelog after a tag, or if you haven't, add the
Copyright (c) 2007 by the individual authors and contributors noted above. All rights reserved. This document is free software; you may redistribute it and/or modify it under the same terms as Perl itself
Perl is distributed under your choice of the GNU General Public License or the Artistic License. On Debian GNU/Linux systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL and the Artistic License in /usr/share/common-licenses/Artistic.