[matter] log and report packages not built due to missing USE flags
This commit is contained in:
@@ -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")
|
||||
|
||||
|
||||
@@ -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("")
|
||||
|
||||
Reference in New Issue
Block a user