summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/repoman31
-rw-r--r--man/repoman.11
2 files changed, 24 insertions, 8 deletions
diff --git a/bin/repoman b/bin/repoman
index a3b86e358..90c3be973 100755
--- a/bin/repoman
+++ b/bin/repoman
@@ -190,7 +190,7 @@ qahelp={
"PROVIDE.syntax":"Syntax error in PROVIDE (usually an extra/missing space/parenthesis)",
"RESTRICT.syntax":"Syntax error in RESTRICT (usually an extra/missing space/parenthesis)",
"SRC_URI.syntax":"Syntax error in SRC_URI (usually an extra/missing space/parenthesis)",
- "ebuild.syntax":"Error generating cache entry for ebuild; typically caused by ebuild syntax error",
+ "ebuild.syntax":"Error generating cache entry for ebuild; typically caused by ebuild syntax error or digest verification failure",
"ebuild.output":"A simple sourcing of the ebuild produces output; this breaks ebuild policy.",
"ebuild.nesteddie":"Placing 'die' inside ( ) prints an error, but doesn't stop the ebuild.",
"variable.readonly":"Assigning a readonly variable",
@@ -910,18 +910,33 @@ for x in scanlist:
fetchlist_dict = portage.FetchlistDict(checkdir, repoman_settings, portdb)
myfiles_all = []
+ src_uri_error = False
for mykey in fetchlist_dict:
try:
myfiles_all.extend(fetchlist_dict[mykey])
except portage.exception.InvalidDependString, e:
- stats["SRC_URI.syntax"] = stats["SRC_URI.syntax"] + 1
- fails["SRC_URI.syntax"].append(mykey+".ebuild SRC_URI: "+str(e))
+ src_uri_error = True
+ try:
+ portdb.aux_get(mykey, ["SRC_URI"])
+ except KeyError:
+ # This will be reported as an "ebuild.syntax" error.
+ pass
+ else:
+ stats["SRC_URI.syntax"] = stats["SRC_URI.syntax"] + 1
+ fails["SRC_URI.syntax"].append(
+ "%s.ebuild SRC_URI: %s" % (mykey, e))
del fetchlist_dict
- myfiles_all = set(myfiles_all)
- for entry in mydigests:
- if entry not in myfiles_all:
- stats["digestentry.unused"] += 1
- fails["digestentry.unused"].append(checkdir+"::"+entry)
+ if not src_uri_error:
+ # This test can produce false positives if SRC_URI could not
+ # be parsed for one or more ebuilds. There's no point in
+ # producing a false error here since the root cause will
+ # produce a valid error elsewhere, such as "SRC_URI.syntax"
+ # or "ebuild.sytax".
+ myfiles_all = set(myfiles_all)
+ for entry in mydigests:
+ if entry not in myfiles_all:
+ stats["digestentry.unused"] += 1
+ fails["digestentry.unused"].append(checkdir+"::"+entry)
del myfiles_all
if os.path.exists(checkdir+"/files"):
diff --git a/man/repoman.1 b/man/repoman.1
index 7b97a0abc..edbc7afd0 100644
--- a/man/repoman.1
+++ b/man/repoman.1
@@ -221,6 +221,7 @@ A simple sourcing of the ebuild produces output; this breaks ebuild policy.
.TP
.B ebuild.syntax
Error generating cache entry for ebuild; typically caused by ebuild syntax error
+or digest verification failure.
.TP
.B file.UTF8
File is not UTF8 compliant