aboutsummaryrefslogtreecommitdiff
path: root/pym
diff options
context:
space:
mode:
authorMichael Palimaka <kensington@gentoo.org>2012-07-31 03:18:01 -0700
committerZac Medico <zmedico@gentoo.org>2012-07-31 03:18:01 -0700
commit3836d4ec2da708677826cda1d3ea9f8281bde9c7 (patch)
treecd0fa28e25b13ed42d6bcb8ab190ac1c9aacf9e5 /pym
parentget_term_size: handle missing stty command (diff)
downloadportage-3836d4ec2da708677826cda1d3ea9f8281bde9c7.tar.gz
portage-3836d4ec2da708677826cda1d3ea9f8281bde9c7.tar.bz2
portage-3836d4ec2da708677826cda1d3ea9f8281bde9c7.zip
Validate desktop entries after src_install.
Diffstat (limited to 'pym')
-rw-r--r--pym/portage/package/ebuild/doebuild.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/pym/portage/package/ebuild/doebuild.py b/pym/portage/package/ebuild/doebuild.py
index 09062f9f3..dfdfedcbd 100644
--- a/pym/portage/package/ebuild/doebuild.py
+++ b/pym/portage/package/ebuild/doebuild.py
@@ -28,6 +28,7 @@ portage.proxy.lazyimport.lazyimport(globals(),
'portage.package.ebuild._ipc.QueryCommand:QueryCommand',
'portage.dep._slot_abi:evaluate_slot_abi_equal_deps',
'portage.package.ebuild._spawn_nofetch:spawn_nofetch',
+ 'portage.util._desktop_entry:validate_desktop_entry',
'portage.util.ExtractKernelVersion:ExtractKernelVersion'
)
@@ -1746,6 +1747,7 @@ def _post_src_install_uid_fix(mysettings, out):
destdir = mysettings["D"]
ed_len = len(mysettings["ED"])
+ desktopfile_errors = []
unicode_errors = []
while True:
@@ -1794,6 +1796,11 @@ def _post_src_install_uid_fix(mysettings, out):
else:
fpath = os.path.join(parent, fname)
+ if fname.endswith(".desktop") and os.path.isfile(fpath):
+ desktop_validate = validate_desktop_entry(fpath)
+ if desktop_validate:
+ desktopfile_errors.extend(desktop_validate)
+
if fixlafiles and \
fname.endswith(".la") and os.path.isfile(fpath):
f = open(_unicode_encode(fpath,
@@ -1860,6 +1867,11 @@ def _post_src_install_uid_fix(mysettings, out):
if not unicode_error:
break
+ if desktopfile_errors:
+ for l in _merge_desktopfile_error(desktopfile_errors):
+ l = l.replace(mysettings["ED"], '/')
+ eqawarn(l, phase='install', key=mysettings.mycpv, out=out)
+
if unicode_errors:
for l in _merge_unicode_error(unicode_errors):
eqawarn(l, phase='install', key=mysettings.mycpv, out=out)
@@ -2022,6 +2034,20 @@ def _post_src_install_soname_symlinks(mysettings, out):
for line in qa_msg:
eqawarn(line, key=mysettings.mycpv, out=out)
+def _merge_desktopfile_error(errors):
+ lines = []
+
+ msg = _("QA Notice: This package installs one or more .desktop files "
+ "that do not pass validation.")
+ lines.extend(wrap(msg, 72))
+
+ lines.append("")
+ errors.sort()
+ lines.extend("\t" + x for x in errors)
+ lines.append("")
+
+ return lines
+
def _merge_unicode_error(errors):
lines = []