Launchpad entry: https://launchpad.net/distros/ubuntu/+spec/seed-cleanup
Created: 2006-06-28 by MattZimmerman
Packages affected: seeds, germinate
Clean up the seed lists for Edgy; invent ways to reduce their complexity where reasonable.
The seeds are an essential part of the Ubuntu archive structure, and are maintained regularly by members of the core development team. However, they are not always maintained with an eye to minimalism, which means that they require periodic gardening efforts.
In some places, the verbosity of the seeds leads to debugging/development/documentation packages accidentally being left out of main, or packages being brought into main solely due to obsolete debugging/development/documentation packages in the seeds. In general, it should be possible to automate this.
- Colin adds a new package to the supported seed. This pulls a new library into main, but he must then add its -dev, -dbg and -doc packages to the seed by hand.
Herb uploads a new upstream version of a package, which no longer depends on a certain library. However, that library remains in Ubuntu main due to its -dev package which was seeded by hand.
Review the current EdgyEft seeds and remove obsolete packages, add rationales where non-obvious, and improve organization of the lists. (This was completed during UbuntuDeveloperSummitParis. The changes and their rationales are in the bzr seed archives, and this specification does not discuss them further.)
Extend Germinate to simplify maintenance of the seed lists by automatically handling common cases such as -dev and -dbg packages
Germinate has a notion of an "extra" seed, which it synthesises internally as it processes the explicit seeds. This consists of all binary packages that are generated from source packages in main but which are not themselves seeded (either explicitly or by dependency). -dev, -dbg, and -doc packages are typically in the category that we've traditionally called "rescued from extra", that is the set of packages which we're de facto supporting anyway by virtue of other binaries from the same source being required in main but which aren't themselves required for any other reason. At present, this category is manually maintained, but maintaining it correctly is labour-intensive and error-prone.
The common "rescued from extra" cases can be automated by adding a set of patterns to a seed (usually supported); any package matching any of these patterns will automatically be added to that seed. Since it is likely that there will be a few exceptions to any general policy like "include all -dev packages in main", we also provide a set of patterns identifying packages which should not be added despite matching the inclusion patterns.
Without using yet more punctuation characters, the simplest and clearest syntax available in the seeds is the header syntax also used for substitution variables. A typical addition to the supported seed might then read as follows:
* Extra-Include: *-dbg *-dev *-doc * Extra-Exclude: libevil*-dev
Patterns are normally shell-style, although they may be surrounded by slashes to use regular expressions instead (e.g. /^libevil.*-dev$/). This is to achieve more readable syntax by default while still retaining consistency with other existing seed syntax where regular expressions are allowed; we will make sure germinate accepts either shell globs or regular expressions in all contexts where it accepts patterns.
A version of germinate with the resulting change needs to be provided for installation on drescher.ubuntu.com for use on the Ubuntu archive. This may involve uploading it to dapper-updates, or simply providing a custom source package.
Informationally, initial tests suggest that the following additions to the Ubuntu seeds give reasonable results:
* Extra-Include: *-dbg *-dev *-doc * Extra-Exclude: lib*stdc++* # we want to consider these individually * Extra-Exclude: *gfortran* libmudflap* * Extra-Exclude: libavformat-dev libpostproc-dev * Extra-Exclude: libgdchart-gd2-xpm-dev * Extra-Exclude: libgdome2-ocaml-dev * Extra-Exclude: libmpich-mpd1.0-dev libmpich-shmem1.0-dev * Extra-Exclude: libnetpbm9-dev