Difference between revisions of "Packaging"
(→Package Version Corrections!) |
(→Package Version Corrections!) |
||
Line 39: | Line 39: | ||
==== Package Version Corrections! ==== | ==== Package Version Corrections! ==== | ||
− | There are a | + | There are a few ways we might fix this issue: |
# '''Make a hard break sometime between current (BETA1) and 1.0''' (simple, guaranteed to work) | # '''Make a hard break sometime between current (BETA1) and 1.0''' (simple, guaranteed to work) | ||
Line 46: | Line 46: | ||
# '''Add a new "pkgversionfix" repodist, via inclusion in a required package''' (more complex, needs testing) | # '''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) | #* 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. | + | #* 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. |
+ | #* '''UPDATE''' I don't think this will work in an automated fashion (was hoping to use a postinstall script), but since the apt database is locked it will probably fail | ||
# '''Create a manual update script''' (simpler, less surprising) | # '''Create a manual update script''' (simpler, less surprising) | ||
− | #* Similar to option 2, but requires user intervention (e.g. running a <code>galliumos- | + | #* Similar to option 2, but requires user intervention (e.g. running a <code>galliumos-upgrade</code> script). |
+ | #* '''UPDATE''' I think this is the best plan as long as we can accept the manual step. I don't think we need the special new repodist to handle the "downgrades". | ||
# '''Hardwire version dependencies in existing galliumos-star packages''' (and maintain them!) | # '''Hardwire version dependencies in existing galliumos-star packages''' (and maintain them!) | ||
#* For an indeterminate length of time...until substantially all users have updated. | #* For an indeterminate length of time...until substantially all users have updated. | ||
+ | I think we should correct the package versioning at the same time as the release of beta 2. We should also try to update our source package publishing at the same time. | ||
+ | ===== More about Option 3 ===== | ||
− | + | Here's how a manual <code>galliumos-upgrade</code> script might work: | |
− | + | # In preparation, we publish packages with corrected versions to <code>vivid-galliumos</code> | |
− | + | #* Existing systems will not automatically update to these packages due to "lower" revision numbers | |
− | + | # We also update an existing package (<code>galliumos-base</code>?) to a higher rev (no conflict here, that package doesn't require version correction), which includes the <code>galliumos-upgrade</code> script | |
− | + | # The script does a few things: | |
− | + | ## Confirms that existing packages need updating to "lower" corrected versions | |
− | + | ## Forces the "downgrade" and purges the old versions | |
− | + | ## Possibly recommends a reboot | |
− | |||
− | |||
− | |||
− | |||
+ | From the user's perspective, the instructions for upgrading to beta 2 will be: | ||
− | + | apt-get update | |
+ | apt-get dist-upgrade | ||
+ | galliumos-upgrade beta2 | ||
+ | reboot | ||
+ | |||
+ | I will test the plan to be certain I'm not missing anything, but I think it's our best bet. Any other ideas? | ||
==== Deviant package versions ==== | ==== Deviant package versions ==== |
Revision as of 16:35, 16 December 2015
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 few ways we might 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.
- UPDATE I don't think this will work in an automated fashion (was hoping to use a postinstall script), but since the apt database is locked it will probably fail
- Create a manual update script (simpler, less surprising)
- Similar to option 2, but requires user intervention (e.g. running a
galliumos-upgrade
script). - UPDATE I think this is the best plan as long as we can accept the manual step. I don't think we need the special new repodist to handle the "downgrades".
- 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.
I think we should correct the package versioning at the same time as the release of beta 2. We should also try to update our source package publishing at the same time.
More about Option 3
Here's how a manual galliumos-upgrade
script might work:
- In preparation, we publish packages with corrected versions to
vivid-galliumos
- Existing systems will not automatically update to these packages due to "lower" revision numbers
- We also update an existing package (
galliumos-base
?) to a higher rev (no conflict here, that package doesn't require version correction), which includes thegalliumos-upgrade
script - The script does a few things:
- Confirms that existing packages need updating to "lower" corrected versions
- Forces the "downgrade" and purges the old versions
- Possibly recommends a reboot
From the user's perspective, the instructions for upgrading to beta 2 will be:
apt-get update apt-get dist-upgrade galliumos-upgrade beta2 reboot
I will test the plan to be certain I'm not missing anything, but I think it's our best bet. Any other 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 |