Gentoo Archives: gentoo-portage-dev

From: Zac Medico <zmedico@g.o>
To: gentoo-portage-dev@l.g.o
Cc: Zac Medico <zmedico@g.o>
Subject: [gentoo-portage-dev] [PATCH] repoman: support profiles/package.deprecated (bug 702100)
Date: Fri, 06 Dec 2019 00:36:33
Message-Id: 20191206003611.2713-1-zmedico@gentoo.org
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