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
=== modified file 'devportalbinary/metadata.py'
--- devportalbinary/metadata.py 2012-07-10 08:11:50 +0000
+++ devportalbinary/metadata.py 2012-07-17 18:54:19 +0000
@@ -38,6 +38,7 @@
38 Homepage,38 Homepage,
39 TagLine,39 TagLine,
40 Version,40 Version,
41 WorkingDirectory,
41 )42 )
42from pkgme.package_files import (43from pkgme.package_files import (
43 DEBIAN_DIR,44 DEBIAN_DIR,
@@ -99,10 +100,16 @@
99 return value100 return value
100101
101102
103def get_install_basedir(package_name):
104 return '/opt/%s' % package_name
105
106
102def get_install_map(package_name, path, include_desktop=False, icons=None):107def get_install_map(package_name, path, include_desktop=False, icons=None):
103 if not icons:108 if not icons:
104 icons = {}109 icons = {}
105 installation = {}110 installation = {}
111 # Make it a relative path to fit with the standard for install files
112 basedir = get_install_basedir(package_name).lstrip('/')
106 # Sorting not actually needed for functionality, but makes the tests more113 # Sorting not actually needed for functionality, but makes the tests more
107 # reliable.114 # reliable.
108 for filename in sorted(os.listdir(path)):115 for filename in sorted(os.listdir(path)):
@@ -110,7 +117,7 @@
110 # We don't want to install the 'debian/' directory or the metadata117 # We don't want to install the 'debian/' directory or the metadata
111 # file.118 # file.
112 continue119 continue
113 installation[filename] = 'opt/%s' % (package_name,)120 installation[filename] = basedir
114 for resolution, path in icons.items():121 for resolution, path in icons.items():
115 # XXX: This means that the basename of 'path' has to match the value122 # XXX: This means that the basename of 'path' has to match the value
116 # of the Icon field in the desktop file. Seems fragile.123 # of the Icon field in the desktop file. Seems fragile.
@@ -138,7 +145,8 @@
138145
139146
140def get_desktop_file(package_name, application_name, executable,147def get_desktop_file(package_name, application_name, executable,
141 tagline=None, categories=None, icon=None):148 tagline=None, categories=None, icon=None,
149 working_directory=None):
142 """Get the desktop file for the package.150 """Get the desktop file for the package.
143151
144 :return: A ``Desktop``.152 :return: A ``Desktop``.
@@ -150,6 +158,7 @@
150 TagLine.name: tagline,158 TagLine.name: tagline,
151 Categories.name: categories,159 Categories.name: categories,
152 Icon.name: icon,160 Icon.name: icon,
161 WorkingDirectory.name: working_directory,
153 }162 }
154 return Desktop.from_info(DictInfo(info))163 return Desktop.from_info(DictInfo(info))
155164
@@ -290,7 +299,8 @@
290 executable,299 executable,
291 tagline=metadata.get(self.TAGLINE, ''),300 tagline=metadata.get(self.TAGLINE, ''),
292 categories=metadata.get(self.CATEGORIES, ''),301 categories=metadata.get(self.CATEGORIES, ''),
293 icon=icon)302 icon=icon,
303 working_directory=get_install_basedir(package_name))
294 lintian_override_content = self._get_lintian_overrides(package_name)304 lintian_override_content = self._get_lintian_overrides(package_name)
295 return {305 return {
296 # XXX: Hardcoded literal attack!306 # XXX: Hardcoded literal attack!
297307
=== modified file 'devportalbinary/tests/test_metadata.py'
--- devportalbinary/tests/test_metadata.py 2012-07-10 08:11:50 +0000
+++ devportalbinary/tests/test_metadata.py 2012-07-17 18:54:19 +0000
@@ -33,6 +33,7 @@
33from devportalbinary.metadata import (33from devportalbinary.metadata import (
34 format_install_map,34 format_install_map,
35 get_desktop_file,35 get_desktop_file,
36 get_install_basedir,
36 get_install_file,37 get_install_file,
37 get_install_map,38 get_install_map,
38 get_metadata,39 get_metadata,
@@ -236,7 +237,9 @@
236 expected_desktop_file = get_desktop_file(237 expected_desktop_file = get_desktop_file(
237 package_name, backend.get_application_name(metadata),238 package_name, backend.get_application_name(metadata),
238 backend.get_executable(package_name),239 backend.get_executable(package_name),
239 tagline=tagline, categories=categories).get_contents()240 tagline=tagline, categories=categories,
241 working_directory=get_install_basedir(package_name),
242 ).get_contents()
240 extra_files = backend.get_extra_files(metadata, package_name)243 extra_files = backend.get_extra_files(metadata, package_name)
241 desktop = extra_files['debian/%s.desktop' % (package_name,)]244 desktop = extra_files['debian/%s.desktop' % (package_name,)]
242 self.assertEqual(expected_desktop_file, desktop)245 self.assertEqual(expected_desktop_file, desktop)
@@ -254,7 +257,9 @@
254 backend.get_application_name(metadata),257 backend.get_application_name(metadata),
255 backend.get_executable(package_name),258 backend.get_executable(package_name),
256 icon=package_name,259 icon=package_name,
257 tagline=metadata[MetadataBackend.TAGLINE]).get_contents()260 tagline=metadata[MetadataBackend.TAGLINE],
261 working_directory=get_install_basedir(package_name),
262 ).get_contents()
258 extra_files = backend.get_extra_files(metadata, package_name)263 extra_files = backend.get_extra_files(metadata, package_name)
259 desktop = extra_files['debian/%s.desktop' % (package_name,)]264 desktop = extra_files['debian/%s.desktop' % (package_name,)]
260 self.assertEqual(expected_desktop_file, desktop)265 self.assertEqual(expected_desktop_file, desktop)
@@ -402,12 +407,14 @@
402 tagline = self.getUniqueString()407 tagline = self.getUniqueString()
403 categories = self.getUniqueString()408 categories = self.getUniqueString()
404 icon = self.getUniqueString()409 icon = self.getUniqueString()
410 working_directory = self.getUniqueString()
405 desktop_file = get_desktop_file(411 desktop_file = get_desktop_file(
406 package_name, app_name, executable, tagline=tagline,412 package_name, app_name, executable, tagline=tagline,
407 categories=categories, icon=icon)413 categories=categories, icon=icon,
414 working_directory=working_directory)
408 self.assertThat(415 self.assertThat(
409 {'Name': app_name, 'Comment': tagline, 'Categories': categories,416 {'Name': app_name, 'Comment': tagline, 'Categories': categories,
410 'Exec': executable, 'Icon': icon},417 'Exec': executable, 'Icon': icon, 'Path': working_directory},
411 AreDesktopValuesFor(desktop_file))418 AreDesktopValuesFor(desktop_file))
412419
413420
@@ -598,4 +605,12 @@
598 self.assertEqual('bar', package_name)605 self.assertEqual('bar', package_name)
599606
600607
608class GetInstallBasedirTests(TestCase):
609
610 def test_path(self):
611 package_name = self.getUniqueString()
612 self.assertEqual('/opt/%s' % package_name,
613 get_install_basedir(package_name))
614
615
601# XXX: Assuming icon name in desktop == package name616# XXX: Assuming icon name in desktop == package name

Subscribers

People subscribed via source and target branches