summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/EbuildProcess.py
blob: 6a9c8df62ffa0111a3807307320f56f696be779b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

from _emerge.AbstractEbuildProcess import AbstractEbuildProcess
import portage
portage.proxy.lazyimport.lazyimport(globals(),
	'portage.package.ebuild.doebuild:_post_phase_userpriv_perms,' + \
		'_spawn_actionmap,_doebuild_spawn'
)
from portage import os

class EbuildProcess(AbstractEbuildProcess):

	__slots__ = ('actionmap',)

	def _start(self):
		# Don't open the log file during the clean phase since the
		# open file can result in an nfs lock on $T/build.log which
		# prevents the clean phase from removing $T.
		if self.phase not in ("clean", "cleanrm"):
			self.logfile = self.settings.get("PORTAGE_LOG_FILE")
		AbstractEbuildProcess._start(self)

	def _spawn(self, args, **kwargs):

		actionmap = self.actionmap
		if actionmap is None:
			actionmap = _spawn_actionmap(self.settings)

		return _doebuild_spawn(self.phase, self.settings,
				actionmap, **kwargs)

	def _set_returncode(self, wait_retval):
		AbstractEbuildProcess._set_returncode(self, wait_retval)

		if self.phase == "test" and self.returncode != os.EX_OK and \
			"test-fail-continue" in self.settings.features:
			self.returncode = os.EX_OK

		_post_phase_userpriv_perms(self.settings)