1 |
Hello. |
2 |
|
3 |
The new "features" use.stable.mask and package.use.stable.mask |
4 |
have turned maintaining systems with mixed ARCH and ~ARCH keywords |
5 |
into a nightmare: |
6 |
|
7 |
Similarly to the (fortunately dropped) concept of forcing |
8 |
useflags if certain packages are installed this forces a |
9 |
magic on the user which can hardly be managed since it is |
10 |
not clearly presented to the user but hidden in some profiles. |
11 |
|
12 |
As I understand, it tries to solve a "social" issue |
13 |
(that an ARCH user might set a USE-flag which eventually |
14 |
pulls in an ~ARCH package) on a technical level |
15 |
(by forcibly disabling the USE-flag for the user). |
16 |
Solving social problems by technical means is never a good |
17 |
idea: |
18 |
|
19 |
While the former gives the stable user a clear message |
20 |
what is going wrong (after all, many stable users want |
21 |
some package which has not a stable version yet, so this |
22 |
should be something everybody should be able to handle), |
23 |
the latter hides causes and makes things almost unpredictable: |
24 |
|
25 |
Even if the user has put the dependency into |
26 |
package.accept_keywords, he will not be able to use the |
27 |
USE-flag on his packages unless |
28 |
*he puts stable versions into package.accept_keywords* |
29 |
(or - simlarly worse - overrides the profile). |
30 |
|
31 |
The really bad thing is that this is happening by magic |
32 |
"behind the user's back", i.e. contradicting the user's setting |
33 |
of USE-flag and package.use: If the user does not carefully |
34 |
read emerge's -v output, he even does not get informed that |
35 |
the support for his unstable package is dropped from the |
36 |
stable package, despite he might have specified the corresponding |
37 |
USE-flag globally. Even worse, even when reading the output |
38 |
carefully, the user cannot understand the reason: |
39 |
Since there are many reasons why use-flags can appear in () |
40 |
he will probably not even conjecture that actually something |
41 |
will not be working as he expected. |
42 |
|
43 |
Here are some other examples of negative effects happening |
44 |
just recently to me, ordered from not so severe to very bad: |
45 |
|
46 |
1. For several reasons I always want the most current |
47 |
emul-linux-x86* libraries, so they are in package.accept_keywords. |
48 |
Due to global ABI_X86=32 (which I also want), this forced me |
49 |
of course to put several libraries to ~amd64 since only |
50 |
new version support this. Some of the libraries are actually |
51 |
stable, so I have removed them from package.accept_keywords. |
52 |
So far, so good. |
53 |
But suddenly portage spitted unexplainable dependency errors, |
54 |
and I only expert users manually reading the profiles can |
55 |
understand that the reason is that use.stable.mask requires |
56 |
that stable versions need to be keyworded ~amd64 |
57 |
(or use.stable.mask has to be overridden in my profile). |
58 |
|
59 |
2. Just a few days ago dev-lang/python-exec:2 became stable |
60 |
on amd64, but dev-python/python-exec:2 is still ~amd64. |
61 |
Just to be sure to not miss anything, I have put the latter |
62 |
into package.accept_keywords, and hell break loose: |
63 |
Portaqe wanted me to emerge the git version of |
64 |
dev-lang/python-exec:0 and reemerge dozens of packages. |
65 |
I needed hours to find out what is the actual cause: |
66 |
The package.accept_keywords caused the use.stable.mask of |
67 |
python_targets_pypy2_0 und python_targets_python3_3 to become |
68 |
ineffective for dev-python/python-exec, but of course it is still |
69 |
effective for dev-lang/python-exec which is not be the case |
70 |
if I unmask the git version of dev-lang/python-exec. |
71 |
|
72 |
This is completely confusing since nowhere the git-version |
73 |
is marked differently than the non-git version. |
74 |
|
75 |
So, yes, portage's behaviour can be explained, but, no, |
76 |
it is not understandable by a user who wants portage |
77 |
to report what is really wrong and who does not want |
78 |
to check manually by reading all profiles and hunt down |
79 |
for reasons why certain flags are magically forced/disabled. |
80 |
|
81 |
3. As a side effect of 2., I realized that libreoffice and a dozen |
82 |
further packages get forced a rebuild. So, if eventually |
83 |
python-3.3 becomes stable and is removed from use.stable.mask, |
84 |
all stable users will have to rebuild almost their whole world, |
85 |
because python-exec then has one more "dummy" USE-flag. The same |
86 |
will happen again if pypy-2.0 becomes stable. |
87 |
So a lot of unnecessary rebuilds happen to stable users because |
88 |
of {package.,}use.stable.mask which most of the developers |
89 |
(who are often ~amd64 users) do not realize. |
90 |
|
91 |
Best Regards |
92 |
Martin |