}
_xdoins() {
- local -i success=0 failed=0
+ local -i failed=0
while read -d $'\0' x ; do
_doins "$x" "${x%/*}"
- if [[ $? -eq 0 ]] ; then
- ((success|=1))
- else
- ((failed|=1))
- fi
+ ((failed|=$?))
done
- [[ $failed -ne 0 || $success -eq 0 ]] && return 1 || return 0
+ return $failed
}
success=0
find "$x_orig" -type d -exec dodir "${INSDESTTREE}/{}" \;
find "$x_orig" \( -type f -or -type l \) -print0 | _xdoins
if [[ ${PIPESTATUS[1]} -eq 0 ]] ; then
+ # NOTE: Even if only an empty directory is installed here, it
+ # still counts as success, since an empty directory given as
+ # an argument to doins -r should not trigger failure.
((success|=1))
else
((failed|=1))
"KEYWORDS.stable":"Ebuilds that have been added directly with stable KEYWORDS",
"KEYWORDS.stupid":"Ebuilds that use KEYWORDS=-* instead of package.mask",
"LICENSE.missing":"Ebuilds that have a missing or empty LICENSE variable",
+ "LICENSE.virtual":"Virtuals that have a non-empty LICENSE variable",
"DESCRIPTION.missing":"Ebuilds that have a missing or empty DESCRIPTION variable",
"DESCRIPTION.toolong":"DESCRIPTION is over %d characters" % max_desc_len,
"EAPI.definition":"EAPI is defined after an inherit call (must be defined before)",
"EAPI.unsupported":"Ebuilds that have an unsupported EAPI version (you must upgrade portage)",
"SLOT.invalid":"Ebuilds that have a missing or invalid SLOT variable value",
"HOMEPAGE.missing":"Ebuilds that have a missing or empty HOMEPAGE variable",
+ "HOMEPAGE.virtual":"Virtuals that have a non-empty HOMEPAGE variable",
"DEPEND.bad":"User-visible ebuilds with bad DEPEND settings (matched against *visible* ebuilds)",
"RDEPEND.bad":"User-visible ebuilds with bad RDEPEND settings (matched against *visible* ebuilds)",
"PDEPEND.bad":"User-visible ebuilds with bad PDEPEND settings (matched against *visible* ebuilds)",
"DEPEND.badmaskedindev","RDEPEND.badmaskedindev","PDEPEND.badmaskedindev",
"DEPEND.badtilde", "RDEPEND.badtilde", "PDEPEND.badtilde",
"DESCRIPTION.toolong",
+"HOMEPAGE.virtual",
+"LICENSE.virtual",
"KEYWORDS.dropped",
"KEYWORDS.stupid",
"KEYWORDS.missing",
stats[myqakey]=stats[myqakey]+1
fails[myqakey].append(x+"/"+y+".ebuild")
+ if catdir == "virtual":
+ for var in ("HOMEPAGE", "LICENSE"):
+ if myaux.get(var):
+ myqakey = var + ".virtual"
+ stats[myqakey] = stats[myqakey] + 1
+ fails[myqakey].append(relative_path)
+
# 14 is the length of DESCRIPTION=""
if len(myaux['DESCRIPTION']) > max_desc_len:
stats['DESCRIPTION.toolong'] += 1
.B HOMEPAGE.missing
Ebuilds that have a missing or empty HOMEPAGE variable
.TP
+.B HOMEPAGE.virtual
+Virtuals that have a non-empty HOMEPAGE variable
+.TP
.B IUSE.invalid
This ebuild has a variable in IUSE that is not in the use.desc or its metadata.xml file
.TP
.B LICENSE.syntax
Syntax error in LICENSE (usually an extra/missing space/parenthesis)
.TP
+.B LICENSE.virtual
+Virtuals that have a non-empty LICENSE variable
+.TP
.B LIVEVCS.stable
Ebuild is a live ebuild (cvs, git, darcs, svn, etc) checkout with stable keywords.
.TP
# upgraded. We effectively only want one half of the config protection
# functionality for /lib/modules. For portage-ng both capabilities
# should be able to be independently specified.
+ # TODO: For rebuilds, re-parent previous modules to the new
+ # installed instance (so they are not orphans). For normal
+ # uninstall (not rebuild/reinstall), remove the modules along
+ # with all other files (leave no orphans).
if obj.startswith(modprotect):
show_unmerge("---", unmerge_desc["cfgpro"], file_type, obj)
continue