LinuxRelease.md edited online with Bitbucket

This commit is contained in:
Matt Feemster 2016-06-23 23:25:53 +00:00
parent 3ed88a6762
commit 198c152a0f

View File

@ -1,8 +1,6 @@
# Linux Release # Linux Release
We will build a `.deb` binary and test it. Then we will build a source tarball, These are instructions for publishing a Linux deb package. It can be built locally or the PPA repository can build it. The latter is preferable.
upload to Launchpad PPA, let it autobuild, and copy the published `.deb` link
from there.
## Summary ## Summary
@ -18,7 +16,7 @@ $ ./package-linux.sh --binary-only --unsigned
Type `s` for single binary, `Enter`. It displays a confirm message, `Enter`. Type `s` for single binary, `Enter`. It displays a confirm message, `Enter`.
When the build finished, find the `.deb` in `$HOME/PPA/fractorium-VERSION`. When the build finished, find the `.deb` in `~/PPA/fractorium-VERSION`.
### Publishing to Launchpad PPA ### Publishing to Launchpad PPA
@ -40,7 +38,8 @@ It asks for your GPG key passphrase to sign the source tarball.
Now upload the source tarball to Launchpad: Now upload the source tarball to Launchpad:
``` ```
$ dput ppa:fractorium/ppa fractorium_1.0.0.0a-0ubuntu1_source.changes $ cd ~/PPA/fractorium-VERSION/
$ dput ppa:fractorium/ppa fractorium_VERSION-0ubuntu1_source.changes
``` ```
An email will arrive to say if the package was accepted or rejected. An email will arrive to say if the package was accepted or rejected.
@ -50,13 +49,14 @@ link to the `.deb` from "Package Details".
## Narrative ## Narrative
Starting with a fresh clone from my fork at bitbucket. Starting with a fresh clone from bitbucket.org:
``` ```
$ git clone https://mfeemster@bitbucket.org/mfeemster/fractorium.git
$ cd fractorium $ cd fractorium
``` ```
First, testing locally on my machine. Test that the package creator script:
`package-linux.sh` with no arguments builds a signed source for the Launchpad PPA. `package-linux.sh` with no arguments builds a signed source for the Launchpad PPA.
@ -70,14 +70,14 @@ $ ./package-linux.sh --binary-only --unsigned
Error: Different version numbers were found. Please update the correct file, Error: Different version numbers were found. Please update the correct file,
the version numbers should agree up to the digits in: the version numbers should agree up to the digits in:
0.9.9.6 a.b.c.d
1.0.0.0 w.x.y.z
./debian/changelog : 0.9.9.6 ./debian/changelog : a.b.c.d
./Source/Ember/EmberDefines.h : 1.0.0.0 ./Source/Ember/EmberDefines.h : w.x.y.z
``` ```
So, I should bump the version number in `debian/changelog`. Let's get the time in the correct format: Change the version number in `debian/changelog` to match the one in `EmberDefines.h`. Next, get the time in the correct format and add it to a new entry in the changelog:
``` ```
$ date -R $ date -R
@ -88,11 +88,11 @@ Add a new log message at the top of `debian/changelog`, copying the last message
and changing the version number and time. and changing the version number and time.
``` ```
fractorium (1.0.0.0-0ubuntu1) xenial; urgency=low fractorium (w.x.y.z-0ubuntu1) xenial; urgency=low
* release 1.0.0.0 * release w.x.y.z
-- Gambhiro Bhikkhu <gambhiro.bhikkhu.85@gmail.com> Sat, 18 Jun 2016 13:12:15 +0100 -- Matt Feemster <matt.feemster@gmail.com> Sat, 18 Jun 2016 13:12:15 +0100
``` ```
Now try again: Now try again:
@ -101,7 +101,7 @@ Now try again:
$ ./package-linux.sh --binary-only --unsigned $ ./package-linux.sh --binary-only --unsigned
``` ```
Question about type of build: You will be prompted with a question about the type of build:
``` ```
Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch? Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch?
@ -110,23 +110,23 @@ Type of package: single binary, indep binary, multiple binary, library, kernel m
Type `s` for single binary, `Enter`. Type `s` for single binary, `Enter`.
It displays a confirm message, `Enter`. It displays a confirmation message, `Enter`.
The build starts. It copied the files which are not ignored in `.gitignore` out 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. to `~/PPA/fractorium-VERSION/`, and built it there.
The build finished, let's go and see: Verify the build finished:
``` ```
$ cd $HOME/PPA/fractorium-1.0.0.0 $ cd ~/PPA/fractorium-w.x.y.z
$ ls -lh $ ls -lh
total 7.7M total 7.7M
drwxrwxr-x 2 yume yume 4.0K Jun 18 13:31 build-area drwxrwxr-x 2 user user 4.0K Jun 18 13:31 build-area
drwxrwxr-x 8 yume yume 4.0K Jun 18 13:19 fractorium drwxrwxr-x 8 user user 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 user user 780 Jun 18 13:31 fractorium_w.x.y.z-0ubuntu1_amd64.changes
-rw------- 1 yume yume 3.5M Jun 18 13:31 fractorium_1.0.0.0-0ubuntu1_amd64.deb -rw------- 1 user user 3.5M Jun 18 13:31 fractorium_w.x.y.z-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 user user 2.1M Jun 18 13:18 fractorium_w.x.y.z.orig.tar.gz
-rw-rw-r-- 1 yume yume 2.1M Jun 18 13:18 fractorium-1.0.0.0.tar.gz -rw-rw-r-- 1 user user 2.1M Jun 18 13:18 fractorium-w.x.y.z.tar.gz
``` ```
This `.deb` is ready to use. This `.deb` is ready to use.
@ -136,10 +136,10 @@ This `.deb` is ready to use.
You could upload this `.deb` to the website if you don't want to bother with the 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 Launchpad PPA. The advantages of the PPA are
- testing the package and build procedure - Testing the package and build procedure
- users will automatically get the updated version when they run their regular upgrades - 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: People prefer using the PPA to install and remain up to date like so:
``` ```
sudo apt-add-repository ppa:fractorium/ppa sudo apt-add-repository ppa:fractorium/ppa
@ -149,30 +149,29 @@ sudo apt-get install fractorium
(aside end) (aside end)
Back to installing the `.deb`: Installing the `.deb`:
``` ```
sudo dpkg -i fractorium_1.0.0.0-0ubuntu1_amd64.deb sudo dpkg -i fractorium_w.x.y.z-0ubuntu1_amd64.deb
``` ```
When I open fractorium with its menu icon, the About page has the updated Verify fractorium loads with its menu icon, and the About page has the updated
version number. I run a few random flames, drag some xforms around. All seems version number. Run a few random flames, drag some xforms around, and test GPU support if you have it.
well.
Now let's upload the source to the Launchpad PPA for the auto-build. Upload the source to the Launchpad PPA for the auto-build.
Back in the fractorium folder: In the original fractorium source folder:
``` ```
$ ./package-linux.sh $ ./package-linux.sh
PPA work folder already exists: /home/yume/PPA/fractorium-1.0.0.0 PPA work folder already exists: /home/yume/PPA/fractorium-w.x.y.z
Move this folder aside or remove it. 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: It expects to be able to create a clean folder with that name and the earlier files aren't needed to remove it:
``` ```
$ rm -r /home/yume/PPA/fractorium-1.0.0.0 $ rm -r ~/PPA/fractorium-1.0.0.0
``` ```
Try again: Try again:
@ -181,54 +180,52 @@ Try again:
$ ./package-linux.sh $ ./package-linux.sh
``` ```
Very good. Press `s` at the type of package question. Press `s` at the type of package question.
This is quick, it only creates a source tarball to upload. 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. Before finishing, it asks for your GPG key passphrase to sign the source tarball.
Now let's upload it to Launchpad: Upload it to Launchpad:
``` ```
$ cd /home/yume/PPA/fractorium-1.0.0.0/ $ cd ~/PPA/fractorium-w.x.y.z/
$ dput ppa:fractorium/ppa fractorium_1.0.0.0-0ubuntu1_source.changes $ dput ppa:fractorium/ppa fractorium_w.x.y.z-0ubuntu1_source.changes
``` ```
It verifies my signature and says `Uploading to ppa (via ftp to ppa.launchpad.net)`. It verifies your 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 Upload finished, now open your email and wait for a message from Launchpad. It
arrives, saying the package was accepted. arrives, saying the package was accepted.
``` ```
[~fractorium/ubuntu/ppa/xenial] fractorium 1.0.0.0-0ubuntu1 (Accepted) [~fractorium/ubuntu/ppa/xenial] fractorium w.x.y.z-0ubuntu1 (Accepted)
``` ```
I open https://launchpad.net/~fractorium/+archive/ubuntu/ppa from the email and check that the build started: 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 [BUILDING] amd64 build of fractorium w.x.y.z-0ubuntu1 in ubuntu xenial RELEASE
Build started 2 minutes ago on lgw01-09 Build started 2 minutes ago on lgw01-09
``` ```
Good, let's wait. This will take several minutes.
If the package had been rejected, or if the autobuild now fails, then I would be If the package had been rejected, or if the autobuild now fails, then fix the build on your machine. When you want to try again, add a new
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 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 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 number, such as `fractorium 1.0.0.0a`. Then create a tarball again with
`package-linux.sh`, and upload to Launchpad with `dput`. `package-linux.sh`, and upload to Launchpad with `dput`.
If fact I just remembered I should update the project links and description in Update the project links and description in
`debian/control`. So I will do that now, bump the version number to `debian/control`. Bump the version number to `fractorium 1.0.0.0a` and update the time to `date -R`.
`fractorium 1.0.0.0a` and update the time to `date -R`.
Publish update: Publish update:
``` ```
$ ./package-linux.sh $ ./package-linux.sh
$ cd ~/PPA/fractorium-1.0.0.0a $ cd ~/PPA/fractorium-w.x.y.za
$ dput ppa:fractorium/ppa fractorium_1.0.0.0a-0ubuntu1_source.changes $ dput ppa:fractorium/ppa fractorium_w.x.y.za-0ubuntu1_source.changes
``` ```
Email says package accepted. Building has started. Finished: Email says package accepted. Building has started. Finished:
@ -245,7 +242,7 @@ But also:
``` ```
Binary packages awaiting publication: Binary packages awaiting publication:
fractorium-1.0.0.0a-0ubuntu1 fractorium-w.x.y.za-0ubuntu1
``` ```
It usually takes a bit more time until the `.deb` is published in the PPA repository. It usually takes a bit more time until the `.deb` is published in the PPA repository.
@ -253,19 +250,19 @@ It usually takes a bit more time until the `.deb` is published in the PPA reposi
Commit the changes: Commit the changes:
``` ```
$ git checkout -b linux-1.0.0.0a $ git checkout -b linux-w.x.y.za
$ git add -A . $ git add -A .
$ git commit -m "linux 1.0.0.0a" $ git commit -m "linux w.x.y.za"
``` ```
After a little while the package is published now, so I go to: After a little while the package is published now, so go to:
- https://launchpad.net/~fractorium/+archive/ubuntu/ppa - https://launchpad.net/~fractorium/+archive/ubuntu/ppa
- Select "Package Details" - Select "Package Details"
- Open the dropdown arrow at the package listing, see "Publishing Details" - Open the dropdown arrow at the package listing, see "Publishing Details"
- Under "Package Files", copy the link to the `.deb` - Under "Package Files", copy the link to the `.deb`
https://launchpad.net/~fractorium/+archive/ubuntu/ppa/+files/fractorium_1.0.0.0a-0ubuntu1_amd64.deb https://launchpad.net/~fractorium/+archive/ubuntu/ppa/+files/fractorium_w.x.y.za-0ubuntu1_amd64.deb
Update the README.md link to this. Update the README.md link to this.