Gentoo Archives: gentoo-dev

From: Alec Warner <antarus@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] Re: Re: Re: [RFC] What features should be included in EAPI 2?
Date: Fri, 22 Aug 2008 02:26:51
Message-Id: b41005390808211926i6dff4557q93d32a06f1e7146d@mail.gmail.com
In Reply to: [gentoo-dev] Re: Re: Re: [RFC] What features should be included in EAPI 2? by Steve Long
1 On Thu, Aug 21, 2008 at 8:35 AM, Steve Long <slong@××××××××××××××××××.uk> wrote:
2 > Ciaran McCreesh wrote:
3 >
4 >> On Tue, 19 Aug 2008 21:27:03 +0100
5 >> Steve Long <slong@××××××××××××××××××.uk> wrote:
6 >>> > On Tue, 19 Aug 2008 23:31:17 +0530
7 >>> > Arun Raghavan <ford_prefect@g.o> wrote:
8 >>> >> Ciaran McCreesh wrote:
9 >>> >> > The benefit is that it's a logically separate action, and will
10 >>> >> > avoid all the silliness of people repeatedly changing their
11 >>> >> > minds about which phase should do the eautoreconf calls and so
12 >>> >> > on.
13 >>> Er, that would be the new src_configure?
14 >>
15 >> Oh really?
16 >>
17 > Hmm fun as it isn't playing these games with you..
18 >
19
20 If he doesn't respond with anything useful; just act like he conceded
21 the point and move on.
22
23 >>> > In the grand scheme of things, no. In the grand scheme of things,
24 >>> > you only *need* a single src_ function. From a maintainer
25 >>> > convenience perspective, however, src_prepare is marginally more
26 >>> > useful than having a split src_configure.
27 >>> >
28 >>> How so?
29 >>>
30 >>> From a user point of view, and from a maintenance point of view,
31 >>> src_configure is very useful.
32 >>
33 >> Any reason you can provide for src_configure being useful can be used
34 >> with slight modification for src_prepare.
35 >>
36 > Which is no reason to add a new phase. OFC if zac wants to provide it that's
37 > entirely up to him.
38 >
39
40 You are saying src_configure is useful; he is saying src_prepare is
41 useful. both of you are arguments as to why you think that way; that
42 is all he is saying.
43
44 >>> > It's a better mapping of the things ebuilds do than the current set
45 >>> > of functions.
46 >>> >
47 >>> > The logic is this: lots of ebuilds end up duplicating src_unpack
48 >>> > (or, in future EAPIs, calling 'default') and then adding things to
49 >>> > do preparation work. Experience suggests that the most common
50 >>> > reason for overriding src_unpack is to do preparation work, not to
51 >>> > change how things are unpacked.
52 >>> >
53 >>> Yeah I've always seen src_unpack as being more cogent to preparation
54 >>> of src files, than to actually untarring stuff.
55 >>
56 >> Yes, the 'unpack' in the name really does go along with the phase being
57 >> used to prepare things.
58 >>
59 > Oh so this is about correct nomenclature rather than anything else? I see.
60 >
61 >>> So what? Why make a new phase which every new dev has to know about,
62 >>> and we have to provide pre_ and post_ hooks for, when the existing
63 >>> phase covers the usage fine?
64 >>
65 >> Make a phase for each common logically distinct operation. Which, with
66 >> src_prepare being added, we almost have.
67 >>
68 > Yes, I see, because it's really needed; real functionality our users have
69 > been crying out for.
70 >
71
72 At least one has...do you want to vote for each feature? What will it
73 take to convince you?
74
75 >> (The one missing is a src_fetch_extra or somesuch, for use by the scm
76 >> eclasses. But that wants special handling, and is probably best left to
77 >> another EAPI...)
78 >>
79 > Yes, a defined, configurable API for dealing with any version control would
80 > be useful, though your minion seemed to argue against it in #-portage. I
81 > can think of a couple of things that would be more useful to end-users:
82 > pkg_check for interactive ebuilds (eg license acceptance or media access),
83 > proper support for cross-compiling, integration of prefix, better handling
84 > of overlays, and of binpkgs..
85 >
86
87 Your comment is arguably about feature prioritization; not about
88 whether a given feature is necessary.
89
90 If we have two orthogonal features A and B; you can't argue that A is
91 necessary and B is not because A is more important to work on; the
92 only thing you have succeeded in doing is arguing that A should be
93 done first.
94
95 >>> > (Number-wise... For Exherbo, where the split's already been made,
96 >>> > custom src_prepare functions are three times more common than custom
97 >>> > src_unpack functions. And that figure's significantly lower than
98 >>> > what Gentoo would see, because with exheres-0 'default' functions
99 >>> > you don't need to write a src_prepare if you're merely applying
100 >>> > patches.)
101 >>> >
102 >>> Well it's easy enough to auto-apply patches, given a declaration in
103 >>> the ebuild (since files for all versions are in the same dir.) It
104 >>> certainly doesn't need a new phase.
105 >>
106 >> Well, if you're proposing that Gentoo also adopts the more complicated
107 >> default_* functions from exheres-0, you're more than welcome to write
108 >> up a proposal...
109 >>
110 > Tsk of course not. default functions are in the pipeline in any case, but
111 > glad to see you're still using this list for proselytising your pet project
112 > while avoiding true discussion. In any event, it wouldn't be needed.
113 >
114 >>> >> The *only* potential "benefit" I see here is that at some point of
115 >>> >> time in the nebulous future, it might be possible to tell the PM to
116 >>> >> always skip src_prepare in order to give a system where everything
117 >>> >> is "vanilla".
118 >>> >
119 >>> > Such a system wouldn't be usable... Not all of Gentoo's patches are
120 >>> > non-essential.
121 >>> >
122 >>> So the real, fully-defined, explicit benefit is..
123 >>
124 >> The same as the benefit of splitting src_compile into src_configure and
125 >> src_compile, except that it'll be of use to a slightly larger
126 >> proportion of ebuilds.
127 >>
128 > As ever, you fail to argue the actual case, preferring to hide behind "the
129 > same reasons as.." which is a variant on the "if you don't understand some
130 > one line comment, you're not qualified to discuss anything (plus you're
131 > ugly.)"
132 >
133 > The reasoning others have given (yes it is possible to explain why without
134 > making people read thru 20 one line emails) is that this would be useful
135 > for live ebuilds. In maintenance terms (when looking at the lifecycle of an
136 > ebuild) I don't see the need, since there is no unpacking required from a
137 > vcs pull. Once it's made into a normal ebuild, any preparation would
138 > necessarily require review and might not be needed at all.
139 >
140 > Call the function what you like (or add a new phase with the hooks) it's
141 > still logically one point in time. For a live ebuild it's to prepare the
142 > src, for a normal one to (possibly) unpack and prepare.
143 >
144 > src_configure is a logically distinct action which warrants a new phase,
145 > since the e*conf call in compile makes retrying a long build (without
146 > having to recompile stuff which doesn't need it) much more difficult; its
147 > absence prevents full use of make. Prepare does not warrant a new phase imo
148 > since it should only be run once per compilation instance; anything it does
149 > can either be done in unpack, or in configure should that be more useful.
150
151 src_prepare is a logically distinct action (maybe if we called it
152 src_patch it would be clearer?)
153 Certainly we only want to patch sources once every time we want to
154 build a package; what if patching is expensive?
155
156 The point being the same argument that is for src_configure (that it
157 is expensive and adding it makes ebuilds clearer) could be said for
158 src_prepare (preparation could be expensive and it makes ebuilds
159 clearer).
160
161 So why again should we not add it?
162
163 -Alec

Replies