diff options
author | Zac Medico <zmedico@gentoo.org> | 2007-07-28 02:52:39 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2007-07-28 02:52:39 +0000 |
commit | 2a2d408bb4ebfdcc64dbd121ed2a7129e9ff5dbe (patch) | |
tree | e509fc63858c287682c3dafedcd9c518e5bfa5c7 | |
parent | e8517a23f57fed2291aa6a4a65b791d7b819510a (diff) | |
download | portage-2a2d408bb4ebfdcc64dbd121ed2a7129e9ff5dbe.tar.gz portage-2a2d408bb4ebfdcc64dbd121ed2a7129e9ff5dbe.tar.bz2 portage-2a2d408bb4ebfdcc64dbd121ed2a7129e9ff5dbe.zip |
Handle 2 more cases where elog_process() needs to be called:
- binary install via pkgmerge() fails before reaching the merge phase (pkg_setup dies)
- doebuild() is called for the merge phase but it dies before reaching the merge phase
svn path=/main/trunk/; revision=7417
-rw-r--r-- | pym/portage/__init__.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py index fff401072..6e5ca9d42 100644 --- a/pym/portage/__init__.py +++ b/pym/portage/__init__.py @@ -4056,6 +4056,12 @@ def doebuild(myebuild, mydo, myroot, mysettings, debug=0, listonly=0, elif mydo=="merge": retval = spawnebuild("install", actionmap, mysettings, debug, alwaysdep=1, logfile=logfile) + if retval != os.EX_OK: + # The merge phase handles this already. Callers don't know how + # far this function got, so we have to call elog_process() here + # so that it's only called once. + from portage.elog import elog_process + elog_process(mysettings.mycpv, mysettings) if retval == os.EX_OK: retval = merge(mysettings["CATEGORY"], mysettings["PF"], mysettings["D"], os.path.join(mysettings["PORTAGE_BUILDDIR"], @@ -5057,6 +5063,9 @@ def pkgmerge(mytbz2, myroot, mysettings, mydbapi=None, vartree=None, prev_mtimes tbz2_lock = None builddir_lock = None catdir_lock = None + mycat = None + mypkg = None + did_merge_phase = False try: """ Don't lock the tbz2 file because the filesytem could be readonly or shared by a cluster.""" @@ -5129,11 +5138,18 @@ def pkgmerge(mytbz2, myroot, mysettings, mydbapi=None, vartree=None, prev_mtimes treetype="bintree") retval = mylink.merge(pkgloc, infloc, myroot, myebuild, cleanup=0, mydbapi=mydbapi, prev_mtimes=prev_mtimes) + did_merge_phase = True return retval finally: if tbz2_lock: portage.locks.unlockfile(tbz2_lock) if builddir_lock: + if not did_merge_phase: + # The merge phase handles this already. Callers don't know how + # far this function got, so we have to call elog_process() here + # so that it's only called once. + from portage.elog import elog_process + elog_process(mycat + "/" + mypkg, mysettings) try: shutil.rmtree(builddir) except (IOError, OSError), e: |