This is a tutorial which hopes to make it easy for new contributors to figure out how to fix a bug in Lubuntu. Note that this is specific to repositories that Lubuntu hosts on Phabricator, i.e. those components that differentiate Lubuntu from other Ubuntu flavors— most notably, LXQt. Everything else is handled upstream in Ubuntu. The process there will be similar.
Packaging is a vast and complex subject, especially given the many upstreams (Ubuntu, Debian, the developer themselves) and the changing processes/requirements among them. We have our own guide that proves some links to further resources.
Some important variables:
- PACKAGE: name of the source package, e.g. calamares
- VERSION: version string of the package, e.g. 3.2.11-0ubuntu1
- CODENAME: adjective in the full codename, e.g. eoan
## make a place to contain your work mkdir WORKDIR cd WORKDIR ## get the packaging repository from Phabricator git clone ssh://firstname.lastname@example.org:2222/source/PACKAGE.git cd PACKAGE ## make sure you're on the development branch git checkout ubuntu/CODENAME ## get the upstream source code uscan --download-current-version tar -x --strip-components=1 -f ../PACKAGE_*.orig.tar.xz ## make a new patch mkdir debian/patches # just in case it doesn't exist quilt push -a # just in case there are patches, we apply them all quilt new NAME.patch # this is where you actually make the changes you want quilt edit PATH/TO/FILE quilt refresh quilt header --dep3 -e ## update the changelog dch # -i or -a, depending (see below) dch -r --distribution CODENAME ## test build the package sudo apt update; sudo apt build-dep PACKAGE debuild -b --no-sign ## get rid of source rm -rf !(debian) .pc/ # requires bash and `shopt -s extglob` ## push your changes git add -A arc diff # fill out the template accordingly, starting with the commit message # please add a reference to the associated task in the description e.g. T2 # don't forget to add @tsimonq2, @wxl as reviewers ## make additional changes if requested # get a new working copy (git clone, git checkout) # then apply the changes from your differential revision # NOTE: not necessary if you already have the original working version arc patch Dn --nobranch # here n is the number of your differential revision # make changes then push git add -A arc diff # this time you won't have to fill out the template, just a commit message ## now a developer merges your revision # get a new working copy and arc patch as above # merge! arc land --onto ubuntu/CODENAME ## finally a sponsor (usually same as developer) uploads your revision # get a new working copy or working with the above… # build the source package debuild -S # upload! dput ubuntu ../PACKAGE_VERSION_source.changes ## after it is accepted into the archive, a developer will tag it git tag ubuntu/VERSION git push origin ubuntu/VERSION
- Packaging guide provides information on standards and policies
- Upload to a PPA to test your packages before release
- Leverage CI for testing as an alternative to PPAs
- Packages discusses where to find packages, their various states, how to get them in the archives, etc.