Matthew Miller (mattdm(a)mattdm.org) said:
On Tue, Nov 29, 2005 at 08:50:27PM +0100, Arjan van de Ven wrote:
> there's an alternative...
> there could be a cd split such that OOo and related all ends up on one
> cd, and the installer/firstboot adjusted in a way that it can take such
> "application CDs".
> Heck maybe gnome and kde could be such cd's as well over time.
I'm very much for that. In my mind, everything not on the "main" CD would
be
Extras, but if people prefer for some of these extra sets to be Core still,
that's cool too.
Here's something I wrote briefly to explain how some of this *could*
be done. Alas, no time to implement.
Bill
...
Rewrite splitdistro, pkgorder to let you do more fun things
-----------------------------------------------------------
First, you extend comps.
Each group can have an optional <discid> tag. Multiple groups
can share a <discid>. No discid for a group makes it 'Base',
or 'Core', or whatever you want to call it.
Later in the comps file you have <dischierarchy>, which
denotes an order for the <discid> tags. (Alternatively, define
discids to be numbers, and sort that way.) Order such that
any obvious dependencies between groups are resolved;, i.e.,
discids are listed below any discids they have deps on.
<discids> are linked to an English string that is the title
of the group, used in naming the CDs, and put in the discinfo
file for the CD. It's intltool-ized and all that other good stuff,
for display in $(YOUR PACKAGE GRABBING TOOL HERE).
Then, you redo how packages are ordered.
Look at the universe of packages in your tree. Arrange them
into the following groups based on comps:
A: Packages listed in a comp that doesn't have a discid
B: Packages listed in comps that have the first discid in the
dischierarchy
C: Packages listed in cimps that have the second discid ...
...
#: Packages not in any comp.
Structure things so that A, B, C, etc could be completely separate
repos from your CD-creation set. For example, A could be Core,
and B,C,D, etc are all things in Extras.
Depsolve A against B,C, ... and #; move packages from other buckets
to A to solve deps. If any deps are from B,C, ..., raise warning.
Depsolve B, against A and #, move packages to solve deps. If any deps
are unresolved, raise a hard error.
Depsolve C, against A, B, and #, ...
Throw everything else from # into A.
Generate pkgorder for A.
Generate pkgorder for B, as an additional transaction on top of A.
Generate pkgorder for C, as an additional transaction on top of A and B.
...
Split trees based on their separate pkgorders. Optionally, track in
the pkgorders which packages are added to B, C, D, etc from #; if B,
C, D... are sllightly over X discs, move those packages to A and
recompute.
Label CDs based on A with the standard "Name, Disc 1 ... X". Label
CDs based on B, C, D... with the discid's name, and discs 1 ... X.
Hence, now anaconda would display:
To complete the install, you need:
Fedora Core 5 disc #1
Fedora Core 5 disc #2
Fedora Office disc #1
Fedora Java disc #1