UnitedLinux selection description

Motivation

Selections define package sets by grouping list of package names under a common name.
This abstracts away from the single package selection to a 'task' (or 'usage') oriented software setup.
A similar approach is to use (empty) 'task' packages which require a set of other packages in order to accomplish a task. However, this approach does not take language specific packages into account, nor does it allow for automatic deselection of packages.
Grouping sets of packages together also allows to compute dependencies on a much smaller memory footprint and makes it easier for the unexperienced user to choose the right set of software.

By making selections similar to packages (by assigning name, version, architecture, dependencies, etc.) similar user interfaces and internal dependency handling can be used.
Ideally, a complete distribution can be put together by using selections as building blocks abstracting away from the huge amount of packages.

This document describes the format of a selection file.

Requirements

Selection requirements

  1. Name
    A selection has a name.
  2. Version
    A selection has a version which should denote the product version this selection belongs to.
  3. Release
    A selection has a release, which should be increased for every change of the selection.
  4. Architecture
    A selection might have an architecture which restricts it to systems with this architecture.
  5. Summary
    A short label describing the selection (in multiple languages!)
  6. Category
    A selection can be a base or an add-on selection.
    Base selections should not have any requirements, just recommendations or suggestions. Base selections are mutually exclusive to other base selections.
    Add-on selections stack onto base selections and can be grouped by the category name.
  7. Sort oder
    When presenting selections to the user, a sort order independant of the summary translations is needed.
  8. Requires
    Other selections required
  9. Provides
    A selection implicitly provides its name. An additional provides is useful on updates if a selection was renamed.
  10. Obsoletes
    Selections obsoleted by this selection. Useful for update.
  11. Conflicts
    Selections conflicting with this selection.
  12. Recommends
    Selections recommended by this selection. (Weak dependency)
    Recommended selections are automatically pre-selected but the user can choose to de-deselect them.
  13. Suggests
    Selections suggested by this selection. (Weak dependency)
    Suggested selections are offered to the user but are not automatically pre-selected.
  14. Size
    Sum of all package sizes, Sum of installed packages
  15. Package to install (generally)
    List of packages installed by this selection
  16. Package to install (language specific)
    List of packages installed by this selection if the respective language is active
  17. Packages to remove (generally)
    List of packages removed by this selection
  18. Packages to remove (language specific)
    List of packages removed by this selection if the respective language is active

Implementation

Syntax

The syntactic representation of a selection is similar to that of a package as describes in the package description document.
File encoding is UTF-8.
File is line based.
Lines starting with '#' are ignored.

Selection keywords

Keyword   ValueComment
=Selname version release [architecture] These name, version, and release identify a selection unambiguously and are used as a key.
The architecture is optional and defaults to all architectures
If it's given, is must match (FIXME: 'uname -a' or DEFAULTBASE ?)
=Sumsummaryone line label in default language
=Sum.langsummaryone line language specific label
=Catcategorycategory (aka 'type of') selection
can be 'base' (only one base selection can be choosen) or any other string, denoting an 'add-on' selection (multiple addon selection can be choosen)
(On the long run this key will denote a grouping for add-on selections and the 'base' key will be dropped. In an ideal world, only one base selection should exist.
The current package dependencies aren't ready for a true building block approach.)
=Visvisibilityvisibility of selection (for user interface)
Selection can be hidden from the user. This is useful e.g. for architecture dependant selections which are handled internally by the system.
=Ordorderingorder of selection (for user interface)
This three-digit-integer-value defines the order of the selection when listing multiple selections in the user interface
+Req
-Req
selectionsselections required for installation
+Prv
-Prv
selectionsselections provided
+Con
-Con
selectionsselections conflicting
+Obs
-Obs
selectionsselections obsoleted
+Rec
-Rec
selectionsrecommended selections
+Sug
-Sug
selectionssuggested selections
=Sizpkgsize instsizesize in bytes
+Ins
-Ins
packages listlist of packages to install
(see below)
+Ins.lang
-Ins.lang
packages listlist of packages to install if given language is active
+Del
-Del
packages listlist of packages to delete
(see below)
+Del.lang
-Del.lang
packages listlist of packages to delete if given language is active

The list of install and delete packages normally just lists packages by name, one per line.
An expection is the syntax name (alternative [,alternative ...]) which gives a list of alternative packages if the first isn't available.
The first available package of the alternative list will be choosen.

Example

(shortened at ...)
# SuSE-Linux-Package-Selection 3.0 -- (c) 2002 SuSE Linux AG
# generated on Sat Aug 10 17:55:42 UTC 2002

=Ver: 3.0

=Sel: Kde-Desktop 8.1

=Siz: 123456 1234567

=Sum.cs: Prostředí KDE
=Sum.de: KDE Desktop-Umgebung
=Sum.en: KDE Desktop Environment
=Sum.es: Entorno Gráfico KDE
=Sum.fr: Environnement de bureau KDE
=Sum.gl: KDE Desktop Environment
=Sum.hu: KDE grafikus munkakörnyezet
=Sum.it: Ambiente Desktop KDE
=Sum.ja: KDE デスクトップ環境
=Sum.lt: KDE Desktop Environment
=Sum.nl: KDE Desktop omgeving
=Sum.pt: KDE Desktop Environment
=Sum.sv: KDE Desktop Environment
=Sum.tr: KDE Desktop Environment

+Req:
X11
Basis-Sound 
-Req:

+Con:
Minimal 
-Con:

+Rec:
KDE-Multimedia
-Rec:

+Sug:
KDE-Games
-Sug:

=Cat: addon

=Vis: true

+Ins:
SDL
aalib
alsa
...
smpppd
unixODBC
wvdial
-Ins:

+Ins.cs:
kde3-i18n-cs
-Ins.cs:

+Ins.da:
kde3-i18n-da
-Ins.da:

+Ins.de:
kde3-i18n-de
-Ins.de:
...