On Wed, 25 Apr 2007 23:39:47 +0200
Rémi Cardona <[EMAIL PROTECTED]> wrote:

> Grant Goodyear a écrit :
> > Fabian Groffen wrote: [Sat Apr 14 2007, 03:33:03AM CDT]
> >> For people that like reading it in html or via the web:
> >> http://dev.gentoo.org/~grobian/gleps/glep-keywords.html
> >> http://dev.gentoo.org/~grobian/gleps/glep-keywords.txt
> > 
> > So what would a version of Gentoo for amd64 based on FreeBSD but
> > using glibc be called?  (It's not an entirely academic question;
> > Debian folks have worked on such a distribution for some time.)
> > I can't really tell from the text in your proposed GLEP.
> 
> I'm sure this GLEP can be extended later on should anyone feel like 
> doing a glibc-based freebsd port of gentoo (hurts my brains just
> writing this :) )

I think it will be better if this scheme is specified in friendlier
way for future expansions, hence I this it should be more flexible.

I would propose this two modifications:

(a) Instead of using n-tuples to describe a keyword, to use sets.

Both ways can be made semantically equivalent if we add the
restrictions that the sets of all the possible architecture, kernel,
userland, libc, ... sub-keywords are disjoint. (i.e. If there is a
userland sub-keyword bsd, then there can't be a kernel or libc
sub-keyword named bsd, they have to be named in a slightly different
way.)

But on the other hand, the notation will be way more flexible as a
keyword can only specify the relevant sub-keywords, while the rest can
be considered to be a wildcard (to mean "all")

(b) In case there are several keywords A and B:
- if A is more specific that B, A takes precedence (ej. with "!uclibc
  arm:uclibc" the package can be installed on any system that does not
  uses uclibc as libc or on any system with arm hardware.)
- if A is exactly as specific as B, the union of A and B is used (ej.
  "!uclibc arm" this is equivalent to the previous example.)

So to give more examples,

A package that can only be build on arm, sparc and x86 with linux and
glibc or arm with uclibc can be specified as:
"{arm,sparc,x86}:linux:glibc arm:uclibc"

A package (lets say linux-headers) that makes sense on all systems that
support linux and only them can be specified as:
"linux"

A package that is stable with gnu userland but still in testing with
bsd userland:
"{some,arches}:gnu ~{some,arches}:bsd" or just "gnu ~bsd" for all
arches.

Note that I propose to mark testing the whole set of sub-keywords, not
just like I run stable x86 with unstable bsd as I think it does not make
any sense as the resulting combination is still considered
unstable/testing.

There are two things I see against my proposal:
- This is not fully backward compatible, as it is currently equivalent
  to normal arch keywords if the user runs linux with glibc/uclibc,
  while it has a completely different meaning for Gentoo/Alt users.
  But I don't see it as a big problem because, as far as I understand,
  this will be just one of many changes that need to be made to make
  Gentoo/Alt as integrated as GNU/Linux is now into portage.

- For this to work, the keyword resolver will have to be way more
  complex than it is now, as it will have to compute the subset of all
  possible keywords some ebuild defines to see if user's accept
  keywords intersect it.

Kindest regards,
Yuri.
--
[EMAIL PROTECTED] mailing list

Reply via email to