1 |
commit: 3836d4ec2da708677826cda1d3ea9f8281bde9c7 |
2 |
Author: Michael Palimaka <kensington <AT> gentoo <DOT> org> |
3 |
AuthorDate: Tue Jul 31 10:18:01 2012 +0000 |
4 |
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> |
5 |
CommitDate: Tue Jul 31 10:18:01 2012 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=3836d4ec |
7 |
|
8 |
Validate desktop entries after src_install. |
9 |
|
10 |
--- |
11 |
pym/portage/package/ebuild/doebuild.py | 26 ++++++++++++++++++++++++++ |
12 |
1 files changed, 26 insertions(+), 0 deletions(-) |
13 |
|
14 |
diff --git a/pym/portage/package/ebuild/doebuild.py b/pym/portage/package/ebuild/doebuild.py |
15 |
index 09062f9..dfdfedc 100644 |
16 |
--- a/pym/portage/package/ebuild/doebuild.py |
17 |
+++ b/pym/portage/package/ebuild/doebuild.py |
18 |
@@ -28,6 +28,7 @@ portage.proxy.lazyimport.lazyimport(globals(), |
19 |
'portage.package.ebuild._ipc.QueryCommand:QueryCommand', |
20 |
'portage.dep._slot_abi:evaluate_slot_abi_equal_deps', |
21 |
'portage.package.ebuild._spawn_nofetch:spawn_nofetch', |
22 |
+ 'portage.util._desktop_entry:validate_desktop_entry', |
23 |
'portage.util.ExtractKernelVersion:ExtractKernelVersion' |
24 |
) |
25 |
|
26 |
@@ -1746,6 +1747,7 @@ def _post_src_install_uid_fix(mysettings, out): |
27 |
|
28 |
destdir = mysettings["D"] |
29 |
ed_len = len(mysettings["ED"]) |
30 |
+ desktopfile_errors = [] |
31 |
unicode_errors = [] |
32 |
|
33 |
while True: |
34 |
@@ -1794,6 +1796,11 @@ def _post_src_install_uid_fix(mysettings, out): |
35 |
else: |
36 |
fpath = os.path.join(parent, fname) |
37 |
|
38 |
+ if fname.endswith(".desktop") and os.path.isfile(fpath): |
39 |
+ desktop_validate = validate_desktop_entry(fpath) |
40 |
+ if desktop_validate: |
41 |
+ desktopfile_errors.extend(desktop_validate) |
42 |
+ |
43 |
if fixlafiles and \ |
44 |
fname.endswith(".la") and os.path.isfile(fpath): |
45 |
f = open(_unicode_encode(fpath, |
46 |
@@ -1860,6 +1867,11 @@ def _post_src_install_uid_fix(mysettings, out): |
47 |
if not unicode_error: |
48 |
break |
49 |
|
50 |
+ if desktopfile_errors: |
51 |
+ for l in _merge_desktopfile_error(desktopfile_errors): |
52 |
+ l = l.replace(mysettings["ED"], '/') |
53 |
+ eqawarn(l, phase='install', key=mysettings.mycpv, out=out) |
54 |
+ |
55 |
if unicode_errors: |
56 |
for l in _merge_unicode_error(unicode_errors): |
57 |
eqawarn(l, phase='install', key=mysettings.mycpv, out=out) |
58 |
@@ -2022,6 +2034,20 @@ def _post_src_install_soname_symlinks(mysettings, out): |
59 |
for line in qa_msg: |
60 |
eqawarn(line, key=mysettings.mycpv, out=out) |
61 |
|
62 |
+def _merge_desktopfile_error(errors): |
63 |
+ lines = [] |
64 |
+ |
65 |
+ msg = _("QA Notice: This package installs one or more .desktop files " |
66 |
+ "that do not pass validation.") |
67 |
+ lines.extend(wrap(msg, 72)) |
68 |
+ |
69 |
+ lines.append("") |
70 |
+ errors.sort() |
71 |
+ lines.extend("\t" + x for x in errors) |
72 |
+ lines.append("") |
73 |
+ |
74 |
+ return lines |
75 |
+ |
76 |
def _merge_unicode_error(errors): |
77 |
lines = [] |