1 |
Warn if the '=' package dependency operator is used along with pure |
2 |
version with no revision specified. This means to catch a common mistake |
3 |
of developers copying '=' from upstream dependency specification while |
4 |
'~' operator would be more appropriate. This causes unintended depgraph |
5 |
breakage when the dependencies are revbumped e.g. due to dependency |
6 |
changes, or prevents people from upgrading. |
7 |
|
8 |
The developers are given two suggestions: either to use '~' if any |
9 |
revision is acceptable, or to explicitly specify '-r0' when they really |
10 |
do accept -r0 only. |
11 |
|
12 |
Bug: https://bugs.gentoo.org/649482 |
13 |
--- |
14 |
repoman/pym/repoman/modules/scan/depend/_depend_checks.py | 9 +++++++++ |
15 |
repoman/pym/repoman/qa_data.py | 5 +++++ |
16 |
2 files changed, 14 insertions(+) |
17 |
|
18 |
diff --git a/repoman/pym/repoman/modules/scan/depend/_depend_checks.py b/repoman/pym/repoman/modules/scan/depend/_depend_checks.py |
19 |
index 11435f99e..3e34be5b3 100644 |
20 |
--- a/repoman/pym/repoman/modules/scan/depend/_depend_checks.py |
21 |
+++ b/repoman/pym/repoman/modules/scan/depend/_depend_checks.py |
22 |
@@ -153,6 +153,15 @@ def _depend_checks(ebuild, pkg, portdb, qatracker, repo_metadata): |
23 |
qacat, "%s: %s uses the ~ operator" |
24 |
" with a non-zero revision: '%s'" % |
25 |
(ebuild.relative_path, mytype, atom)) |
26 |
+ # plain =foo-1.2.3 without revision or * |
27 |
+ if atom.operator == "=" and '-r' not in atom.version: |
28 |
+ qacat = 'dependency.equalsversion' |
29 |
+ qatracker.add_error( |
30 |
+ qacat, "%s: %s uses the = operator with" |
31 |
+ " no revision: '%s'; if any revision is" |
32 |
+ " acceptable, use '~' instead; if only -r0" |
33 |
+ " then please append '-r0' to the dep" % |
34 |
+ (ebuild.relative_path, mytype, atom)) |
35 |
|
36 |
check_missingslot(atom, mytype, ebuild.eapi, portdb, qatracker, |
37 |
ebuild.relative_path, ebuild.metadata) |
38 |
diff --git a/repoman/pym/repoman/qa_data.py b/repoman/pym/repoman/qa_data.py |
39 |
index c6abe1760..7d56ffedc 100644 |
40 |
--- a/repoman/pym/repoman/qa_data.py |
41 |
+++ b/repoman/pym/repoman/qa_data.py |
42 |
@@ -51,6 +51,10 @@ qahelp = { |
43 |
"dependency.badtilde": ( |
44 |
"Uses the ~ dep operator with a non-zero revision part," |
45 |
" which is useless (the revision is ignored)"), |
46 |
+ "dependency.equalsversion": ( |
47 |
+ "Suspicious =-dependency with a specific version and no rev. " |
48 |
+ "Please either use ~ if any revision is acceptable, or append " |
49 |
+ "-r0 to silence the warning."), |
50 |
"dependency.missingslot": ( |
51 |
"RDEPEND matches more than one SLOT but does not specify a " |
52 |
"slot and/or use the := or :* slot operator"), |
53 |
@@ -258,6 +262,7 @@ qawarnings = set(( |
54 |
"dependency.badinexp", |
55 |
"dependency.badmaskedinexp", |
56 |
"dependency.badtilde", |
57 |
+ "dependency.equalsversion", |
58 |
"dependency.missingslot", |
59 |
"dependency.perlcore", |
60 |
"DESCRIPTION.toolong", |
61 |
-- |
62 |
2.16.2 |