1 |
On Tue, 18 Dec 2007 09:53:50 +0000 (UTC) |
2 |
Duncan <1i5t5.duncan@×××.net> wrote: |
3 |
> Put directly, what is stopping us from actually allowing DIFFERENT |
4 |
> pre- source and post-source EAPI values? |
5 |
|
6 |
That's effectively what happens when a package manager sources a |
7 |
current EAPI=1 in a variable ebuild. |
8 |
|
9 |
> Here's the thinking. In the various PM discussions I've seen, it |
10 |
> hasn't been unusual to see remarks about (previously) waiting for |
11 |
> support in stable, and now about EAPI incompatibility, simply due |
12 |
> to /parsing/ the ebuild. This could offer a way around the problem, |
13 |
> by separating initial parsing/dependency EAPI and actual build/merge |
14 |
> EAPI. The pre-source EAPI could state the EAPI support required to |
15 |
> properly /source/parse/ the ebuild and generate the dependency tree, |
16 |
> etc, while allowing the post- source EAPI to be different then allows |
17 |
> additional flexibility in actual build/merge required EAPI. |
18 |
> |
19 |
> We'd then have two choices in terms of declaring pre-source support |
20 |
> (as opposed to post-source, full merge support). |
21 |
|
22 |
There's no advantage to doing so. If you don't support the EAPI, the |
23 |
only thing you can do is say that you don't support the EAPI. |
24 |
|
25 |
> 1) Simply that a compatible pre-source EAPI shouldn't blow up if |
26 |
> sourced while calculating dependencies or the like -- the ebuild may |
27 |
> be safely sourced and it shouldn't negatively affect the dependency |
28 |
> tree for unrelated packages, but dependencies for that specific |
29 |
> package may or may not be correct. |
30 |
|
31 |
But all you get is the knowledge that the ebuild uses an unsupported |
32 |
EAPI. Which you know already. |
33 |
|
34 |
I should state this explicitly: |
35 |
|
36 |
If an ebuild's EAPI isn't recognised by the package manager, the |
37 |
package manager can't and mustn't "sort of" work with that ebuild; |
38 |
there is no such thing as a "sort of supported" EAPI. The package |
39 |
manager can either ignore the ebuild entirely or display it in some kind |
40 |
of super fancy "masked due to EAPI" way -- and if it does the latter, |
41 |
the *only* information the package manager has about the ebuild is that |
42 |
its EAPI is unsupported. The package manager can't guess "ooh, well it |
43 |
sets SLOT, so I can assume that SLOT means what I think it does" -- a |
44 |
future EAPI might do something crazy like say that "if SLOT=dynamic, the |
45 |
speshul pkg_slot function is used". The package manager can't even |
46 |
assume that it knows what the unsupported EAPI's name really is or that |
47 |
it knows what the unsupported package's version is. |
48 |
|
49 |
> 2) That a compatible pre-source EAPI package, when sourced, should |
50 |
> allow generation of a reasonably reliable dependency tree for the |
51 |
> package in question, presumably including a PM upgrade as part of |
52 |
> that dependency tree. |
53 |
|
54 |
EAPIs aren't to specify the dependency tree. |
55 |
|
56 |
There's the added problem that it breaks the concept of metadata cache. |
57 |
That gets hairy. |
58 |
|
59 |
> OK, so it's off the wall, but tell me, is it useful and |
60 |
> implementable, or just stupid? |
61 |
|
62 |
It's implementable. It would just be of no use. |
63 |
|
64 |
-- |
65 |
Ciaran McCreesh |