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