Bug: https://bugs.gentoo.org/702100
Signed-off-by: Zac Medico <zmed...@gentoo.org>
---
 repoman/cnf/qa_data/qa_data.yaml                          | 1 +
 repoman/cnf/repository/qa_data.yaml                       | 1 +
 repoman/lib/repoman/modules/scan/depend/_depend_checks.py | 5 +++++
 repoman/lib/repoman/scanner.py                            | 4 ++++
 repoman/man/repoman.1                                     | 3 +++
 5 files changed, 14 insertions(+)

diff --git a/repoman/cnf/qa_data/qa_data.yaml b/repoman/cnf/qa_data/qa_data.yaml
index 6aad56b8c..9a807aaf3 100644
--- a/repoman/cnf/qa_data/qa_data.yaml
+++ b/repoman/cnf/qa_data/qa_data.yaml
@@ -26,6 +26,7 @@ qahelp:
         badinexp: "User-visible ebuilds with unsatisfied dependencies (matched 
against *visible* ebuilds) in experimental arch"
         badmaskedinexp: "Masked ebuilds with unsatisfied dependencies (matched 
against *all* ebuilds) in experimental arch"
         badtilde: "Uses the ~ dep operator with a non-zero revision part, 
which is useless (the revision is ignored)"
+        deprecated: "Ebuild has a dependency that refers to a deprecated 
package"
         equalsversion: "Suspicious =-dependency with a specific version and no 
rev. Please either use ~ if any revision is acceptable, or append -r0 to 
silence the warning."
         missingslot: "RDEPEND matches more than one SLOT but does not specify 
a slot and/or use the := or :* slot operator"
         perlcore: "This ebuild directly depends on a package in perl-core; it 
should use the corresponding virtual instead."
diff --git a/repoman/cnf/repository/qa_data.yaml 
b/repoman/cnf/repository/qa_data.yaml
index c96ce46a9..464482056 100644
--- a/repoman/cnf/repository/qa_data.yaml
+++ b/repoman/cnf/repository/qa_data.yaml
@@ -44,6 +44,7 @@ qawarnings:
     - dependency.badindev
     - dependency.badmaskedindev
     - dependency.badtilde
+    - dependency.deprecated
     - dependency.equalsversion
     - dependency.missingslot
     - dependency.perlcore
diff --git a/repoman/lib/repoman/modules/scan/depend/_depend_checks.py 
b/repoman/lib/repoman/modules/scan/depend/_depend_checks.py
index 690b95aa0..226cfec83 100644
--- a/repoman/lib/repoman/modules/scan/depend/_depend_checks.py
+++ b/repoman/lib/repoman/modules/scan/depend/_depend_checks.py
@@ -108,6 +108,11 @@ def _depend_checks(ebuild, pkg, portdb, qatracker, 
repo_metadata, qadata):
                                        not atom.cp.startswith("virtual/"):
                                        unknown_pkgs.add((mytype, 
atom.unevaluated_atom))
 
+                               if not atom.blocker and atom.cp in 
repo_metadata['package.deprecated']:
+                                       qatracker.add_error(
+                                               'dependency.deprecated',
+                                               ebuild.relative_path + ": '%s'" 
% atom)
+
                                if pkg.category != "virtual":
                                        if not is_blocker and \
                                                atom.cp in 
qadata.suspect_virtual:
diff --git a/repoman/lib/repoman/scanner.py b/repoman/lib/repoman/scanner.py
index 06234b0ad..f1c3601a1 100644
--- a/repoman/lib/repoman/scanner.py
+++ b/repoman/lib/repoman/scanner.py
@@ -93,6 +93,10 @@ class Scanner(object):
                        'profile_list': profile_list,
                        'pmaskdict': global_pmaskdict,
                        'lic_deprecated': liclist_deprecated,
+                       'package.deprecated': set(atom.cp for atom in
+                               
portage.util.stack_lists([portage.util.grabfile_package(
+                               os.path.join(path, 'profiles', 
'package.deprecated'), recursive=True)
+                               for path in self.portdb.porttrees], 
incremental=True))
                }
 
                self.repo_settings.repoman_settings['PORTAGE_ARCHLIST'] = ' 
'.join(sorted(kwlist))
diff --git a/repoman/man/repoman.1 b/repoman/man/repoman.1
index 7bd440a4c..a6a9937e5 100644
--- a/repoman/man/repoman.1
+++ b/repoman/man/repoman.1
@@ -315,6 +315,9 @@ experimental arch
 Uses the ~ dep operator with a non-zero revision part, which is useless (the
 revision is ignored)
 .TP
+.B dependency.deprecated
+Ebuild has a dependency that refers to a deprecated package
+.TP
 .B dependency.syntax
 Syntax error in dependency string (usually an extra/missing space/parenthesis)
 .TP
-- 
2.21.0


Reply via email to