aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'portage_with_autodep/pym/_emerge/EbuildBuild.py')
-rw-r--r--portage_with_autodep/pym/_emerge/EbuildBuild.py48
1 files changed, 32 insertions, 16 deletions
diff --git a/portage_with_autodep/pym/_emerge/EbuildBuild.py b/portage_with_autodep/pym/_emerge/EbuildBuild.py
index 5a48f8e..f680434 100644
--- a/portage_with_autodep/pym/_emerge/EbuildBuild.py
+++ b/portage_with_autodep/pym/_emerge/EbuildBuild.py
@@ -1,4 +1,4 @@
-# Copyright 1999-2012 Gentoo Foundation
+# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
from _emerge.EbuildExecuter import EbuildExecuter
@@ -12,11 +12,14 @@ from _emerge.EbuildBuildDir import EbuildBuildDir
from _emerge.EventsAnalyser import EventsAnalyser, FilterProcGenerator
from _emerge.EventsLogger import EventsLogger
from _emerge.MiscFunctionsProcess import MiscFunctionsProcess
+from _emerge.TaskSequence import TaskSequence
+
from portage.util import writemsg
import portage
from portage import os
from portage.output import colorize
from portage.package.ebuild.digestcheck import digestcheck
+from portage.package.ebuild.digestgen import digestgen
from portage.package.ebuild.doebuild import _check_temp_dir
from portage.package.ebuild._spawn_nofetch import spawn_nofetch
@@ -37,7 +40,7 @@ class EbuildBuild(CompositeTask):
if rval != os.EX_OK:
self.returncode = rval
self._current_task = None
- self.wait()
+ self._async_wait()
return
root_config = pkg.root_config
@@ -62,7 +65,7 @@ class EbuildBuild(CompositeTask):
if not self._check_manifest():
self.returncode = 1
self._current_task = None
- self.wait()
+ self._async_wait()
return
prefetcher = self.prefetcher
@@ -93,7 +96,8 @@ class EbuildBuild(CompositeTask):
success = True
settings = self.settings
- if 'strict' in settings.features:
+ if 'strict' in settings.features and \
+ 'digest' not in settings.features:
settings['O'] = os.path.dirname(self._ebuild_path)
quiet_setting = settings.get('PORTAGE_QUIET')
settings['PORTAGE_QUIET'] = '1'
@@ -162,6 +166,10 @@ class EbuildBuild(CompositeTask):
if self.returncode != os.EX_OK:
portdb = self.pkg.root_config.trees[self._tree].dbapi
spawn_nofetch(portdb, self._ebuild_path, settings=self.settings)
+ elif 'digest' in self.settings.features:
+ if not digestgen(mysettings=self.settings,
+ myportdb=self.pkg.root_config.trees[self._tree].dbapi):
+ self.returncode = 1
self.wait()
def _pre_clean_exit(self, pre_clean_phase):
@@ -264,7 +272,7 @@ class EbuildBuild(CompositeTask):
"depcheckstrict" in self.settings["FEATURES"]:
# Lets start a log listening server
temp_path=self.settings.get("T",self.settings["PORTAGE_TMPDIR"])
-
+
if "depcheckstrict" not in self.settings["FEATURES"]:
# use default filter_proc
self.logserver=EventsLogger(socket_dir=temp_path)
@@ -273,11 +281,11 @@ class EbuildBuild(CompositeTask):
"This may take some time\n")
filter_gen=FilterProcGenerator(self.pkg.cpv, self.settings)
filter_proc=filter_gen.get_filter_proc()
- self.logserver=EventsLogger(socket_dir=temp_path,
+ self.logserver=EventsLogger(socket_dir=temp_path,
filter_proc=filter_proc)
-
+
self.logserver.start()
-
+
# Copy socket path to LOG_SOCKET environment variable
env=self.settings.configdict["pkg"]
env['LOG_SOCKET'] = self.logserver.socket_name
@@ -291,15 +299,13 @@ class EbuildBuild(CompositeTask):
env=self.settings.configdict["pkg"]
if 'LOG_SOCKET' in env:
del env['LOG_SOCKET']
-
+
events=self.logserver.stop()
self.logserver=None
analyser=EventsAnalyser(self.pkg.cpv, events, self.settings)
analyser.display() # show the analyse
#import pdb; pdb.set_trace()
-
-
def _fetch_failed(self):
# We only call the pkg_nofetch phase if either RESTRICT=fetch
@@ -308,8 +314,8 @@ class EbuildBuild(CompositeTask):
# to be displayed for problematic packages even though they do
# not set RESTRICT=fetch (bug #336499).
- if 'fetch' not in self.pkg.metadata.restrict and \
- 'nofetch' not in self.pkg.metadata.defined_phases:
+ if 'fetch' not in self.pkg.restrict and \
+ 'nofetch' not in self.pkg.defined_phases:
self._unlock_builddir()
self.wait()
return
@@ -348,10 +354,20 @@ class EbuildBuild(CompositeTask):
self.scheduler.output(msg,
log_path=self.settings.get("PORTAGE_LOG_FILE"))
- packager = EbuildBinpkg(background=self.background, pkg=self.pkg,
- scheduler=self.scheduler, settings=self.settings)
+ binpkg_tasks = TaskSequence()
+ requested_binpkg_formats = self.settings.get("PORTAGE_BINPKG_FORMAT", "tar").split()
+ for pkg_fmt in portage.const.SUPPORTED_BINPKG_FORMATS:
+ if pkg_fmt in requested_binpkg_formats:
+ if pkg_fmt == "rpm":
+ binpkg_tasks.add(EbuildPhase(background=self.background,
+ phase="rpm", scheduler=self.scheduler,
+ settings=self.settings))
+ else:
+ binpkg_tasks.add(EbuildBinpkg(background=self.background,
+ pkg=self.pkg, scheduler=self.scheduler,
+ settings=self.settings))
- self._start_task(packager, self._buildpkg_exit)
+ self._start_task(binpkg_tasks, self._buildpkg_exit)
def _buildpkg_exit(self, packager):
"""