[PATCH] Support FEATURES=qa-unresolved-soname-deps (bug 708448)

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[PATCH] Support FEATURES=qa-unresolved-soname-deps (bug 708448)

Zac Medico-2
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 <[hidden email]>
---
 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