From 4873e71dd032f3f1fc00cb98f9d17ea9d3b1b390 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Thu, 21 Dec 2006 00:32:10 +0000 Subject: When a removal phase fails, tell the user where the ebuild is and advise them that the ebuild can be removed in order to skip the removal phases. svn path=/main/trunk/; revision=5340 --- bin/emerge | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'bin') diff --git a/bin/emerge b/bin/emerge index 744db7b9e..8d310da48 100755 --- a/bin/emerge +++ b/bin/emerge @@ -3230,11 +3230,32 @@ def unmerge(settings, myopts, vartree, unmerge_action, unmerge_files, vartree=vartree, ldpath_mtimes=ldpath_mtimes) if retval != os.EX_OK: emergelog(xterm_titles, " !!! unmerge FAILURE: "+y) + ebuild = vartree.dbapi.findname(y) + show_unmerge_failure_message(y, ebuild, retval) + sys.exit(retval) else: clean_world(vartree.dbapi, y) emergelog(xterm_titles, " >>> unmerge success: "+y) return 1 +def show_unmerge_failure_message(pkg, ebuild, retval): + + from formatter import AbstractFormatter, DumbWriter + f = AbstractFormatter(DumbWriter(maxcol=72)) + + msg = [] + msg.append("A removal phase of the '%s' package " % pkg) + msg.append("has failed with exit value %s. " % retval) + msg.append("The problem occurred while executing ") + msg.append("the ebuild located at '%s'. " % ebuild) + msg.append("If necessary, manually remove the ebuild " ) + msg.append("in order to skip the execution of removal phases.") + + print + for x in msg: + f.add_flowing_data(x) + f.end_paragraph(1) + def chk_updated_info_files(root, infodirs, prev_mtimes, retval): print -- cgit v1.2.3-1-g7c22