1 |
Bug: https://bugs.gentoo.org/702100 |
2 |
Signed-off-by: Zac Medico <zmedico@g.o> |
3 |
--- |
4 |
repoman/cnf/qa_data/qa_data.yaml | 1 + |
5 |
repoman/cnf/repository/qa_data.yaml | 1 + |
6 |
repoman/lib/repoman/modules/scan/depend/_depend_checks.py | 5 +++++ |
7 |
repoman/lib/repoman/scanner.py | 4 ++++ |
8 |
repoman/man/repoman.1 | 3 +++ |
9 |
5 files changed, 14 insertions(+) |
10 |
|
11 |
diff --git a/repoman/cnf/qa_data/qa_data.yaml b/repoman/cnf/qa_data/qa_data.yaml |
12 |
index 6aad56b8c..9a807aaf3 100644 |
13 |
--- a/repoman/cnf/qa_data/qa_data.yaml |
14 |
+++ b/repoman/cnf/qa_data/qa_data.yaml |
15 |
@@ -26,6 +26,7 @@ qahelp: |
16 |
badinexp: "User-visible ebuilds with unsatisfied dependencies (matched against *visible* ebuilds) in experimental arch" |
17 |
badmaskedinexp: "Masked ebuilds with unsatisfied dependencies (matched against *all* ebuilds) in experimental arch" |
18 |
badtilde: "Uses the ~ dep operator with a non-zero revision part, which is useless (the revision is ignored)" |
19 |
+ deprecated: "Ebuild has a dependency that refers to a deprecated package" |
20 |
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." |
21 |
missingslot: "RDEPEND matches more than one SLOT but does not specify a slot and/or use the := or :* slot operator" |
22 |
perlcore: "This ebuild directly depends on a package in perl-core; it should use the corresponding virtual instead." |
23 |
diff --git a/repoman/cnf/repository/qa_data.yaml b/repoman/cnf/repository/qa_data.yaml |
24 |
index c96ce46a9..464482056 100644 |
25 |
--- a/repoman/cnf/repository/qa_data.yaml |
26 |
+++ b/repoman/cnf/repository/qa_data.yaml |
27 |
@@ -44,6 +44,7 @@ qawarnings: |
28 |
- dependency.badindev |
29 |
- dependency.badmaskedindev |
30 |
- dependency.badtilde |
31 |
+ - dependency.deprecated |
32 |
- dependency.equalsversion |
33 |
- dependency.missingslot |
34 |
- dependency.perlcore |
35 |
diff --git a/repoman/lib/repoman/modules/scan/depend/_depend_checks.py b/repoman/lib/repoman/modules/scan/depend/_depend_checks.py |
36 |
index 690b95aa0..226cfec83 100644 |
37 |
--- a/repoman/lib/repoman/modules/scan/depend/_depend_checks.py |
38 |
+++ b/repoman/lib/repoman/modules/scan/depend/_depend_checks.py |
39 |
@@ -108,6 +108,11 @@ def _depend_checks(ebuild, pkg, portdb, qatracker, repo_metadata, qadata): |
40 |
not atom.cp.startswith("virtual/"): |
41 |
unknown_pkgs.add((mytype, atom.unevaluated_atom)) |
42 |
|
43 |
+ if not atom.blocker and atom.cp in repo_metadata['package.deprecated']: |
44 |
+ qatracker.add_error( |
45 |
+ 'dependency.deprecated', |
46 |
+ ebuild.relative_path + ": '%s'" % atom) |
47 |
+ |
48 |
if pkg.category != "virtual": |
49 |
if not is_blocker and \ |
50 |
atom.cp in qadata.suspect_virtual: |
51 |
diff --git a/repoman/lib/repoman/scanner.py b/repoman/lib/repoman/scanner.py |
52 |
index 06234b0ad..f1c3601a1 100644 |
53 |
--- a/repoman/lib/repoman/scanner.py |
54 |
+++ b/repoman/lib/repoman/scanner.py |
55 |
@@ -93,6 +93,10 @@ class Scanner(object): |
56 |
'profile_list': profile_list, |
57 |
'pmaskdict': global_pmaskdict, |
58 |
'lic_deprecated': liclist_deprecated, |
59 |
+ 'package.deprecated': set(atom.cp for atom in |
60 |
+ portage.util.stack_lists([portage.util.grabfile_package( |
61 |
+ os.path.join(path, 'profiles', 'package.deprecated'), recursive=True) |
62 |
+ for path in self.portdb.porttrees], incremental=True)) |
63 |
} |
64 |
|
65 |
self.repo_settings.repoman_settings['PORTAGE_ARCHLIST'] = ' '.join(sorted(kwlist)) |
66 |
diff --git a/repoman/man/repoman.1 b/repoman/man/repoman.1 |
67 |
index 7bd440a4c..a6a9937e5 100644 |
68 |
--- a/repoman/man/repoman.1 |
69 |
+++ b/repoman/man/repoman.1 |
70 |
@@ -315,6 +315,9 @@ experimental arch |
71 |
Uses the ~ dep operator with a non-zero revision part, which is useless (the |
72 |
revision is ignored) |
73 |
.TP |
74 |
+.B dependency.deprecated |
75 |
+Ebuild has a dependency that refers to a deprecated package |
76 |
+.TP |
77 |
.B dependency.syntax |
78 |
Syntax error in dependency string (usually an extra/missing space/parenthesis) |
79 |
.TP |
80 |
-- |
81 |
2.21.0 |