From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1QM3Vg-0000gQ-Hq for garchives@archives.gentoo.org; Mon, 16 May 2011 19:31:21 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id AEC5A1C0BF; Mon, 16 May 2011 19:31:12 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 633411C0BF for ; Mon, 16 May 2011 19:31:12 +0000 (UTC) Received: from pelican.gentoo.org (unknown [66.219.59.40]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id AE8941B4035 for ; Mon, 16 May 2011 19:31:11 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id CD9807448A for ; Mon, 16 May 2011 19:31:10 +0000 (UTC) From: "Zac Medico" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Zac Medico" Message-ID: <1c16fe8e3740e6b9e1e1562731a0c4b5a000fd92.zmedico@gentoo> Subject: [gentoo-commits] proj/portage:master commit in: pym/_emerge/ X-VCS-Repository: proj/portage X-VCS-Files: pym/_emerge/depgraph.py X-VCS-Directories: pym/_emerge/ X-VCS-Committer: zmedico X-VCS-Committer-Name: Zac Medico X-VCS-Revision: 1c16fe8e3740e6b9e1e1562731a0c4b5a000fd92 Date: Mon, 16 May 2011 19:31:10 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: X-Archives-Hash: 1a4de293ae909c4d9300a0ea61df94bd commit: 1c16fe8e3740e6b9e1e1562731a0c4b5a000fd92 Author: Sebastian Luther gmx de> AuthorDate: Mon May 16 19:21:12 2011 +0000 Commit: Zac Medico gentoo org> CommitDate: Mon May 16 19:27:38 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/portage.git;a= =3Dcommit;h=3D1c16fe8e --autounmask-write: respect --ask --- pym/_emerge/depgraph.py | 100 ++++++++++++++++++++++++++++++-----------= ------ 1 files changed, 64 insertions(+), 36 deletions(-) diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index 5004e6c..2a6d1b1 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -57,6 +57,7 @@ from _emerge.SetArg import SetArg from _emerge.show_invalid_depstring_notice import show_invalid_depstring= _notice from _emerge.UnmergeDepPriority import UnmergeDepPriority from _emerge.UseFlagDisplay import pkg_use_display +from _emerge.userquery import userquery =20 from _emerge.resolver.backtracking import Backtracker, BacktrackParamete= r from _emerge.resolver.slot_collision import slot_conflict_handler @@ -5538,6 +5539,8 @@ class depgraph(object): =20 autounmask_write =3D self._frozen_config.myopts.get("--autounmask-writ= e", "n") =3D=3D True pretend =3D "--pretend" in self._frozen_config.myopts + ask =3D "--ask" in self._frozen_config.myopts + enter_invalid =3D '--ask-enter-invalid' in self._frozen_config.myopts =20 def check_if_latest(pkg): is_latest =3D True @@ -5710,6 +5713,30 @@ class depgraph(object): =20 write_to_file =3D not problems =20 + for root in roots: + abs_user_config =3D os.path.join(root, USER_CONFIG_PATH) + if len(roots) > 1: + writemsg_stdout("\nFor %s:\n" % abs_user_config, noiselevel=3D-1) + + if root in unstable_keyword_msg: + writemsg_stdout("\nThe following " + colorize("BAD", "keyword change= s") + \ + " are necessary to proceed:\n", noiselevel=3D-1) + writemsg_stdout("".join(unstable_keyword_msg[root]), noiselevel=3D-1= ) + + if root in p_mask_change_msg: + writemsg_stdout("\nThe following " + colorize("BAD", "mask changes")= + \ + " are necessary to proceed:\n", noiselevel=3D-1) + writemsg_stdout("".join(p_mask_change_msg[root]), noiselevel=3D-1) + + if root in use_changes_msg: + writemsg_stdout("\nThe following " + colorize("BAD", "USE changes") = + \ + " are necessary to proceed:\n", noiselevel=3D-1) + writemsg_stdout("".join(use_changes_msg[root]), noiselevel=3D-1) + + if root in license_msg: + writemsg_stdout("\nThe following " + colorize("BAD", "license change= s") + \ + " are necessary to proceed:\n", noiselevel=3D-1) + writemsg_stdout("".join(license_msg[root]), noiselevel=3D-1) =20 protect_obj =3D {} if write_to_file: @@ -5719,48 +5746,49 @@ class depgraph(object): shlex_split(settings.get("CONFIG_PROTECT", "")), shlex_split(settings.get("CONFIG_PROTECT_MASK", ""))) =20 - def write_changes(root, change_type, changes, file_to_write_to): - writemsg_stdout("\nThe following " + colorize("BAD", "%s changes" % c= hange_type) + \ - " are necessary to proceed:\n", noiselevel=3D-1) - writemsg_stdout("".join(changes), noiselevel=3D-1) - if write_to_file: + def write_changes(root, changes, file_to_write_to): + try: + file_contents =3D codecs.open( + _unicode_encode(file_to_write_to, + encoding=3D_encodings['fs'], errors=3D'strict'), + mode=3D'r', encoding=3D_encodings['content'], + errors=3D'replace').readlines() + except IOError as e: + problems.append("!!! Failed to read '%s': %s\n" % (file_to_write_to,= e)) + else: + file_contents.extend(changes) + if protect_obj[root].isprotected(file_to_write_to): + file_to_write_to =3D new_protect_filename(file_to_write_to) try: - file_contents =3D codecs.open( - _unicode_encode(file_to_write_to, - encoding=3D_encodings['fs'], errors=3D'strict'), - mode=3D'r', encoding=3D_encodings['content'], - errors=3D'replace').readlines() - except IOError as e: - problems.append("!!! Failed to read '%s': %s\n" % (file_to_write_to= , e)) - else: - file_contents.extend(changes) - if protect_obj[root].isprotected(file_to_write_to): - file_to_write_to =3D new_protect_filename(file_to_write_to) - try: - write_atomic(file_to_write_to, "".join(file_contents)) - except PortageException: - problems.append("!!! Failed to write '%s'\n" % file_to_write_to) + write_atomic(file_to_write_to, "".join(file_contents)) + except PortageException: + problems.append("!!! Failed to write '%s'\n" % file_to_write_to) =20 - for root in roots: - abs_user_config =3D os.path.join(root, USER_CONFIG_PATH) - if len(roots) > 1: - writemsg_stdout("\nFor %s:\n" % abs_user_config, noiselevel=3D-1) + if write_to_file and ask: + prompt =3D "\nWould you like to add these " + \ + "changes to your config files?" + if userquery(prompt, enter_invalid) =3D=3D 'No': + write_to_file =3D False =20 - if root in unstable_keyword_msg: - write_changes(root, "keyword", unstable_keyword_msg[root], - file_to_write_to.get((abs_user_config, "package.keywords"))) + if write_to_file: + for root in roots: + abs_user_config =3D os.path.join(root, USER_CONFIG_PATH) =20 - if root in p_mask_change_msg: - write_changes(root, "mask", p_mask_change_msg[root], - file_to_write_to.get((abs_user_config, "package.unmask"))) + if root in unstable_keyword_msg: + write_changes(root, unstable_keyword_msg[root], + file_to_write_to.get((abs_user_config, "package.keywords"))) =20 - if root in use_changes_msg: - write_changes(root, "USE", use_changes_msg[root], - file_to_write_to.get((abs_user_config, "package.use"))) + if root in p_mask_change_msg: + write_changes(root, p_mask_change_msg[root], + file_to_write_to.get((abs_user_config, "package.unmask"))) =20 - if root in license_msg: - write_changes(root, "license", license_msg[root], - file_to_write_to.get((abs_user_config, "package.license"))) + if root in use_changes_msg: + write_changes(root, use_changes_msg[root], + file_to_write_to.get((abs_user_config, "package.use"))) + + if root in license_msg: + write_changes(root, license_msg[root], + file_to_write_to.get((abs_user_config, "package.license"))) =20 if problems: writemsg_stdout("\nThe following problems occurred while writing auto= unmask changes:\n", \