fractorium/Data/LinuxRelease.md
2016-06-18 15:47:06 +01:00

6.9 KiB

Linux Release

We will build a .deb binary and test it. Then we will build a source tarball, upload to Launchpad PPA, let it autobuild, and copy the published .deb link from there.

Summary

Building a .deb locally

Update debian/changelog with a new log message. Update version number. Use the time from date -R.

Build:

$ ./package-linux.sh --binary-only --unsigned

Type s for single binary, Enter. It displays a confirm message, Enter.

When the build finished, find the .deb in $HOME/PPA/fractorium-VERSION.

Publishing to Launchpad PPA

Remember we are not building a .deb here, Launchpad will do that. We are just uploading a signed source tarball.

Make sure debian/changelog was updated.

Build:

$ ./package-linux.sh

Type s for single binary, Enter. It displays a confirm message, Enter.

It asks for your GPG key passphrase to sign the source tarball.

Now upload the source tarball to Launchpad:

$ dput ppa:fractorium/ppa fractorium_1.0.0.0a-0ubuntu1_source.changes

An email will arrive to say if the package was accepted or rejected.

Wait for the autobuild to complete, and when the package is published, copy the link to the .deb from "Package Details".

Narrative

Starting with a fresh clone from my fork at bitbucket.

$ cd fractorium

First, testing locally on my machine.

package-linux.sh with no arguments builds a signed source for the Launchpad PPA.

Instead, now we want an unsigned binary .deb:

$ ./package-linux.sh --binary-only --unsigned
Error: Different version numbers were found. Please update the correct file,
the version numbers should agree up to the digits in:

0.9.9.6
1.0.0.0

./debian/changelog            : 0.9.9.6
./Source/Ember/EmberDefines.h : 1.0.0.0

So, I should bump the version number in debian/changelog. Let's get the time in the correct format:

$ date -R
Sat, 18 Jun 2016 13:12:15 +0100

Add a new log message at the top of debian/changelog, copying the last message and changing the version number and time.

fractorium (1.0.0.0-0ubuntu1) xenial; urgency=low

  * release 1.0.0.0

 -- Gambhiro Bhikkhu <gambhiro.bhikkhu.85@gmail.com>  Sat, 18 Jun 2016 13:12:15 +0100

Now try again:

$ ./package-linux.sh --binary-only --unsigned

Question about type of build:

Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch?
 [s/i/m/l/k/n]

Type s for single binary, Enter.

It displays a confirm message, Enter.

The build starts. It copied the files which are not ignored in .gitignore out to $HOME/PPA/fractorium-1.0.0.0/, and building there.

The build finished, let's go and see:

$ cd $HOME/PPA/fractorium-1.0.0.0
$ ls -lh
total 7.7M
drwxrwxr-x 2 yume yume 4.0K Jun 18 13:31 build-area
drwxrwxr-x 8 yume yume 4.0K Jun 18 13:19 fractorium
-rw------- 1 yume yume  780 Jun 18 13:31 fractorium_1.0.0.0-0ubuntu1_amd64.changes
-rw------- 1 yume yume 3.5M Jun 18 13:31 fractorium_1.0.0.0-0ubuntu1_amd64.deb
-rw-rw-r-- 1 yume yume 2.1M Jun 18 13:18 fractorium_1.0.0.0.orig.tar.gz
-rw-rw-r-- 1 yume yume 2.1M Jun 18 13:18 fractorium-1.0.0.0.tar.gz

This .deb is ready to use.

(aside)

You could upload this .deb to the website if you don't want to bother with the Launchpad PPA. The advantages of the PPA are

  • testing the package and build procedure
  • users will automatically get the updated version when they run their regular upgrades

ppl get used to always looking for the PPA of a project and installing from there:

sudo apt-add-repository ppa:fractorium/ppa
sudo apt-get update
sudo apt-get install fractorium

(aside end)

Back to installing the .deb:

sudo dpkg -i fractorium_1.0.0.0-0ubuntu1_amd64.deb

When I open fractorium with its menu icon, the About page has the updated version number. I run a few random flames, drag some xforms around. All seems well.

Now let's upload the source to the Launchpad PPA for the auto-build.

Back in the fractorium folder:

$ ./package-linux.sh
PPA work folder already exists: /home/yume/PPA/fractorium-1.0.0.0
Move this folder aside or remove it.

That's right, it expects to be able to create a clean folder with that name. I don't need the earlier files, so let's remove it:

$ rm -r /home/yume/PPA/fractorium-1.0.0.0

Try again:

$ ./package-linux.sh

Very good. Press s at the type of package question.

This is quick, it only creates a source tarball to upload.

Before finishing, it asks for my GPG key passphrase to sign the source tarball.

Now let's upload it to Launchpad:

$ cd /home/yume/PPA/fractorium-1.0.0.0/
$ dput ppa:fractorium/ppa fractorium_1.0.0.0-0ubuntu1_source.changes 

It verifies my signature and says Uploading to ppa (via ftp to ppa.launchpad.net).

Upload finished, now I open my email and wait for a message from Launchpad. It arrives, saying the package was accepted.

[~fractorium/ubuntu/ppa/xenial] fractorium 1.0.0.0-0ubuntu1 (Accepted)

I open https://launchpad.net/~fractorium/+archive/ubuntu/ppa from the email and check that the build started:

[BUILDING]	amd64 build of fractorium 1.0.0.0-0ubuntu1 in ubuntu xenial RELEASE
Build started 2 minutes ago on lgw01-09

Good, let's wait.

If the package had been rejected, or if the autobuild now fails, then I would be fixing the build on my machine. When I want to try again, I would add a new message to the top of debian/changelog, with a modified version number and time. For these minor changes it is enough to append a letter to the version number, such as fractorium 1.0.0.0a. Then create a tarball again with package-linux.sh, and upload to Launchpad with dput.

If fact I just remembered I should update the project links and description in debian/control. So I will do that now, bump the version number to fractorium 1.0.0.0a and update the time to date -R.

Publish update:

$ ./package-linux.sh
$ cd ~/PPA/fractorium-1.0.0.0a
$ dput ppa:fractorium/ppa fractorium_1.0.0.0a-0ubuntu1_source.changes

Email says package accepted. Building has started. Finished:

Successfully built on lgw01-33

Started 23 minutes ago
Finished 1 minute ago (took 22 minutes, 6.6 seconds)

But also:

Binary packages awaiting publication:

fractorium-1.0.0.0a-0ubuntu1

It usually takes a bit more time until the .deb is published in the PPA repository.

Commit the changes:

$ git checkout -b linux-1.0.0.0a
$ git add -A .
$ git commit -m "linux 1.0.0.0a"

After a little while the package is published now, so I go to:

https://launchpad.net/~fractorium/+archive/ubuntu/ppa/+files/fractorium_1.0.0.0a-0ubuntu1_amd64.deb

Update the README.md link to this.

All done. Commit, push, send Pull Request.