Merge lp:~james-w/pkgme-devportal/add-path-to-desktop into lp:pkgme-devportal

Proposed by James Westby
Status: Merged
Approved by: Jonathan Lange
Approved revision: 56
Merged at revision: 58
Proposed branch: lp:~james-w/pkgme-devportal/add-path-to-desktop
Merge into: lp:pkgme-devportal
Diff against target: 129 lines (+32/-7)
2 files modified
devportalbinary/metadata.py (+13/-3)
devportalbinary/tests/test_metadata.py (+19/-4)
To merge this branch: bzr merge lp:~james-w/pkgme-devportal/add-path-to-desktop
Reviewer Review Type Date Requested Status
Michael Vogt (community) Approve
Review via email: mp+115414@code.launchpad.net

Commit message

Make the install basedir the working dir in the install file.

Description of the change

Hi,

This is the other half of the fix for https://bugs.launchpad.net/pkgme-devportal/+bug/1025174

It makes binary applications have the Path set to the /opt/package_name dir
in the .desktop file.

Thanks,

James

To post a comment you must log in.
Revision history for this message
Michael Vogt (mvo) wrote :

Thanks, looks good.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'devportalbinary/metadata.py'
2--- devportalbinary/metadata.py 2012-07-10 08:11:50 +0000
3+++ devportalbinary/metadata.py 2012-07-17 18:54:19 +0000
4@@ -38,6 +38,7 @@
5 Homepage,
6 TagLine,
7 Version,
8+ WorkingDirectory,
9 )
10 from pkgme.package_files import (
11 DEBIAN_DIR,
12@@ -99,10 +100,16 @@
13 return value
14
15
16+def get_install_basedir(package_name):
17+ return '/opt/%s' % package_name
18+
19+
20 def get_install_map(package_name, path, include_desktop=False, icons=None):
21 if not icons:
22 icons = {}
23 installation = {}
24+ # Make it a relative path to fit with the standard for install files
25+ basedir = get_install_basedir(package_name).lstrip('/')
26 # Sorting not actually needed for functionality, but makes the tests more
27 # reliable.
28 for filename in sorted(os.listdir(path)):
29@@ -110,7 +117,7 @@
30 # We don't want to install the 'debian/' directory or the metadata
31 # file.
32 continue
33- installation[filename] = 'opt/%s' % (package_name,)
34+ installation[filename] = basedir
35 for resolution, path in icons.items():
36 # XXX: This means that the basename of 'path' has to match the value
37 # of the Icon field in the desktop file. Seems fragile.
38@@ -138,7 +145,8 @@
39
40
41 def get_desktop_file(package_name, application_name, executable,
42- tagline=None, categories=None, icon=None):
43+ tagline=None, categories=None, icon=None,
44+ working_directory=None):
45 """Get the desktop file for the package.
46
47 :return: A ``Desktop``.
48@@ -150,6 +158,7 @@
49 TagLine.name: tagline,
50 Categories.name: categories,
51 Icon.name: icon,
52+ WorkingDirectory.name: working_directory,
53 }
54 return Desktop.from_info(DictInfo(info))
55
56@@ -290,7 +299,8 @@
57 executable,
58 tagline=metadata.get(self.TAGLINE, ''),
59 categories=metadata.get(self.CATEGORIES, ''),
60- icon=icon)
61+ icon=icon,
62+ working_directory=get_install_basedir(package_name))
63 lintian_override_content = self._get_lintian_overrides(package_name)
64 return {
65 # XXX: Hardcoded literal attack!
66
67=== modified file 'devportalbinary/tests/test_metadata.py'
68--- devportalbinary/tests/test_metadata.py 2012-07-10 08:11:50 +0000
69+++ devportalbinary/tests/test_metadata.py 2012-07-17 18:54:19 +0000
70@@ -33,6 +33,7 @@
71 from devportalbinary.metadata import (
72 format_install_map,
73 get_desktop_file,
74+ get_install_basedir,
75 get_install_file,
76 get_install_map,
77 get_metadata,
78@@ -236,7 +237,9 @@
79 expected_desktop_file = get_desktop_file(
80 package_name, backend.get_application_name(metadata),
81 backend.get_executable(package_name),
82- tagline=tagline, categories=categories).get_contents()
83+ tagline=tagline, categories=categories,
84+ working_directory=get_install_basedir(package_name),
85+ ).get_contents()
86 extra_files = backend.get_extra_files(metadata, package_name)
87 desktop = extra_files['debian/%s.desktop' % (package_name,)]
88 self.assertEqual(expected_desktop_file, desktop)
89@@ -254,7 +257,9 @@
90 backend.get_application_name(metadata),
91 backend.get_executable(package_name),
92 icon=package_name,
93- tagline=metadata[MetadataBackend.TAGLINE]).get_contents()
94+ tagline=metadata[MetadataBackend.TAGLINE],
95+ working_directory=get_install_basedir(package_name),
96+ ).get_contents()
97 extra_files = backend.get_extra_files(metadata, package_name)
98 desktop = extra_files['debian/%s.desktop' % (package_name,)]
99 self.assertEqual(expected_desktop_file, desktop)
100@@ -402,12 +407,14 @@
101 tagline = self.getUniqueString()
102 categories = self.getUniqueString()
103 icon = self.getUniqueString()
104+ working_directory = self.getUniqueString()
105 desktop_file = get_desktop_file(
106 package_name, app_name, executable, tagline=tagline,
107- categories=categories, icon=icon)
108+ categories=categories, icon=icon,
109+ working_directory=working_directory)
110 self.assertThat(
111 {'Name': app_name, 'Comment': tagline, 'Categories': categories,
112- 'Exec': executable, 'Icon': icon},
113+ 'Exec': executable, 'Icon': icon, 'Path': working_directory},
114 AreDesktopValuesFor(desktop_file))
115
116
117@@ -598,4 +605,12 @@
118 self.assertEqual('bar', package_name)
119
120
121+class GetInstallBasedirTests(TestCase):
122+
123+ def test_path(self):
124+ package_name = self.getUniqueString()
125+ self.assertEqual('/opt/%s' % package_name,
126+ get_install_basedir(package_name))
127+
128+
129 # XXX: Assuming icon name in desktop == package name

Subscribers

People subscribed via source and target branches