From 3836d4ec2da708677826cda1d3ea9f8281bde9c7 Mon Sep 17 00:00:00 2001 From: Michael Palimaka Date: Tue, 31 Jul 2012 03:18:01 -0700 Subject: Validate desktop entries after src_install. --- pym/portage/package/ebuild/doebuild.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'pym') 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 = [] -- cgit v1.2.3-65-gdbad