-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

http://bugs.gentoo.org/show_bug.cgi?id=122527

When emerge would normally discard resume data, the attached patch causes it to 
save the resume data in mtimedb["resume_backup"] if the length of the mergelist 
is greater than 1.  When the user calls `emerge --resume` and there is nothing 
else to resume, the "resume_backup" is automatically used instead.  Feedback 
would be appreciated.

Zac
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)

iD8DBQFD8VAS/ejvha5XGaMRAs+DAJ9vgbAxvZphYtt0+nPFVwlpdq2e/QCfaBek
mvnVDeUN2Ir8dxbwC8P+h1s=
=wx8a
-----END PGP SIGNATURE-----
Index: pym/portage.py
===================================================================
--- pym/portage.py	(revision 2711)
+++ pym/portage.py	(working copy)
@@ -6724,7 +6724,8 @@
 mtimedbkeys=[
 "updates", "info",
 "version", "starttime",
-"resume", "ldpath"
+"resume", "resume_backup",
+"ldpath"
 ]
 mtimedbfile=root+"var/cache/edb/mtimedb"
 try:
Index: bin/emerge
===================================================================
--- bin/emerge	(revision 2711)
+++ bin/emerge	(working copy)
@@ -3224,7 +3224,12 @@
 			print darkgreen("These are the packages that would be %s, in order:") % action
 			print
 
-	if ("--resume" in myopts) and portage.mtimedb.has_key("resume"):
+	if ("--resume" in myopts) and (portage.mtimedb.has_key("resume") or \
+		portage.mtimedb.has_key("resume_backup")):
+		if not portage.mtimedb.has_key("resume"):
+			portage.mtimedb["resume"] = portage.mtimedb["resume_backup"]
+			del portage.mtimedb["resume_backup"]
+			portage.commit_mtimedb()
 		myresumeopts=portage.mtimedb["resume"]["myopts"][:]
 
 		for opt in ("--skipfirst", "--ask", "--verbose"):
@@ -3331,6 +3336,10 @@
 			favorites=portage.mtimedb["resume"]["favorites"]
 			mydepgraph.merge(portage.mtimedb["resume"]["mergelist"])
 		else:
+			if portage.mtimedb.has_key("resume") and len(portage.mtimedb["resume"]["mergelist"]) > 1:
+				portage.mtimedb["resume_backup"] = portage.mtimedb["resume"]
+				del portage.mtimedb["resume"]
+				portage.commit_mtimedb()
 			portage.mtimedb["resume"]={}
 			portage.mtimedb["resume"]["myopts"]=myopts
 			portage.mtimedb["resume"]["favorites"]=favorites

Reply via email to