From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id AFF8059CA5 for ; Sun, 20 Mar 2016 14:33:18 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id AA99E21C05E; Sun, 20 Mar 2016 14:33:16 +0000 (UTC) Received: from mail-ig0-f175.google.com (mail-ig0-f175.google.com [209.85.213.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 3843721C05C for ; Sun, 20 Mar 2016 14:33:15 +0000 (UTC) Received: by mail-ig0-f175.google.com with SMTP id kc10so52469580igb.0 for ; Sun, 20 Mar 2016 07:33:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armills-info.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=bvfZll+haJEOYcqCpzS1LoKexNsa/9tZj5cbxGGygsw=; b=MoeadLLBvR3et38Ucv0qcmroz6RpxojdWjB/V7YIHCf8FlW8V5GgBA5ayQuLfMy7Zo dDTIa0bvnGnNAGN77JXLok+qjMCHMY3PwRpd9PMDyw+wjmF582nJNjn4U5fp3mxaHAAw Jw2neYWk62jpT/XEzqcIXLNXdwZRXCMhKF+KWwtf6nIXz24mzkLR8/xGJ09QyNqnqSsK fw2gbqovBKJRXpVbMYAZRNaztTMx2xlEc9Urz2sZVIgF/vTIOESV3aYOV/WvfrsPCAVH p+pM9T2O+91MteUAXNEWgKDRHFRa+fmXKYlxTp0QmABnXrHnjE4qFI89av2d94S8ndK+ 9k8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=bvfZll+haJEOYcqCpzS1LoKexNsa/9tZj5cbxGGygsw=; b=GjW0MA0KgMaODlB4XX951N+NFpkBKP08/s0QPeO54ZAjUKn/ha+h0dAbuppawH9mln 8iPAZYxAcqQFfPngGuNSxtWBuM9cbCoW8bq1YKY5qwXskSVgKl5aAQ9qMbgJUQR66zEq lJQSR8wvBLrfyDBYhqowMLFk+yj6NPzI8XymmxJqE1PjVCd6rieXUBXsWATzVf5Gdh8t 8R37v0U4NEP1JKeigHPd/8B6hGABm8yhgsQPgT6fV/Cl69DqS1iO9j6x6st6e1r54IjF hDdji9LcKoNlpVwU/N5ed2Iwbcw5Vor0UT8wBtt/WVW1rQags1Wj7jEj4qekd6H1w8ya isUw== X-Gm-Message-State: AD7BkJInreIobQUTsUWvRgaxaVEmAt8+dZ3jaC1LQyHvRHh1DE5R9neRR61tqCxYj3pX9Q== X-Received: by 10.50.92.70 with SMTP id ck6mr7887961igb.80.1458484395308; Sun, 20 Mar 2016 07:33:15 -0700 (PDT) Received: from adam-nas.hsd1.mi.comcast.net. (c-76-112-46-171.hsd1.mi.comcast.net. [76.112.46.171]) by smtp.gmail.com with ESMTPSA id k10sm3539350igm.22.2016.03.20.07.33.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 20 Mar 2016 07:33:14 -0700 (PDT) From: Adam Mills To: gentoo-portage-dev@lists.gentoo.org Cc: Adam Mills Subject: [gentoo-portage-dev] [PATCH] Colorize packages in user sets (bug 577720) Date: Sun, 20 Mar 2016 10:33:03 -0400 Message-Id: <1458484383-6152-1-git-send-email-adam@armills.info> X-Mailer: git-send-email 2.7.3 Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-portage-dev@lists.gentoo.org Reply-to: gentoo-portage-dev@lists.gentoo.org X-Archives-Salt: 90ba9727-79f7-4527-8e13-9b5577292ec5 X-Archives-Hash: ba838c140b567bafaaf132bbabc39940 Three new settings were added to /etc/portage/color.map: PKG_MERGE_USER_SET, PKG_BINARY_MERGE_USER_SET, and PKG_NOMERGE_USER_SET. These colors are applied when the package is selected from a set in /etc/portage/sets/ X-Gentoo-bug: 577720 X-Gentoo-bug-url: https://bugs.gentoo.org/show_bug.cgi?id=577720 --- man/color.map.5 | 11 ++++++++++ pym/_emerge/resolver/output.py | 39 ++++++++++++++++++++++------------ pym/_emerge/resolver/output_helpers.py | 8 ++++--- pym/portage/_sets/base.py | 3 +++ pym/portage/_sets/files.py | 3 +++ pym/portage/output.py | 39 ++++++++++++++++++---------------- 6 files changed, 68 insertions(+), 35 deletions(-) diff --git a/man/color.map.5 b/man/color.map.5 index 5543628..39f23f7 100644 --- a/man/color.map.5 +++ b/man/color.map.5 @@ -46,6 +46,9 @@ Defines color used for satisfied blockers. \fBPKG_MERGE\fR = \fI"darkgreen"\fR Defines color used for packages planned to be merged. .TP +\fBPKG_MERGE_USER_SET\fR = \fI"darkgreen"\fR +Defines color used for packages planned to be merged from a user defined set. +.TP \fBPKG_MERGE_SYSTEM\fR = \fI"darkgreen"\fR Defines color used for system packages planned to be merged. .TP @@ -55,6 +58,10 @@ Defines color used for world packages planned to be merged. \fBPKG_BINARY_MERGE\fR = \fI"purple"\fR Defines color used for packages planned to be merged using a binary package. .TP +\fBPKG_BINARY_MERGE_USER_SET\fR = \fI"purple"\fR +Defines color used for packages planned to be merged using a binary package +from a user defined set. +.TP \fBPKG_BINARY_MERGE_SYSTEM\fR = \fI"purple"\fR Defines color used for system packages planned to be merged using a binary package. @@ -66,6 +73,10 @@ package. \fBPKG_NOMERGE\fR = \fI"darkblue"\fR Defines color used for packages not planned to be merged. .TP +\fBPKG_NOMERGE_USER_SET\fR = \fI"darkblue"\fR +Defines color used for packages not planned to be merged from a user defined +set. +.TP \fBPKG_NOMERGE_SYSTEM\fR = \fI"darkblue"\fR Defines color used for system packages not planned to be merged. .TP diff --git a/pym/_emerge/resolver/output.py b/pym/_emerge/resolver/output.py index 400617d..4cb8393 100644 --- a/pym/_emerge/resolver/output.py +++ b/pym/_emerge/resolver/output.py @@ -271,6 +271,8 @@ class Display(object): return colorize("PKG_BINARY_MERGE_SYSTEM", pkg_str) elif pkg_info.world: return colorize("PKG_BINARY_MERGE_WORLD", pkg_str) + elif pkg_info.user_set: + return colorize("PKG_BINARY_MERGE_USER_SET", pkg_str) else: return colorize("PKG_BINARY_MERGE", pkg_str) else: @@ -278,6 +280,8 @@ class Display(object): return colorize("PKG_MERGE_SYSTEM", pkg_str) elif pkg_info.world: return colorize("PKG_MERGE_WORLD", pkg_str) + elif pkg_info.user_set: + return colorize("PKG_MERGE_USER_SET", pkg_str) else: return colorize("PKG_MERGE", pkg_str) elif pkg_info.operation == "uninstall": @@ -287,6 +291,8 @@ class Display(object): return colorize("PKG_NOMERGE_SYSTEM", pkg_str) elif pkg_info.world: return colorize("PKG_NOMERGE_WORLD", pkg_str) + elif pkg_info.user_set: + return colorize("PKG_NOMERGE_USER_SET", pkg_str) else: return colorize("PKG_NOMERGE", pkg_str) @@ -699,22 +705,27 @@ class Display(object): return - def check_system_world(self, pkg): - """Checks for any occurances of the package in the system or world sets + def check_sets(self, pkg): + """Checks for any occurances of the package in the portage sets @param pkg: _emerge.Package.Package instance - @rtype system and world booleans + @rtype user_set, system, and world booleans """ root_config = self.conf.roots[pkg.root] - system_set = root_config.sets["system"] - world_set = root_config.sets["selected"] - system = False - world = False + user_set = None + system = None + world = None try: - system = system_set.findAtomForPackage( - pkg, modified_use=self.conf.pkg_use_enabled(pkg)) - world = world_set.findAtomForPackage( - pkg, modified_use=self.conf.pkg_use_enabled(pkg)) + for set_name in root_config.sets: + if set_name == "system": + system = root_config.sets[set_name].findAtomForPackage( + pkg, modified_use=self.conf.pkg_use_enabled(pkg)) + elif set_name == "selected": + world = root_config.sets[set_name].findAtomForPackage( + pkg, modified_use=self.conf.pkg_use_enabled(pkg)) + elif user_set is None and root_config.sets[set_name].isUserSet(): + user_set = root_config.sets[set_name].findAtomForPackage( + pkg, modified_use=self.conf.pkg_use_enabled(pkg)) if not (self.conf.oneshot or world) and \ pkg.root == self.conf.target_root and \ self.conf.favorites.findAtomForPackage( @@ -726,7 +737,7 @@ class Display(object): except InvalidDependString: # This is reported elsewhere if relevant. pass - return system, world + return user_set, system, world @staticmethod @@ -863,8 +874,8 @@ class Display(object): self.oldlp = self.conf.columnwidth - 30 self.newlp = self.oldlp - 30 pkg_info.oldbest = self.convert_myoldbest(pkg, pkg_info) - pkg_info.system, pkg_info.world = \ - self.check_system_world(pkg) + pkg_info.user_set, pkg_info.system, pkg_info.world = \ + self.check_sets(pkg) if 'interactive' in pkg.properties and \ pkg.operation == 'merge': pkg_info.attr_display.interactive = True diff --git a/pym/_emerge/resolver/output_helpers.py b/pym/_emerge/resolver/output_helpers.py index 70f7bc0..801774f 100644 --- a/pym/_emerge/resolver/output_helpers.py +++ b/pym/_emerge/resolver/output_helpers.py @@ -596,7 +596,8 @@ class PkgInfo(object): __slots__ = ("attr_display", "built", "cp", "ebuild_path", "fetch_symbol", "merge", "oldbest", "oldbest_list", "operation", "ordered", "previous_pkg", - "repo_name", "repo_path_real", "slot", "sub_slot", "system", "use", "ver", "world") + "repo_name", "repo_path_real", "user_set", "slot", "sub_slot", + "system", "use", "ver", "world") def __init__(self): @@ -612,12 +613,13 @@ class PkgInfo(object): self.previous_pkg = None self.repo_path_real = '' self.repo_name = '' + self.user_set = None self.slot = '' self.sub_slot = '' - self.system = False + self.system = None self.use = '' self.ver = '' - self.world = False + self.world = None self.attr_display = PkgAttrDisplay() class PkgAttrDisplay(SlotObject): diff --git a/pym/portage/_sets/base.py b/pym/portage/_sets/base.py index ee20d36..a73fb93 100644 --- a/pym/portage/_sets/base.py +++ b/pym/portage/_sets/base.py @@ -173,6 +173,9 @@ class PackageSet(object): cpv_slot_list): yield atom + def isUserSet(self): + return False + class EditablePackageSet(PackageSet): def __init__(self, allow_wildcard=False, allow_repo=False): diff --git a/pym/portage/_sets/files.py b/pym/portage/_sets/files.py index e045701..7f844ef 100644 --- a/pym/portage/_sets/files.py +++ b/pym/portage/_sets/files.py @@ -174,6 +174,9 @@ class StaticFileSet(EditablePackageSet): greedy=greedy, dbapi=trees["vartree"].dbapi) return rValue multiBuilder = classmethod(multiBuilder) + + def isUserSet(self): + return True class ConfigFileSet(PackageSet): def __init__(self, filename): diff --git a/pym/portage/output.py b/pym/portage/output.py index bb7542b..80c67e8 100644 --- a/pym/portage/output.py +++ b/pym/portage/output.py @@ -128,24 +128,27 @@ _styles["HILITE"] = ( "teal", ) _styles["BRACKET"] = ( "blue", ) # Portage functions -_styles["INFORM"] = ( "darkgreen", ) -_styles["UNMERGE_WARN"] = ( "red", ) -_styles["SECURITY_WARN"] = ( "red", ) -_styles["MERGE_LIST_PROGRESS"] = ( "yellow", ) -_styles["PKG_BLOCKER"] = ( "red", ) -_styles["PKG_BLOCKER_SATISFIED"] = ( "darkblue", ) -_styles["PKG_MERGE"] = ( "darkgreen", ) -_styles["PKG_MERGE_SYSTEM"] = ( "darkgreen", ) -_styles["PKG_MERGE_WORLD"] = ( "green", ) -_styles["PKG_BINARY_MERGE"] = ( "purple", ) -_styles["PKG_BINARY_MERGE_SYSTEM"] = ( "purple", ) -_styles["PKG_BINARY_MERGE_WORLD"] = ( "fuchsia", ) -_styles["PKG_UNINSTALL"] = ( "red", ) -_styles["PKG_NOMERGE"] = ( "darkblue", ) -_styles["PKG_NOMERGE_SYSTEM"] = ( "darkblue", ) -_styles["PKG_NOMERGE_WORLD"] = ( "blue", ) -_styles["PROMPT_CHOICE_DEFAULT"] = ( "green", ) -_styles["PROMPT_CHOICE_OTHER"] = ( "red", ) +_styles["INFORM"] = ( "darkgreen", ) +_styles["UNMERGE_WARN"] = ( "red", ) +_styles["SECURITY_WARN"] = ( "red", ) +_styles["MERGE_LIST_PROGRESS"] = ( "yellow", ) +_styles["PKG_BLOCKER"] = ( "red", ) +_styles["PKG_BLOCKER_SATISFIED"] = ( "darkblue", ) +_styles["PKG_MERGE"] = ( "darkgreen", ) +_styles["PKG_MERGE_USER_SET"] = ( "darkgreen", ) +_styles["PKG_MERGE_SYSTEM"] = ( "darkgreen", ) +_styles["PKG_MERGE_WORLD"] = ( "green", ) +_styles["PKG_BINARY_MERGE"] = ( "purple", ) +_styles["PKG_BINARY_MERGE_USER_SET"] = ( "purple", ) +_styles["PKG_BINARY_MERGE_SYSTEM"] = ( "purple", ) +_styles["PKG_BINARY_MERGE_WORLD"] = ( "fuchsia", ) +_styles["PKG_UNINSTALL"] = ( "red", ) +_styles["PKG_NOMERGE"] = ( "darkblue", ) +_styles["PKG_NOMERGE_USER_SET"] = ( "darkblue", ) +_styles["PKG_NOMERGE_SYSTEM"] = ( "darkblue", ) +_styles["PKG_NOMERGE_WORLD"] = ( "blue", ) +_styles["PROMPT_CHOICE_DEFAULT"] = ( "green", ) +_styles["PROMPT_CHOICE_OTHER"] = ( "red", ) def _parse_color_map(config_root='/', onerror=None): """ -- 2.7.3