1 |
On 06/12/2011 06:16 AM, Michał Górny wrote: |
2 |
> On Sun, 12 Jun 2011 02:13:35 -0700 |
3 |
> Zac Medico <zmedico@g.o> wrote: |
4 |
> |
5 |
>> On 06/12/2011 01:18 AM, Ulrich Mueller wrote: |
6 |
>>>>>>>> On Sun, 12 Jun 2011, Michał Górny wrote: |
7 |
>>> |
8 |
>>>> True. How about pkg_setup()? Shall we assume RDEPEND are there or |
9 |
>>>> rely on @system only? |
10 |
>>> |
11 |
>>> IIUC, with Portage's breaking of dependency cycles there's no |
12 |
>>> absolute guarantee that packages in RDEPEND will be available in |
13 |
>>> pkg_*. |
14 |
>> |
15 |
>> It would be more accurate to say that it's guaranteed except for cases |
16 |
>> in which circular dependencies make it impossible to guarantee. |
17 |
> |
18 |
> This or other words, this makes this an unreliable feature. So, right |
19 |
> now, users can't assume anything specific about dependencies being |
20 |
> installed in pkg_*? |
21 |
|
22 |
In practice it's very reliable, although the specific behavior varies |
23 |
depending on whether or not there are circular dependencies. So, it |
24 |
would probably make sense to specify it like this: |
25 |
|
26 |
(A) If there are no circular RDEPEND dependencies, then RDEPEND is |
27 |
guaranteed to be satisfied. |
28 |
|
29 |
(B) If there are circular RDEPEND dependencies, then RDEPEND is not |
30 |
guaranteed to be satisfied. |
31 |
|
32 |
> Doesn't this make it actually impossible to call |
33 |
> the installed application in pkg_postinst()? |
34 |
|
35 |
Only when case (B) applies. It may be possible to improve a situation |
36 |
like this by making the circular dependency PDEPEND in one direction and |
37 |
RDEPEND in the other: |
38 |
|
39 |
first RDEPENDs on second |
40 |
second PDEPENDs on first |
41 |
|
42 |
This make it possible to guarantee case (A) for the first package, while |
43 |
there is no such guarantee for the second package. |
44 |
-- |
45 |
Thanks, |
46 |
Zac |