1 |
On 09/02/2012 04:45 PM, Fabio Erculiani wrote: |
2 |
> Hi, |
3 |
> this is actually a fork of the HDEPEND thread (sorry for having |
4 |
> diverged that much there). |
5 |
> As I wrote in the other thread, the problem with PDEPEND is that there |
6 |
> are two (or more) semantics: |
7 |
> |
8 |
> - PDEPENDs used as "suggestions" but yet being considered in the |
9 |
> depgraph and actually installed. Usually "suggestion" PDEPENDs are |
10 |
> just packages providing extra features, not strictly required for the |
11 |
> package to work at all. |
12 |
> - PDEPENDs used for breaking dependency cycles (no problem with that). |
13 |
> |
14 |
> That is why I'd like to propose to introduce SDEPEND, with the |
15 |
> following, simple, semantics: |
16 |
> dependencies listed in SDEPEND are not required at build time nor |
17 |
> strictly at runtime and they just enable more features in the |
18 |
> installed application. There can be "use?" literals and by default, |
19 |
> PMS should not pull them in in the dependencies calculation if not |
20 |
> specifically asked (through argument or configuration file or else -- |
21 |
> like it happens with binpkgs and --with-bdeps). |
22 |
> |
23 |
> A bunch of advantages over GLEP 62: |
24 |
> - Simplicity (really, as in KISS). SDEPENDs are easier to understand |
25 |
> and deal with, both at PMS (code) and user levels. They are also |
26 |
> straightforward to use in ebuilds (dev) and through emerge (user). [1] |
27 |
> - The USE flags meaning doesn't really get "stretched" introducing |
28 |
> obscure, unknown and dangerous possible side effects when deployed in |
29 |
> the real(tm) world. I understand that there is some level of risk with |
30 |
> SDEPENDs as well, but we've seen them already in Exherbo and they seem |
31 |
> to work fine there (I've been told this). |
32 |
> - Doesn't preclude the implementation of GLEP 62 anyway. SDEPENDs are |
33 |
> just "suggested" dependencies after all! |
34 |
> - No need to introduce funky cache invalidation logic for PMS |
35 |
> aggressively using caching at several layers of their stack and that |
36 |
> guarantee a consistent depgraph for the installed pkgs repository as |
37 |
> well [2]. |
38 |
> - Fixes the "dissociative identity disorder" of PDEPEND ;-). |
39 |
> |
40 |
> Disadvantages: |
41 |
> - If SDEPEND contains USE flags, these are written in stone and cannot |
42 |
> be changed without a rebuild. This is generally fine for source |
43 |
> packages, a bit less for binpkgs, but not really a big deal IMO. |
44 |
> - Not as "elastic" as GLEP 62 USE flags, but neither *DEPENDs are |
45 |
> - mgorny will hate me (eheheheh) |
46 |
> |
47 |
> Discuss. |
48 |
> |
49 |
> [1] It took me more than 5 minutes to understand how GLEP 62 works in |
50 |
> practice and this is not really good to me, for a simple feature like |
51 |
> this. |
52 |
> [2] From GLEP 62 page: "and it is not strictly required that a package |
53 |
> manager must ensure that the dependency graph is still consistent |
54 |
> afterwards". |
55 |
|
56 |
|
57 |
Why not introduce a global useflag such as "suggested-deps" which |
58 |
complies with GLEP 62 meaning it will be in IUSE_RUNTIME. |