Support FEATURES=qa-unresolved-soname-deps so that it's possible to
disable the QA warning that was introduced for bug 704320. This is
useful for systems that may have incomplete PROVIDES metadata due
to alternative package managers or experimentation with a new
architecture.

Bug: https://bugs.gentoo.org/708448
Bug: https://bugs.gentoo.org/704320
Signed-off-by: Zac Medico <zmed...@gentoo.org>
---
 cnf/make.globals           |  3 ++-
 lib/_emerge/EbuildPhase.py | 13 ++++++++-----
 lib/portage/const.py       |  1 +
 man/make.conf.5            |  4 ++++
 4 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/cnf/make.globals b/cnf/make.globals
index 50511e812..139e1ce97 100644
--- a/cnf/make.globals
+++ b/cnf/make.globals
@@ -53,7 +53,8 @@ FEATURES="assume-digests binpkg-docompress binpkg-dostrip 
binpkg-logs
           config-protect-if-modified distlocks ebuild-locks
           fixlafiles ipc-sandbox merge-sync multilib-strict
           network-sandbox news parallel-fetch pid-sandbox
-          preserve-libs protect-owned sandbox sfperms strict
+          preserve-libs protect-owned qa-unresolved-soname-deps
+          sandbox sfperms strict
           unknown-features-warn unmerge-logs unmerge-orphans userfetch
           userpriv usersandbox usersync"
 
diff --git a/lib/_emerge/EbuildPhase.py b/lib/_emerge/EbuildPhase.py
index 828e6e126..234a273a0 100644
--- a/lib/_emerge/EbuildPhase.py
+++ b/lib/_emerge/EbuildPhase.py
@@ -453,11 +453,14 @@ class _PostPhaseCommands(CompositeTask):
                        if msg:
                                self.scheduler.output(msg, 
log_path=self.settings.get("PORTAGE_LOG_FILE"))
 
-                       # This operates on REQUIRES metadata generated by the 
above function call.
-                       future = self._soname_deps_qa()
-                       # If an unexpected exception occurs, then this will 
raise it.
-                       future.add_done_callback(lambda future: future.result())
-                       self._start_task(AsyncTaskFuture(future=future), 
self._default_final_exit)
+                       if 'qa-unresolved-soname-deps' in 
self.settings.features:
+                               # This operates on REQUIRES metadata generated 
by the above function call.
+                               future = self._soname_deps_qa()
+                               # If an unexpected exception occurs, then this 
will raise it.
+                               future.add_done_callback(lambda future: 
future.result())
+                               
self._start_task(AsyncTaskFuture(future=future), self._default_final_exit)
+                       else:
+                               self._default_final_exit(task)
                else:
                        self._default_final_exit(task)
 
diff --git a/lib/portage/const.py b/lib/portage/const.py
index e95039fd5..f6be9258f 100644
--- a/lib/portage/const.py
+++ b/lib/portage/const.py
@@ -180,6 +180,7 @@ SUPPORTED_FEATURES       = frozenset([
        "preserve-libs",
        "protect-owned",
        "python-trace",
+       "qa-unresolved-soname-deps",
        "sandbox",
        "selinux",
        "sesandbox",
diff --git a/man/make.conf.5 b/man/make.conf.5
index 494d5f003..f82fed65a 100644
--- a/man/make.conf.5
+++ b/man/make.conf.5
@@ -607,6 +607,10 @@ If \fIcollision\-protect\fR is enabled then it takes 
precedence over
 Output a verbose trace of python execution to stderr when a command's
 \-\-debug option is enabled.
 .TP
+.B qa\-unresolved\-soname\-deps
+Trigger a QA warning when a package installs files with unresolved soname
+dependencies.
+.TP
 .B sandbox
 Enable sandbox\-ing when running \fBemerge\fR(1) and \fBebuild\fR(1).
 .TP
-- 
2.24.1


Reply via email to