| |
@@ -71,6 +71,8 @@
|
| |
|
| |
self.package_whitelist = set()
|
| |
|
| |
+ self.weak_deps = False
|
| |
+
|
| |
self.merge_options(**kwargs)
|
| |
|
| |
def __str__(self):
|
| |
@@ -78,6 +80,7 @@
|
| |
'fulltree=%s' % self.fulltree,
|
| |
'fulltree_excludes=%d items' % len(self.fulltree_excludes),
|
| |
'resolve_deps=%s' % self.resolve_deps,
|
| |
+ 'weak_deps=%s' % self.weak_deps,
|
| |
'selfhosting=%s' % self.selfhosting,
|
| |
'greedy_method=%s' % self.greedy_method,
|
| |
'langpacks=%s' % self.langpacks,
|
| |
@@ -205,6 +208,7 @@
|
| |
self.finished_add_source_package_deps = {} # {pkg: [deps]}
|
| |
|
| |
self.finished_get_package_deps_reqs = {}
|
| |
+ self.finished_supplements = set()
|
| |
|
| |
self.finished_add_conditional_packages = {} # {pkg: [pkgs]}
|
| |
self.finished_add_source_packages = {} # {pkg: src-pkg|None}
|
| |
@@ -316,6 +320,9 @@
|
| |
getattr(pkg, 'requires_pre', []) +
|
| |
getattr(pkg, 'requires_post', []))
|
| |
|
| |
+ if self.opts.weak_deps:
|
| |
+ requires.extend(pkg.recommends)
|
| |
+
|
| |
q = self.q_binary_packages.filter(provides=requires).apply()
|
| |
for req in requires:
|
| |
deps = self.finished_get_package_deps_reqs.setdefault(str(req), set())
|
| |
@@ -511,6 +518,26 @@
|
| |
|
| |
return added
|
| |
|
| |
+ @Profiler("Gather.add_supplements()")
|
| |
+ def add_supplements(self):
|
| |
+ added = set()
|
| |
+
|
| |
+ if not self.opts.resolve_deps:
|
| |
+ return added
|
| |
+
|
| |
+ for pkg in self.result_binary_packages.copy():
|
| |
+ if pkg in self.finished_supplements:
|
| |
+ continue
|
| |
+ for prov in pkg.provides:
|
| |
+ supplements = self.q_binary_packages.filter(
|
| |
+ supplements=prov, arch=[pkg.arch] + self.dnf.arch_wrapper.native_arches
|
| |
+ ).apply()
|
| |
+ self._add_packages(supplements, pulled_by=pkg, reason='supplements')
|
| |
+ added.update(supplements)
|
| |
+ self.finished_supplements.add(pkg)
|
| |
+
|
| |
+ return added
|
| |
+
|
| |
@Profiler("Gather.add_conditional_packages()")
|
| |
def add_conditional_packages(self):
|
| |
"""
|
| |
@@ -827,6 +854,10 @@
|
| |
if self.log_count('BINARY DEPS', self.add_binary_package_deps):
|
| |
continue
|
| |
|
| |
+ if self.opts.weak_deps:
|
| |
+ if self.log_count('SUPPLEMENTS', self.add_supplements):
|
| |
+ continue
|
| |
+
|
| |
if self.log_count('SOURCE DEPS', self.add_source_package_deps):
|
| |
continue
|
| |
|
| |
Is self.repo used somehow? Tests work even without this row.