1 |
Since commit e6be71af3f67ea274db455e9c24d5f84bd372c39, the release agent |
2 |
can refer to a temporary file if it was set while portage was updating |
3 |
itself. Fix it to reset the release agent when necessary. |
4 |
|
5 |
Fixes: e6be71af3f67 ("AbstractEbuildProcess: remove cgroup with release_agent (bug 561264)") |
6 |
--- |
7 |
pym/_emerge/AbstractEbuildProcess.py | 18 ++++++++++++++++++ |
8 |
1 file changed, 18 insertions(+) |
9 |
|
10 |
diff --git a/pym/_emerge/AbstractEbuildProcess.py b/pym/_emerge/AbstractEbuildProcess.py |
11 |
index 2b5d9c7..8bd30a6 100644 |
12 |
--- a/pym/_emerge/AbstractEbuildProcess.py |
13 |
+++ b/pym/_emerge/AbstractEbuildProcess.py |
14 |
@@ -96,6 +96,24 @@ class AbstractEbuildProcess(SpawnProcess): |
15 |
with open(os.path.join( |
16 |
cgroup_portage, 'notify_on_release'), 'w') as f: |
17 |
f.write('1') |
18 |
+ else: |
19 |
+ # Update release_agent if it no longer exists, because |
20 |
+ # it refers to a temporary path when portage is updating |
21 |
+ # itself. |
22 |
+ release_agent = os.path.join( |
23 |
+ cgroup_portage, 'release_agent') |
24 |
+ try: |
25 |
+ with open(release_agent) as f: |
26 |
+ release_agent_path = f.readline().rstrip('\n') |
27 |
+ except EnvironmentError: |
28 |
+ release_agent_path = None |
29 |
+ |
30 |
+ if (release_agent_path is None or |
31 |
+ not os.path.exists(release_agent_path)): |
32 |
+ with open(release_agent, 'w') as f: |
33 |
+ f.write(os.path.join( |
34 |
+ self.settings['PORTAGE_BIN_PATH'], |
35 |
+ 'cgroup-release-agent')) |
36 |
|
37 |
cgroup_path = tempfile.mkdtemp(dir=cgroup_portage, |
38 |
prefix='%s:%s.' % (self.settings["CATEGORY"], |
39 |
-- |
40 |
2.4.9 |