Difference between revisions of "Packaging"

From GalliumOS Wiki
Jump to: navigation, search
Line 11: Line 11:
 
The current distributions are:
 
The current distributions are:
  
; vivid-galliumos
+
* '''<code>vivid-galliumos</code>''' ("release" or "stable")
: STABLE / RELEASE (default)
+
** priority pinned at 9999
: priority pinned at 9999, will trump Canonical's <code>vivid</code> repo for all package versions
+
** trumps Canonical's <code>vivid</code> repodist for all package versions
; vivid-galliumos-prerelease
+
** trumps GalliumOS's <code>vivid-galliumos-prerelease</code> repodist only with newer versions
: prerelease / staging / unstable
+
** this repodist contains fully released packages
: priority pinned at 10050, will also trump our <code>vivid-galliumos</code> repo for all package versions
+
** this is the only default repodist, installed by <code>galliumos-base</code>
; vivid-galliumos-testing
+
* '''<code>vivid-galliumos-prerelease</code>''' ("prerelease", "staging", or "unstable")
: testing / experimental / current / development / etc
+
** priority pinned at 9999
: priority pinned at 10090, will also trump our <code>vivid-galliumos-prerelease</code> repo for all package versions
+
** trumps Canonical's <code>vivid</code> repodist for all package versions
 +
** trumps GalliumOS's <code>vivid-galliumos</code> repodist only with newer versions
 +
** this repodist contains prerelease packages (expected to be stable and ready for general use)
 +
* '''<code>vivid-galliumos-testing</code>''' ("testing", "experimental", "current", or "development")
 +
** priority pinned at 10090
 +
** trumps all other repodists (Canonical and GalliumOS) for all package versions
 +
** this repodist contains testing packages (very possibly broken, '''not''' ready for general use)
  
General users will only have our <code>vivid-galliumos</code> distribution enabled (and Canonical's <code>vivid</code> distribution, of course).
 
  
 
=== Packages ===
 
=== Packages ===
Line 29: Line 34:
 
==== Sample Package Version Strings ====
 
==== Sample Package Version Strings ====
  
* Packages from original sources (without Debian or Canonical patches): <code>1.2.3</code>
+
* <code>3.2.1</code>          Packages from original sources, without Debian or Canonical patches
* Packages patched by Debian but not Canonical: <code>1.2.3-1</code>
+
* <code>3.2.1-1</code>       Packages patched by Debian (v1) but not Canonical
* Packages patched by Canonical but not Debian: <code>1.2.3-0ubuntu1</code>
+
* <code>3.2.1-0ubuntu1</code> Packages patched by Canonical (v1) but not Debian (Canonical adds the implicit zero)
* Packages patched by Debian ''and'' Canonical: <code>1.2.3-1ubuntu1</code>
+
* <code>3.2.1-1ubuntu2</code> Packages patched by Debian (v1) ''and'' Canonical (v2)
 +
 
  
 
==== GalliumOS Package Version Strings ====
 
==== GalliumOS Package Version Strings ====
  
We need to add our own tag to upstream packages.
+
Our version string might include a <code>galliumosN</code> tag (N=version), depending on the source of the packaged material:
 +
 
 +
* '''Original to us''' e.g <code>galliumos-base</code>
 +
** <code>3.2.1</code>, no tag needed
 +
* '''From original sources, not patched by us'''
 +
** <code>3.2.1</code>, no changes; reuse the version from the original source
 +
* '''From original sources, and patched by us'''
 +
** <code>3.2.1</code>          ?? becomes <code>3.2.1galliumos1</code> or <code>3.2.1-galliumos1</code> ?? TBD!
 +
* '''From Debian ''or'' Canonical (patched or not), ''not'' patched by us'''
 +
** <code>3.2.1</code>, no changes; reuse the upstream version string
 +
** <code>3.2.1-4</code>
 +
* '''From Debian (patched or not), ''and'' patched by us'''
 +
** <code>3.2.1-4</code>        becomes <code>3.2.1-4galliumos1</code>, add our tag.
 +
** <code>3.2.1</code>          becomes <code>3.2.1-0galliumos1</code>, add the implicit <code>-0</code> first, if necessary!
 +
* '''From Canonical (patched or not), ''and'' patched by us'''
 +
** <code>3.2.1</code>          ?? becomes <code>3.2.1galliumos1</code> or <code>3.2.1-galliumos1</code> ?? TBD!
 +
* '''From Canonical ''via'' Debian (patched or not), ''and'' patched by us'''
 +
** <code>3.2.1-0ubuntu1</code> becomes <code>3.2.1-0ubuntu1-galliumos1</code>, just add a hyphen and our tag
 +
** <code>3.2.1-4ubuntu1</code> becomes <code>3.2.1-4ubuntu1-galliumos1</code>
  
; Packages original to us (galliumos-base, etc) ''do not'' need our tag
 
: <code>1.2.3</code>
 
; Packages from upstream original sources, unpatched, ''do not'' need our tag
 
: <code>1.2.3</code>
 
; Packages from Debian and patched by us, ''do'' need our tag, with ''no'' hyphen. Add a zero if Debian hasn't added a version of their own!)
 
: <code>1.2.3-0galliumos1</code>
 
; Packages from Canonical and patched by us ''do'' need our tag, ''with'' a hyphen.
 
: <code>1.2.3-0ubuntu1-galliumos1</code>
 
  
The yes-hyphen/no-hyphen rules are due to Debian's (`apt`'s) complicated sort logic. See below for a demonstration of importance.
+
The hyphenation rules are due to Debian's complicated sort logic. See below for a demonstration.
  
     # These version strings are in increasing order
+
     # These version strings are Debian-ordered from oldest to newest
      
+
     #
 
     3.2.1
 
     3.2.1
 
     3.2.1-0galliumos1
 
     3.2.1-0galliumos1
Line 61: Line 77:
 
     3.2.1-10galliumos1
 
     3.2.1-10galliumos1
 
     3.2.1-10galliumos1
 
     3.2.1-10galliumos1
     3.2.1-galliumos1              ## this is wrong!
+
     3.2.1-galliumos1              ## TBD
     3.2.1galliumos1                ## this is wrong!
+
     3.2.1galliumos1                ## TBD
     3.2.1galliumos2                ## this is wrong!
+
     3.2.1galliumos2                ## TBD
     3.2.1galliumos10              ## this is wrong!
+
     3.2.1galliumos10              ## TBD
     3.2.1-0-galliumos1            ## this is wrong!
+
     3.2.1-0-galliumos1            ## ambiguous; do not use
     3.2.1-1-galliumos1            ## this is wrong!
+
    3.2.1-0-ubuntu1                ## ambiguous; do not use
 +
    3.2.1-0-ubuntu0-galliumos1    ## ambiguous; do not use
 +
    3.2.1-0-ubuntu1-galliumos1    ## ambiguous; do not use
 +
     3.2.1-1-galliumos1            ## ambiguous; do not use
 
     3.2.1-1ubuntu1-galliumos1
 
     3.2.1-1ubuntu1-galliumos1
 
     3.2.1-1ubuntu2-galliumos1
 
     3.2.1-1ubuntu2-galliumos1
Line 72: Line 91:
 
     3.2.1-1ubuntu2-galliumos10
 
     3.2.1-1ubuntu2-galliumos10
 
     3.2.1-1ubuntu10-galliumos1
 
     3.2.1-1ubuntu10-galliumos1
     3.2.1-10-galliumos1            ## this is wrong!
+
     3.2.1-10-galliumos1            ## ambiguous; do not use
 
     3.2.1.1
 
     3.2.1.1
 
  
  
Line 81: Line 99:
 
==== Package Version Discrepancies! ====
 
==== Package Version Discrepancies! ====
  
We have some existing packages which do not follow this naming convention, and are versioned '''ahead''' of their upstreams (e.g. <code>1.2.3</code> in upstream to our <code>1.2.4</code>). This causes a few issues:
+
We have some existing packages which do not follow this naming convention, and are versioned '''ahead''' of their upstreams (e.g. our <code>3.2.2</code> to <code>3.2.1</code> upstream). 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.
 
# 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 <code>1.2.4</code>, it will have different code than our <code>1.2.4</code>.
+
# When the upstream releases a <code>3.2.2</code>, it will have different code than our <code>3.2.2</code>.
 
# <code>debootstrap</code> builds will fail to update to our pkgs when version numbers collide.
 
# <code>debootstrap</code> builds will fail to update to our pkgs when version numbers collide.
  
 
==== Package Version Corrections ====
 
==== Package Version Corrections ====
  
This is easy to fix! We just need to push corrected pkg versions to the stable repodist (`vivid-galliumos`).
+
This is easy to fix! We just need to push corrected pkg versions to the stable repodist (`vivid-galliumos`), and ''remove'' the old versions from the same repodist.
  
'''However''', when users run <code>apt-get upgrade</code>, they will be prompted to confirm "DOWNGRADED" packages, which we'll need to emphasize in the announcement.
+
'''However''', when users run <code>apt-get upgrade</code>, they will be prompted to confirm "DOWNGRADED" packages. We'll need to emphasize that this is expected in the BETA2 release announcement.
  
  
Line 117: Line 135:
 
| 1.3.6-4
 
| 1.3.6-4
 
| 1.3.7.4-1
 
| 1.3.7.4-1
| 1.3.6-4-galliumos13
+
| 1.3.6-4galliumos13
 
|-
 
|-
 
| xfwm4
 
| xfwm4
Line 129: Line 147:
 
| 0.4.0-1
 
| 0.4.0-1
 
| 0.4.0.3-2
 
| 0.4.0.3-2
| 0.4.0-1-galliumos1
+
| 0.4.0-1galliumos1
 
|-
 
|-
 
| xorg-server
 
| xorg-server
Line 147: Line 165:
 
| 15.04.5
 
| 15.04.5
 
| 15.04.22
 
| 15.04.22
| 15.04.5-galliumos16
+
| 15.04.5galliumos16
 
|-
 
|-
 
| dmz-cursor-theme
 
| dmz-cursor-theme
Line 189: Line 207:
 
| 0.3.1
 
| 0.3.1
 
| 0.3.2-1
 
| 0.3.2-1
| 0.3.1-galliumos3
+
| 0.3.1-0galliumos3
 
|-
 
|-
 
| xubuntu-artwork
 
| xubuntu-artwork
Line 237: Line 255:
 
| TBD
 
| TBD
 
| 2.4.65-1-9.22.15.git-1
 
| 2.4.65-1-9.22.15.git-1
| 2.4.60-2-galliumos2
+
| 2.4.60-2galliumos2
 
|-
 
|-
 
| kmod
 
| kmod
Line 249: Line 267:
 
| 2.10.1-2
 
| 2.10.1-2
 
| 2.10.1-5
 
| 2.10.1-5
| 2.10.1-2-galliumos1
+
| 2.10.1-2galliumos1
 
|-
 
|-
 
| deadbeef
 
| deadbeef
 
| 0.6.2-1
 
| 0.6.2-1
 
| 0.6.2-1
 
| 0.6.2-1
| 0.6.2-1<br>(no mods, this is correct!)
+
| 0.6.2-1
| 0.6.2-1-galliumos1<br>(if we patch in the future!)
+
| (no mods, this is correct!)
 
|-
 
|-
 
| xfce4-power-manager
 
| xfce4-power-manager

Revision as of 22:14, 18 December 2015

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 ("release" or "stable")
    • priority pinned at 9999
    • trumps Canonical's vivid repodist for all package versions
    • trumps GalliumOS's vivid-galliumos-prerelease repodist only with newer versions
    • this repodist contains fully released packages
    • this is the only default repodist, installed by galliumos-base
  • vivid-galliumos-prerelease ("prerelease", "staging", or "unstable")
    • priority pinned at 9999
    • trumps Canonical's vivid repodist for all package versions
    • trumps GalliumOS's vivid-galliumos repodist only with newer versions
    • this repodist contains prerelease packages (expected to be stable and ready for general use)
  • vivid-galliumos-testing ("testing", "experimental", "current", or "development")
    • priority pinned at 10090
    • trumps all other repodists (Canonical and GalliumOS) for all package versions
    • this repodist contains testing packages (very possibly broken, not ready for general use)


Packages

Our package version naming convention descends from upstream Ubuntu packages, where applicable. Ubuntu's package versioning works like this:

Sample Package Version Strings

  • 3.2.1 Packages from original sources, without Debian or Canonical patches
  • 3.2.1-1 Packages patched by Debian (v1) but not Canonical
  • 3.2.1-0ubuntu1 Packages patched by Canonical (v1) but not Debian (Canonical adds the implicit zero)
  • 3.2.1-1ubuntu2 Packages patched by Debian (v1) and Canonical (v2)


GalliumOS Package Version Strings

Our version string might include a galliumosN tag (N=version), depending on the source of the packaged material:

  • Original to us e.g galliumos-base
    • 3.2.1, no tag needed
  • From original sources, not patched by us
    • 3.2.1, no changes; reuse the version from the original source
  • From original sources, and patched by us
    • 3.2.1  ?? becomes 3.2.1galliumos1 or 3.2.1-galliumos1 ?? TBD!
  • From Debian or Canonical (patched or not), not patched by us
    • 3.2.1, no changes; reuse the upstream version string
    • 3.2.1-4
  • From Debian (patched or not), and patched by us
    • 3.2.1-4 becomes 3.2.1-4galliumos1, add our tag.
    • 3.2.1 becomes 3.2.1-0galliumos1, add the implicit -0 first, if necessary!
  • From Canonical (patched or not), and patched by us
    • 3.2.1  ?? becomes 3.2.1galliumos1 or 3.2.1-galliumos1 ?? TBD!
  • From Canonical via Debian (patched or not), and patched by us
    • 3.2.1-0ubuntu1 becomes 3.2.1-0ubuntu1-galliumos1, just add a hyphen and our tag
    • 3.2.1-4ubuntu1 becomes 3.2.1-4ubuntu1-galliumos1


The hyphenation rules are due to Debian's complicated sort logic. See below for a demonstration.

   # These version strings are Debian-ordered from oldest to newest
   #
   3.2.1
   3.2.1-0galliumos1
   3.2.1-1
   3.2.1-1galliumos1
   3.2.1-1ubuntu1
   3.2.1-1ubuntu2
   3.2.1-2galliumos1
   3.2.1-10
   3.2.1-10galliumos1
   3.2.1-10galliumos1
   3.2.1-galliumos1               ## TBD
   3.2.1galliumos1                ## TBD
   3.2.1galliumos2                ## TBD
   3.2.1galliumos10               ## TBD
   3.2.1-0-galliumos1             ## ambiguous; do not use
   3.2.1-0-ubuntu1                ## ambiguous; do not use
   3.2.1-0-ubuntu0-galliumos1     ## ambiguous; do not use
   3.2.1-0-ubuntu1-galliumos1     ## ambiguous; do not use
   3.2.1-1-galliumos1             ## ambiguous; do not use
   3.2.1-1ubuntu1-galliumos1
   3.2.1-1ubuntu2-galliumos1
   3.2.1-1ubuntu2-galliumos2
   3.2.1-1ubuntu2-galliumos10
   3.2.1-1ubuntu10-galliumos1
   3.2.1-10-galliumos1            ## ambiguous; do not use
   3.2.1.1



Package Version Discrepancies!

We have some existing packages which do not follow this naming convention, and are versioned ahead of their upstreams (e.g. our 3.2.2 to 3.2.1 upstream). This causes a few issues:

  1. It's confusing for us and gives users the impression that our code is a release ahead of the upstream.
  2. When the upstream releases a 3.2.2, it will have different code than our 3.2.2.
  3. debootstrap builds will fail to update to our pkgs when version numbers collide.

Package Version Corrections

This is easy to fix! We just need to push corrected pkg versions to the stable repodist (`vivid-galliumos`), and remove the old versions from the same repodist.

However, when users run apt-get upgrade, they will be prompted to confirm "DOWNGRADED" packages. We'll need to emphasize that this is expected in the BETA2 release announcement.


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-4galliumos13
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-1galliumos1
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.5galliumos16
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-0galliumos3
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-2galliumos2
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-2galliumos1
deadbeef 0.6.2-1 0.6.2-1 0.6.2-1 (no mods, this is correct!)
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