Building the source
Here’s how I organized the code. I checked out everything in a directory called “staging” in ~/canonical:
$ tree -d ~/canonical/staging/ -L 1 /home/eleni/canonical/staging/ ├── compiz ├── nux └── unity
where, I applied my changes, built and tested the branch following the steps described in this blog post.
I made sure all my changes were commited:
$ bzr commit $ bzr stat
At the end, my ~/canonical/staging directory was like that and bzr stat returned no changes for compiz, nux, unity:
$ tree -d ~/canonical/staging/ -L 1 /home/eleni/canonical/staging/ ├── bin ├── compiz ├── etc ├── include ├── lib ├── nux ├── share └── unity
Creating the .change, .dsc, tarballs
Before I create the ppa, I had to pack compiz, nux and unity.
Here’s what I did:
# apt-get install ubuntu-dev-tools
Compiz patch and packagement
$ cd ~/canonical/staging/compiz
$ export DEBFULLNAME="my_name" $ export DEBEMAIL="my_email" $ export DEBSIGN_KEYID="my_gpg_key_id" $ dch -i
- The email had to be the one used by the gpg key
- The gpg key had to be imported into launchpad (see: https://help.launchpad.net/YourAccount/ImportingYourPGPKey)
- The key id can be found by typing:
- The change in the changelog should contain a version (eg yakkety) :s/UNRELEASED/desired_ubuntu_version
$ debuild -S
(I was prompt to enter passphrase for the gpg key.)
Note: since compiz was a bzr branch I could have used:
$ bzr bd -S
instead of debuild.
After this step there were some new .dsc, .changes and .tar.gz files in the ~/canonical/staging directory. Something like that:
$ tree -L 1 . ├── bin ├── compiz ├── compiz_0.9.12.2+16.10.20160526-0ubuntu3.dsc ├── compiz_0.9.12.2+16.10.20160526-0ubuntu3_source.changes ├── compiz_0.9.12.2+16.10.20160526-0ubuntu3.tar.gz ├── etc ├── include ├── lib ├── libexec ├── nux ├── share └── unity
Same as above:
$ cd ~/canonical/staging/unity $ dch -i $ debuild -S
there must be more new files in ~/canonical/staging:
. ├── bin ├── compiz ├── compiz_0.9.12.2+16.10.20160526-0ubuntu3.dsc ├── compiz_0.9.12.2+16.10.20160526-0ubuntu3_source.changes ├── compiz_0.9.12.2+16.10.20160526-0ubuntu3.tar.gz ├── etc ├── include ├── lib ├── libexec ├── nux ├── share ├── unity ├── unity_7.5.0+16.10.20160606.1-0ubuntu2.dsc ├── unity_7.5.0+16.10.20160606.1-0ubuntu2_source.changes └── unity_7.5.0+16.10.20160606.1-0ubuntu2.tar.gz
Same as before for unity and compiz.
Creating and configuring the ppa
First, I created the ppa on launchpad:
I went to my user’s page and under PPAs I selected “Add a new PPA” and I created a ppa named “lgfx”.
Then I locally configured dput to use sftp (https://help.launchpad.net/Packaging/PPA/Uploading#SFTP_and_older_versions_of_Ubuntu).
I edited the ~/.dput.cf to contain these lines (this step can be skipped):
[lgfx] fqdn = ppa.launchpad.net method = sftp incoming = ~hikiko/lgfx/ login = hikiko allow_unsigned_uploads = 0
where lgfx is my ppa name and hikiko my bzr/launchpad username.
Uploading packages to the ppa
$ dput ppa:hikiko/lgfx <compiz .changes filename> $ dput ppa:hikiko/lgfx <nux .changes filename> $ dput ppa:hikiko/lgfx <unity .changes filename>
Updating the ppa
Everytime I need to submit a change to a lgfx ppa package (lgfx nux, lgfx compiz or lgfx unity), I build the modified code locally and then I run dch, debuild, dput for the package.