Gentoo Archives: gentoo-dev

From: Dan Armak <ermak@×××××××××××××.il>
To: gentoo-dev@××××××××××.org
Subject: [gentoo-dev] ebuild versioning schemes / cvs ebuilds: to the Portage/emerge managers
Date: Sat, 07 Jul 2001 03:29:25
Message-Id: 01070712293702.00552@localhost
1 This is a query to the managers of Portage (drobbins etc.) about the ebuild
2 versioning schemes.
3
4 What I want is to implement CVS ebuilds, which will update a local code base
5 via
6 cvs/cvsup/rsync/... and compile/install from that. This is useful with
7 projects
8 like KDE, Ogg Vorbis and others that have more or less stable CVS code, and
9 also
10 any projects in whose development the user participates. This raises two
11 issues:
12
13 Issue 1
14 The smaller one: storage of the code between updates. This must be done since
15 the whole point of CVS is fast updates. We could for example tar/gzip the code
16 base and put it in distfiles under $P-cvs.tar.gz. The only objection to this
17 is
18 speed. (It can take a long while to compress say 50 MB+).
19 Also, there is the question of optionally cleaning the code between updates.
20 If
21 the user wants to build from cvs, every few days, something as large as KDE,
22 it
23 would be very useful to keep the intermediary files. On the other hand this
24 would bloat disk usage/compression times.
25 Optimally the user should be able to control all this. A vision: the user
26 would
27 have a separate code base which he could use to work on the project, commit to
28 CVS etc. But, it would be buildable via Portage to manage
29 depends/provides/versions better. After all it's one of Gentoo's goals that
30 every package built/installed on the system is there via Portage is possible.
31 I realize this is post-1.0 stuff, but it'd be nice to have some official
32 guidelines etc.
33
34 Issue 2
35 This is the large issue: ebuild versioning.
36 The current versioning scheme is inflexible IMHO. many packages have
37 non-standard version like LyX 1.1.6fix2 for example which can't be handled by
38 the existing scheme. And if we add cvs ebuilds, adding a _cvs version postfix
39 to the handler won't help, because you can't compare CVS versions with release
40 version numbers. The only way to do that would be to mark both cvs versions
41 and
42 release versions with timestamps, and even then you could have several cvs
43 versions in one day (so they'd have the same timestamp).
44 CVS is _always_ newer than _any_ release version! (Unless it hasn't been
45 updated.)
46 The idea was raised of marking cvs versions as belonging to the period
47 between two adjacent releases. For example the cvs between kde 2.1.2 and
48 2.2_alpha1.
49 However this still has drawbacks. You can't compare different cvs revisions.
50 This is because whenever you rebuild a cvs ebuild (from current cvs
51 presumably)
52 it's newer than whatever you previously had installed. And you can't code the
53 version into the ebuild file. Unless you tell cvs to get a specific tiestamped
54 revision. But you don't need that, you need the latest cvs. Which is always
55 newer than the last release version. Ugh.
56 I put these question on IRC and got no new ideas. Granted, there was only 1
57 other participant in the chat.
58 Therefore, it appears that something more radically new is needed for
59 versioning
60 cvs ebuilds.
61
62 So - please reply and comment!
63
64 Dan Armak