As per Debian documentation and Ubuntu Launchpad documentation, upstreaming deb package is through the use of dput. This program handles all Debian packages and uses different channels to upstream the deb.
Depending on distributions such as Debian, Ubuntu or Ubuntu Launchpad, each of them has its own compliance, requirements and processes. However, all of them shares the same upstream mechanism: dput with configurations. This guide covers a generic way of using dput to upstream your deb packages.
All known upstream (especially Debian) employs the use of source.changes file. Both Ubuntu and Debian will perform the compilation at upon receiving the changes file. Also keep in mind that you need to sign the source package so proceed to rebuild it with -k"gpg_id" -S flags.
$ debuild -k"gpg_id" -SYou should get a list of newly compiled source package files.
Now to ensure it is working, you should prepare a dput configuration file (known as dput.cf). You can save it as a localized file or in your $HOME location as $HOME/.dput.cf. Your CF file should contains the terminal side of the upstream server. A simple example, gathered from Debian maintainer guidelines and Ubuntu Launchpad, it should look something as follows:
[ubuntu-launchpad]fqdn = ppa.launchpad.netmethod = ftpincoming = ~[GROUPNAME]/ubuntu/[REPONAME]/login = anonymousallow_unsigned_uploads = 0[debian-mentors]fqdn = mentors.debian.netlogin = anonymousprogress_indicator = 2passive_ftp = 1incoming = /pub/UploadQueue/method = ftpallow_unsigned_uploads = 0# Allow uploads for UNRELEASED packagesallowed_distributions = .*The configuration file specification is listed in the manual page. Generally, your upstream server should provide the necessary configurations for you to use.
Once you're done with the dput configuration files, you may start your upload by using dput command. It follows the following pattern:
$ dput --config </path/to/dput.cf> <upstream tag> </path/to/your/.changes>The upstream tag is the [tag] inside your dput configuration file. Based on the example above, it should be either:
ubuntu-launchpaddebian-mentorsSo, say if we want to upstream to debian-mentors, the command should look like the following:
$HOME/.dput.cf$ dput debian-mentors ./your_sourcepackage_1.0.changes$ dput --config /path/to/dput.cf debian-mentors ./your_source_package_1.0.changesThat's all about upstreaming via dput. You'll then follow the respective guidelines and processes to make your software into the main repository.