Gentoo Archives: gentoo-portage-dev

From: Zac Medico <zmedico@g.o>
To: gentoo-portage-dev@l.g.o
Cc: Zac Medico <zmedico@g.o>
Subject: [gentoo-portage-dev] [PATCH] AbstractEbuildProcess: validate cgroup release agent
Date: Tue, 03 Nov 2015 21:13:28
Message-Id: 1446585183-1110-1-git-send-email-zmedico@gentoo.org
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

Replies