The way to go is to upload once for every Ubuntu version.
Launchpad won't build packages for Ubuntu versions that are no longer supported, and only build a package for one specific version of Ubuntu. The targeted version is (as you already know) specified in the changelog
file, by the newest entry!
Remember to be aware that the packages your program depends on might not be available at the same version across all versions of Ubuntu.
You also talk about "multi-architecture" (architecture = CUP type, eg. x86, LPIA, AMD64) this makes no difference since every package uploaded is build for all available architectures as long as you have Architecture: any
in the package definition (debian/control
) file, this also allows you to make the package depend on different packages for different architectures (be defining the package more than once)
The version of the resulting package comes from the version number provided in debian/changelog
So you must have the appropriate version there.
1.0.3-1
will supersede an Ubuntu only upload versionized 1.0.3-0ubuntu1
$ dpkg --compare-versions 1.0.3-1 le 1.0.3-0ubuntu1 || echo "False"
False
But it will not supersede a version originating from Debian with Ubuntu changes, i.e. 1.0.3-1ubuntu1
$ dpkg --compare-versions 1.0.3-1 le 1.0.3-1ubuntu1 || echo "False"
$
The tilda (~
) character has a special meaning in version numbers. For example:
$ dpkg --compare-versions 1.0.3-1 le 1.0.3-1~ppa1 || echo "False"
False
As your package is not originating from Debian, I go with a version number like 1.0.3-0~ppa1
This guarantees that it is less than either a version synced directly from Debian or introduced in Ubuntu,
So your change log should look like:
artha (1.0.3-0~ppa1) quantal; urgency=low
* New upstream release.
-- Your Name <foo@bar.com> Sun, 07 Oct 2012 13:06:56 -0400
Whether to use debuild -S -sd
or debuild -S -sa
is really a different question, but here's a brief answer.
-sa
ensures that the .orig.tar.bz2
will be uploaded. If you haven't made an upload of this upstream version before, use this.
-sd
explicitly makes it so that only the debian.tar.gz
or diff.tar.gz
are uploaded. This is for when you are making a change to an upstream version that is already available in you target archive or PPA. This is because th original tarball should already be present there.
Best Answer
I think you should look at this question that I asked, and got answered:
PPA & Packaging: Having versions of packages for multiple distros
You'd have to package multiple times to get each version of Ubuntu, however you can upload a package for one version, then copy it over to each other version. For instance, I build packages for Lucid, however the same package is compatible with Maverick and later. As such, using the instructions in the aforementioned link, I copy it over to Maverick and Natty within the PPA, and the system then copies/builds it in the background and then publishes the data to the PPA when its done copying.