Packaging
Contents
Current State of Packaging
For documentation and discussion. Design is still in flux.
Repositories and Distributions
We have one apt repository at https://apt.galliumos.org/ which serves three "distributions" (confusing name, but there it is).
We have a second apt repository at https://apt-dev.galliumos.org/ which will be retired.
The current distributions are:
- vivid-galliumos
- STABLE / RELEASE (default)
- priority pinned at 9999, will trump Canonical's
vivid
repo for all package versions - vivid-galliumos-prerelease
- prerelease / staging / unstable
- priority pinned at 10050, will also trump our
vivid-galliumos
repo for all package versions - vivid-galliumos-testing
- testing / experimental / current / development / etc
- priority pinned at 10090, will also trump our
vivid-galliumos-prerelease
repo for all package versions
General users will only have our vivid-galliumos
distribution enabled (and Canonical's vivid
distribution, of course).
Packages
Our package version naming convention descends from upstream Ubuntu packages, where applicable.
e.g. for packagename (1.2.3-0ubuntu1)
, our patches should be packaged as packagename (1.2.3-0ubuntu1-galliumos1)
. Some upstream packages will not have an -ubuntuX
suffix, which means that they are unchanged from the Debian up-upstream. We still need to add our -galliumosX
suffix.
Package Version Discrepancies!
We have some existing packages which do not follow this naming convention, and are versioned ahead of their upstreams (e.g. 1.2.3
in upstream to our 1.2.4
). This causes a few issues:
- It's confusing for us and gives users the impression that our code is a release ahead of the upstream.
- When the upstream releases a
1.2.4
, it will have different code than our1.2.4
. -
debootstrap
builds will fail to update to our pkgs when version numbers collide.
Package Version Corrections!
There are a couple ways to fix this issue:
- Make a hard break sometime between current (BETA1) and 1.0 (simple, guaranteed to work)
- Update packages with corrected version numbers, existing systems will not update to new packages.
- All users have to reinstall to move forward. :(
- Add a new "pkgversionfix" repodist, via inclusion in a required package (more complex, needs testing)
- This could be done to require no user intervention (aside from the standard `apt-get` process)
- Populate new repodist with corrected packages, populate primary (stable) repodist with corrected packages+1. Force a "downgrade" via "pkgversionfix" repodist to the corrected packages, then disable the new repodist. This could be done with a few manual steps, or automated by a startup script (or maybe a pkg postinstall script?). Automated is more user-friendly, but might be surprising.
- Create a manual update script (simpler, less surprising)
- Similar to option 2, but requires user intervention (e.g. running a
galliumos-update-system
script).
- Similar to option 2, but requires user intervention (e.g. running a
- Hardwire version dependencies in existing galliumos-star packages (and maintain them!)
- For an indeterminate length of time...until substantially all users have updated.
Scripted process for option 2 (and possibly option 3) would look something like this:
## add new pkgversionfix repodist apt-get install galliumos-distselect-pkgversionfix ## "downgrade" packages apt-get update && apt-get -y --force-yes dist-upgrade ## Remove new repodist apt-get purge galliumos-distselect-pkgversionfix ## Get corrected+1 pkgs from the main repo apt-get udpate && apt-get dist-upgrade
This needs testing, but I think it will work. Any better ideas?
Deviant package versions
These packages are currently problematically versioned:
package | upstream fork point | upstream current | galliumos uncorrected | galliumos corrected |
---|---|---|---|---|
xfce4-settings | 4.12.0-ubuntu1 | 4.12.0-0ubuntu1 | 4.12.9-0ubuntu1 | 4.12.0-0ubuntu1-galliumos7 |
slim | 1.3.6-4 | 1.3.6-4 | 1.3.7.4-1 | 1.3.6-4-galliumos13 |
xfwm4 | 4.12.1-1ubuntu1 | 4.12.3-1ubuntu1~ubuntu15.04.1 | 4.12.2-1ubuntu6 | 4.12.2-1ubuntu1-galliumos5 |
pasystray | 0.4.0-1 | 0.4.0-1 | 0.4.0.3-2 | 0.4.0-1-galliumos1 |
xorg-server | 2:1.17.1-0ubuntu3.1 | TBD | 2:1.17.1-0ubuntu4 | 2:1.17.1-0ubuntu3.1-galliumos1 |
xfce4-panel | 4.12.0-0ubuntu1 | 4.12.0-0ubuntu1 | 4.12.1-0ubuntu1 | 4.12.0-0ubuntu1-galliumos1 |
xubuntu-default-settings | 15.04.5 | 15.04.5 | 15.04.22 | 15.04.5-galliumos16 |
dmz-cursor-theme | 0.4.4ubuntu1 | 0.4.4ubuntu1 | 0.4.5ubuntu1 | 0.4.4ubuntu1-galliumos1 |
galliumos-meta | xubuntu-meta 2.190 | TBD | 2.201 | 2.190-galliumos11 |
xfce4-session | 4.12.1-1ubuntu2 | 4.12.1-1ubuntu2 | 4.12.1-1ubuntu9 | 4.12.1-1ubuntu2-galliumos5 |
cups-filters | 1.0.67-0ubuntu2.4 | 1.0.67-0ubuntu2.5 (!) | 1.0.67-0ubuntu2.5 | 1.0.67-0ubuntu2.4-galliumos1 |
ubiquity | 2.21.26 | 2.21.26 | 2.21.31 | 2.21.26-galliumos4 |
casper | 1.360 | 1.360 | 1.360-2 | 1.360-galliumos2 |
zram-config | 0.3.1 | 0.3.1 | 0.3.2-1 | 0.3.1-galliumos3 |
xubuntu-artwork | 15.04.4 | 15.04.4 | 15.04.18 | 15.04.4-galliumos13 |
xkeyboard-config | 2.12-1ubuntu1 | TBD | 2.12.1-1ubuntu1 | 2.12-1ubuntu1-galliumos1 |
xfce4-panel | 4.12.0-0ubuntu1 | 4.12.0-0ubuntu1 | 4.12.1-0ubuntu1 | 4.12.0-0ubuntu1-galliumos1 |
libnotify | 0.7.6-2svn1 | TBD | 0.7.7-1 | 0.7.6-2svn1-galliumos1 |
ubuntu-meta | 1.334 | TBD | 1.336 | 1.334-galliumos2 |
systemd | 219-7ubuntu6 | 219-7ubuntu6 | 219-7ubuntu29 | 219-7ubuntu6-galliumos3 |
procps | 1:3.3.9-1ubuntu8 | 1:3.3.9-1ubuntu8 | 1:3.3.9.3-1ubuntu9 | 1:3.3.9-1ubuntu8-galliumos3 |
libdrm | 2.4.60-2 | TBD | 2.4.65-1-9.22.15.git-1 | 2.4.60-2-galliumos2 |
kmod | 18-3ubuntu1 | 18-3ubuntu1 | 18-3ubuntu2 | 18-3ubuntu1-galliumos1 |
hexchat | 2.10.1-2 | 2.10.1-2 | 2.10.1-5 | 2.10.1-2-galliumos1 |
deadbeef | 0.6.2-1 | 0.6.2-1 | 0.6.2-1 (no mods, this is correct!) |
0.6.2-1-galliumos1 (if we patch in the future!) |
xfce4-power-manager | 1.4.3-0ubuntu1 | 1.4.3-0ubuntu1 | 1.4.8-0ubuntu11 | 1.4.3-0ubuntu1-galliumos12 |
base-files | 7.2ubuntu9 | 7.2ubuntu9 | 7.2ubuntu10 | 7.2ubuntu9-galliumos1 |
compton | 0.1~beta2-1 | 0.1~beta2-1 | 0.1~beta3-git-9.22.15-9 | 0.1~beta2-1-galliumos11 |
xorg | 1:7.7+7ubuntu4 | 1:7.7+7ubuntu4 | 1:7.7+7ubuntu5 | 1:7.7+7ubuntu4-galliumos1 |
shimmer-themes | 1.9.4-0ubuntu2 | 1.9.4-0ubuntu2 | 1.9.4-1ubuntu1 | 1.9.4-0ubuntu2-galliumos1 |