[matter] log and report packages not built due to missing USE flags

This commit is contained in:
Fabio Erculiani
2013-05-30 00:18:44 +02:00
parent 414bb45243
commit 7022d5cccc
2 changed files with 47 additions and 0 deletions

View File

@@ -81,6 +81,7 @@ class PackageBuilder(object):
self._not_found_packages = []
self._not_installed_packages = []
self._not_merged_packages = []
self._missing_use_packages = {}
@classmethod
def _build_standard_environment(cls, repository=None):
@@ -159,6 +160,13 @@ class PackageBuilder(object):
"""
return self._not_merged_packages
def get_missing_use_packages(self):
"""
Return the list of packages that haven't been merged due to missing
USE flags.
"""
return self._missing_use_packages
def run(self):
"""
Execute Package building action.
@@ -686,6 +694,28 @@ class PackageBuilder(object):
# print issues to stdout and give up
print_warning("dependencies calculation failed, aborting")
graph.display_problems()
# try to collect some info about the failure
bt_config = (graph.get_backtrack_infos() or {}).get("config", {})
supported_info = ["needed_use_config_changes"]
for k, v in bt_config.items():
if k not in supported_info:
print_warning("unsupported backtrack info: %s -> %s" % (
k, v,))
continue
if k == "needed_use_config_changes":
for tup in v:
try:
pkg, (new_use, new_changes) = tup
except (ValueError, TypeError):
print_error(
"unsupported needed_use_config_changes: %s" % (
tup,))
continue
obj = self._missing_use_packages.setdefault(pkg.cpv, {})
obj["pkg"] = pkg
obj["changes"] = new_changes
return 0
print_info("dependency graph generated successfully")

View File

@@ -85,6 +85,7 @@ def matter_main(binary_pms, nsargs, cwd, specs):
not_installed = []
not_merged = []
uninstalled = []
missing_use = {}
tainted_repositories = set()
spec_count = 0
tot_spec = len(specs)
@@ -113,6 +114,8 @@ def matter_main(binary_pms, nsargs, cwd, specs):
builder.get_not_merged_packages())
uninstalled.extend(
builder.get_uninstalled_packages())
missing_use.update(
builder.get_missing_use_packages())
preserved_libs = binary_pms.check_preserved_libraries(
emerge_config)
@@ -188,6 +191,20 @@ def matter_main(binary_pms, nsargs, cwd, specs):
"\n ".join(sorted(not_installed)),))
print_info("Packages uninstalled:\n %s" % (
"\n ".join(sorted(uninstalled)),))
if missing_use:
print_info("Packages not built due to missing USE flags:")
for atom in sorted(missing_use.keys()):
use_data = missing_use[atom]
use_l = []
for use in sorted(use_data["changes"]):
if use_data["changes"][use]:
use_l.append(use)
else:
use_l.append("-" + use)
print_info("%s %s" % (
use_data["pkg"].slot_atom, " ".join(use_l)))
print_info("Preserved libs: %s" % (
preserved_libs,))
print_info("")