#!/usr/bin/env python\r
-# -*- coding: utf-8 -*-\r
-\r
-"""\r
-This program is free software; you can redistribute it and/or modify\r
-it under the terms of the GNU General Public License as published\r
-by the Free Software Foundation; version 2 only.\r
-\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
-GNU General Public License for more details.\r
-"""\r
\r
import os\r
import sys\r
\r
-import py2deb\r
+try:\r
+ import py2deb\r
+except ImportError:\r
+ import fake_py2deb as py2deb\r
\r
+import constants\r
\r
-def build_package(distribution):\r
- py2deb.Py2deb.SECTIONS = py2deb.SECTIONS_BY_POLICY[distribution]\r
- try:\r
- os.chdir(os.path.dirname(sys.argv[0]))\r
- except:\r
- pass\r
-\r
- p=py2deb.Py2deb("nqaap") #This is the package name and MUST be in\r
- #lowercase! (using e.g. "mClock" fails\r
- #miserably...)\r
- p.prettyName="NQA Audiobook Player"\r
- p.description="""Very simple Audiobook player.\r
+\r
+__app_name__ = constants.__app_name__\r
+__description__ = """Very simple Audiobook player.\r
Supports playing, pausing, seeking (sort of) and saving state when changing book/closing.\r
Plays books arranged as dirs under myDocs/Audiobooks\r
.\r
Homepage: http://wiki.maemo.org/Nqaap"""\r
- p.author="Soeren 'Pengman' Pedersen"\r
- p.mail="pengmeister@gmail.com"\r
- p.license = "lgpl"\r
- p.depends = ", ".join([\r
- "python2.6 | python2.5",\r
- "python-gtk2 | python2.5-gtk2",\r
- "python-dbus | python2.5-dbus",\r
- "python-telepathy | python2.5-telepathy",\r
- "python-gobject | python2.5-gobject",\r
- "python-simplejson",\r
- ])\r
- maemoSpecificDepends = ", python-osso | python2.5-osso, python-hildon | python2.5-hildon"\r
- p.depends += {\r
- "debian": ", python-gst0.10",\r
- "diablo": maemoSpecificDepends,\r
- "fremantle": maemoSpecificDepends + ", python-gst0.10",\r
- }[distribution]\r
- p.section = {\r
- "debian": "sound",\r
- "diablo": "user/multimedia",\r
- "fremantle": "user/multimedia",\r
- }[distribution]\r
- p.icon = "src/usr/share/icons/hicolor/48x48/hildon/nqaap.png"\r
- p.arch="all" #should be all for python, any for all arch\r
- p.urgency="low" #not used in maemo onl for deb os\r
- p.distribution=distribution\r
- p.repository="extras"\r
- p.bugTracker="https://bugs.maemo.org/enter_bug.cgi?product=nQa%20Audiobook%20Player"\r
- p.postinstall="""#!/bin/sh\r
-rm -f ~/.nqaap/nqaap.log\r
-"""\r
- # p.postremove="""#!/bin/sh\r
- # chmod +x /usr/bin/mclock.py""" #Set here your post remove script\r
- # p.preinstall="""#!/bin/sh\r
- # chmod +x /usr/bin/mclock.py""" #Set here your pre install script\r
- # p.preremove="""#!/bin/sh\r
- # chmod +x /usr/bin/mclock.py""" #Set here your pre remove script\r
- version = "0.8.6" #Version of your software, e.g. "1.2.0" or "0.8.2"\r
- build = "0" #Build number, e.g. "1" for the first build of this\r
- #version of your software. Increment\r
- #for later re-builds of the same\r
- #version of your software. Text with\r
- #changelog information to be displayed\r
- #in the package "Details" tab of the\r
- #Maemo Application Manager\r
- changeloginformation = """\r
-* About window as requested by magnuslu\r
-* Switched how storage of active book, chapter, and chapter position is stored\r
+__author__ = "Soeren 'Pengman' Pedersen"\r
+__email__ = "pengmeister@gmail.com"\r
+__version__ = constants.__version__\r
+__build__ = constants.__build__\r
+__changelog__ = """\r
+* Fixing some packaging bugs I made that broke everything\r
""".strip()\r
- dir_name = "src" #Name of the subfolder containing your package\r
- #source files\r
- #(e.g. usr\share\icons\hicolor\scalable\myappicon.svg,\r
- #usr\lib\myapp\somelib.py). We suggest\r
- #to leave it named src in all projects\r
- #and will refer to that in the wiki\r
- #article on maemo.org\r
- #Thanks to DareTheHair from talk.maemo.org for this snippet that\r
- #recursively builds the file list\r
- for root, dirs, files in os.walk(dir_name):\r
- if any(f.startswith(".") for f in root.split(os.sep)):\r
- continue # avoid hidden folders, esp svn ones\r
-\r
- real_dir = root[len(dir_name):]\r
- fake_file = []\r
- for f in files:\r
- fake_file.append(root + os.sep + f + "|" + f)\r
- if len(fake_file) > 0:\r
- p[real_dir] = fake_file\r
-\r
- print p\r
- if distribution == "debian":\r
- print p.generate(\r
- version="%s-%s" % (version, build),\r
- changelog=changeloginformation,\r
- build=True,\r
- tar=False,\r
- changes=False,\r
- dsc=False,\r
- )\r
- else:\r
- print p.generate(\r
- version="%s-%s" % (version, build),\r
- changelog=changeloginformation,\r
- build=False,\r
- tar=True,\r
- changes=True,\r
- dsc=True,\r
- )\r
- print "Building for %s finished" % distribution\r
+\r
+\r
+__postinstall__ = """#!/bin/sh -e\r
+\r
+gtk-update-icon-cache -f /usr/share/icons/hicolor\r
+rm -f ~/.%(name)s/%(name)s.log\r
+""" % {"name": constants.__app_name__}\r
+\r
+\r
+def find_files(prefix, path):\r
+ for root, dirs, files in os.walk(path):\r
+ for file in files:\r
+ if file.startswith(prefix+"-"):\r
+ fileParts = file.split("-")\r
+ unused, relPathParts, newName = fileParts[0], fileParts[1:-1], fileParts[-1]\r
+ assert unused == prefix\r
+ relPath = os.sep.join(relPathParts)\r
+ yield relPath, file, newName\r
+\r
+\r
+def unflatten_files(files):\r
+ d = {}\r
+ for relPath, oldName, newName in files:\r
+ if relPath not in d:\r
+ d[relPath] = []\r
+ d[relPath].append((oldName, newName))\r
+ return d\r
+\r
+\r
+def build_package(distribution):\r
+ try:\r
+ os.chdir(os.path.dirname(sys.argv[0]))\r
+ except:\r
+ pass\r
+\r
+ py2deb.Py2deb.SECTIONS = py2deb.SECTIONS_BY_POLICY[distribution]\r
+ p = py2deb.Py2deb(__app_name__)\r
+ p.prettyName = constants.__pretty_app_name__\r
+ p.description = __description__\r
+ p.bugTracker="https://bugs.maemo.org/enter_bug.cgi?product=nQa%%20Audiobook%%20Player"\r
+ p.author = __author__\r
+ p.mail = __email__\r
+ p.license = "lgpl"\r
+ p.depends = ", ".join([\r
+ "python2.6 | python2.5",\r
+ "python-gtk2 | python2.5-gtk2",\r
+ "python-dbus | python2.5-dbus",\r
+ "python-telepathy | python2.5-telepathy",\r
+ "python-gobject | python2.5-gobject",\r
+ "python-simplejson",\r
+ ])\r
+ maemoSpecificDepends = ", python-osso | python2.5-osso, python-hildon | python2.5-hildon"\r
+ p.depends += {\r
+ "debian": ", python-gst0.10",\r
+ "diablo": maemoSpecificDepends,\r
+ "fremantle": maemoSpecificDepends + ", python-gst0.10",\r
+ }[distribution]\r
+ p.section = {\r
+ "debian": "sound",\r
+ "diablo": "user/multimedia",\r
+ "fremantle": "user/multimedia",\r
+ }[distribution]\r
+ p.arch="all"\r
+ p.urgency="low"\r
+ p.distribution=distribution\r
+ p.repository="extras"\r
+ p.changelog = __changelog__\r
+ p.postinstall = __postinstall__\r
+ p.icon = {\r
+ "debian": "26x26-%s.png" % constants.__app_name__,\r
+ "diablo": "26x26-%s.png" % constants.__app_name__,\r
+ "fremantle": "48x48-%s.png" % constants.__app_name__,\r
+ }[distribution]\r
+ p["/opt/%s/bin" % constants.__app_name__] = [ "%s.py" % constants.__app_name__ ]\r
+ for relPath, files in unflatten_files(find_files("src", ".")).iteritems():\r
+ fullPath = "/opt/%s/lib" % constants.__app_name__\r
+ if relPath:\r
+ fullPath += os.sep+relPath\r
+ p[fullPath] = list(\r
+ "|".join((oldName, newName))\r
+ for (oldName, newName) in files\r
+ )\r
+ p["/usr/share/applications/hildon"] = ["%s.desktop" % constants.__app_name__]\r
+ p["/usr/share/icons/hicolor/26x26/hildon"] = ["26x26-%s.png|%s.png" % (constants.__app_name__, constants.__app_name__)]\r
+ p["/usr/share/icons/hicolor/48x48/hildon"] = ["48x48-%s.png|%s.png" % (constants.__app_name__, constants.__app_name__)]\r
+ p["/usr/share/icons/hicolor/64x64/hildon"] = ["64x64-%s.png|%s.png" % (constants.__app_name__, constants.__app_name__)]\r
+ p["/usr/share/icons/hicolor/scalable/hildon"] = ["scale-%s.png|%s.png" % (constants.__app_name__, constants.__app_name__)]\r
+\r
+ print p\r
+ if distribution == "debian":\r
+ print p.generate(\r
+ version="%s-%s" % (__version__, __build__),\r
+ changelog=__changelog__,\r
+ build=True,\r
+ tar=False,\r
+ changes=False,\r
+ dsc=False,\r
+ )\r
+ else:\r
+ print p.generate(\r
+ version="%s-%s" % (__version__, __build__),\r
+ changelog=__changelog__,\r
+ build=False,\r
+ tar=True,\r
+ changes=True,\r
+ dsc=True,\r
+ )\r
+ print "Building for %s finished" % distribution\r
\r
\r
if __name__ == "__main__":\r
- if len(sys.argv) == 1:\r
- distribution = "fremantle"\r
- else:\r
- distribution = sys.argv[1]\r
- build_package(distribution)\r
+ if len(sys.argv) == 1:\r
+ distribution = "fremantle"\r
+ else:\r
+ distribution = sys.argv[1]\r
+ build_package(distribution)\r