Gentoo Archives: gentoo-dev

From: Luca Barbato <lu_zero@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] Re: Live source based ebuild proposals
Date: Sun, 15 Feb 2009 10:55:22
Message-Id: 4997F492.4070501@gentoo.org
In Reply to: Re: [gentoo-dev] Re: Live source based ebuild proposals by Luca Barbato
1 Second step, shortcomings.
2
3 Luca Barbato wrote:
4 > main problem:
5 > - have the possibility to track upstream w/out having to take a manual
6 > snapshot of their sources, but having portage automatically fetch them
7 > from their tree.
8
9 This issue isn't and shouldn't something that touches directly our
10 normal users, tracking upstream isn't something a common user would do
11 for any software, upstream releases should be more than enough for
12 normal usage.
13
14 Keyword here being "normal".
15
16 Additional concern from ferdy is the fact you may want to track multiple
17 branches/repos for a software and those do not have a version target.
18
19 Ciaranm pointed out already that for such cases you may rely on useflags
20 to switch between tip repos/branches. I'm not sure useflag should
21 trigger slot changes (see discussions about binutils usage of useflags),
22 but still that is a simple and clean enough solution for a quite small
23 corner case.
24
25 Alternatively one could set a virtual and use different package names.
26 This solution is uglier but I guess would be ok for an overlay.
27
28 > current situation:
29 > - we have some eclasses that on unpack phase fetch the sources from the
30 > upstream server, prepare them and then the usual ebuild process follows.
31 > - in order to make an ebuild using those eclasses be valued as the
32 > highest possible, the simplest solution had been give it a version "high
33 > enough", namely -9999. That makes simple track a single tree per package.
34 > - The same could be done with any version component in order to try to
35 > track multiple instances, so to track what will be the next 1.5 version,
36 > somebody could create an ebuild as 1.4.9999 or 1.5_pre9999, 9999 being
37 > an arbitrary big number.
38
39 The main issues so far:
40 - you have to hand produce "high enough" version values
41 - you cannot track what did you install since you don't have such
42 information
43 - you cannot do reemerge (useful for revdep rebuilds)
44 - in order to refresh them you need either to rely on script or on sets
45 hand produced or heuristically defined ("all ebuilds that inherit eclass
46 svn go in svn set").
47 - since you fetch on unpack phase you cannot use emerge -f consistently
48
49 > -scm proposal:
50 > - use a component version that makes whatever before it valued as "the
51 > highest within that component", likely -r or _p do, that includes the
52 > case "the highest version in absolute" in order to arbitrary decide an
53 > "high enough" value, namely -9999.
54 > - from what you can find in the glep, the change is apparently purely
55 > cosmetic beside the hinted but not expressed possibilities having
56 > portage fully aware those ebuild manage something "live" could give.
57
58 The issues so far:
59 - it makes the definition of "high enough number" and marks ebuilds as
60 live but doesn't address the other issues
61 - the glep is quite implicit and doesn't tell enough
62 - it requires changes that aren't exactly low impact for almost no
63 return, at least apparently since the glep doesn't tell enough.
64
65 [I hope that explains better why this proposal had been on hold for this
66 long and why the main requirement to reconsider it had been to add more
67 informations in the glep]
68
69 > live-properity proposal:
70 > - have a property to make portage aware that the ebuild is using live
71 > sources.
72 > - it doesn't add components to the ebuild version but just marks the
73 > ebuild. So this proposal aims to improve portage internal management but
74 > doesn't add or detract anything regarding version resolution.
75
76 The issue so far:
77 - it just solves the fact ebuilds aren't marked as "live" but doesn't
78 address any of the other problems.
79 - it has little impact on portage but also gives a little in itself
80
81 [That makes this proposal interesting since you may build on it
82 solutions to the other issues with low impact as well]
83
84 > live-template proposal:
85 > - you still have a new version component, in this case either ".live" or
86 > "_live", but in the template.
87 > - it isn't used directly in resolution but it generates automatically a
88 > normal version that get resolved as usual.
89 > - tries to make sure there is a way to get reproducible results
90 > regarding installed packages by embedding the informations to get again
91 > the same sources. So you can also re-emerge the very same package again
92 > you emerged it once since it has a defined version number.
93 > - tries to give developers willing to track upstream and then provide
94 > snapshots the ability to do that automatically.
95
96 The issue so far:
97 - it tries to scratches all the itches at the same time.
98 - it could be as invasive as the -scm proposal but tries to address
99 every issue in order to make worthy doing such radical changes in one go.
100 - The proposal itself hasn't covered many implementation and usage
101 details yet.
102
103 [What puzzles me is that some people claims you cannot do something with
104 live templates while you can with -scm]
105
106 lu
107
108 --
109
110 Luca Barbato
111 Gentoo Council Member
112 Gentoo/linux Gentoo/PPC
113 http://dev.gentoo.org/~lu_zero