7f9e55763ecdebb6ad261047e83d374c8f0ba229
[nqaap] / support / builddeb.py
1 #!/usr/bin/env python\r
2 \r
3 import os\r
4 import sys\r
5 \r
6 try:\r
7         import py2deb\r
8 except ImportError:\r
9         import fake_py2deb as py2deb\r
10 \r
11 import constants\r
12 \r
13 \r
14 __app_name__ = constants.__app_name__\r
15 __description__ = """Very simple Audiobook player.\r
16 Supports playing, pausing, seeking (sort of) and saving state when changing book/closing.\r
17 Plays books arranged as dirs under myDocs/Audiobooks\r
18 .\r
19 Homepage: http://wiki.maemo.org/Nqaap"""\r
20 __author__ = "Soeren 'Pengman' Pedersen"\r
21 __email__ = "pengmeister@gmail.com"\r
22 __version__ = constants.__version__\r
23 __build__ = constants.__build__\r
24 __changelog__ = """\r
25 * Storing resuming information in utf-8 for non-English file names\r
26 """.strip()\r
27 \r
28 \r
29 __postinstall__ = """#!/bin/sh -e\r
30 \r
31 gtk-update-icon-cache -f /usr/share/icons/hicolor\r
32 rm -f ~/.%(name)s/%(name)s.log\r
33 """ % {"name": constants.__app_name__}\r
34 \r
35 \r
36 def find_files(prefix, path):\r
37         for root, dirs, files in os.walk(path):\r
38                 for file in files:\r
39                         if file.startswith(prefix+"-"):\r
40                                 fileParts = file.split("-")\r
41                                 unused, relPathParts, newName = fileParts[0], fileParts[1:-1], fileParts[-1]\r
42                                 assert unused == prefix\r
43                                 relPath = os.sep.join(relPathParts)\r
44                                 yield relPath, file, newName\r
45 \r
46 \r
47 def unflatten_files(files):\r
48         d = {}\r
49         for relPath, oldName, newName in files:\r
50                 if relPath not in d:\r
51                         d[relPath] = []\r
52                 d[relPath].append((oldName, newName))\r
53         return d\r
54 \r
55 \r
56 def build_package(distribution):\r
57         try:\r
58                 os.chdir(os.path.dirname(sys.argv[0]))\r
59         except:\r
60                 pass\r
61 \r
62         py2deb.Py2deb.SECTIONS = py2deb.SECTIONS_BY_POLICY[distribution]\r
63         p = py2deb.Py2deb(__app_name__)\r
64         p.prettyName = constants.__pretty_app_name__\r
65         p.description = __description__\r
66         p.bugTracker="https://bugs.maemo.org/enter_bug.cgi?product=nQa%%20Audiobook%%20Player"\r
67         p.author = __author__\r
68         p.mail = __email__\r
69         p.license = "lgpl"\r
70         p.depends = ", ".join([\r
71                 "python2.6 | python2.5",\r
72                 "python-gtk2 | python2.5-gtk2",\r
73                 "python-dbus | python2.5-dbus",\r
74                 "python-telepathy | python2.5-telepathy",\r
75                 "python-gobject | python2.5-gobject",\r
76                 "python-simplejson",\r
77         ])\r
78         maemoSpecificDepends = ", python-osso | python2.5-osso, python-hildon | python2.5-hildon"\r
79         p.depends += {\r
80                 "debian": ", python-gst0.10",\r
81                 "diablo": maemoSpecificDepends,\r
82                 "fremantle": maemoSpecificDepends + ", python-gst0.10",\r
83         }[distribution]\r
84         p.section = {\r
85                 "debian": "sound",\r
86                 "diablo": "user/multimedia",\r
87                 "fremantle": "user/multimedia",\r
88         }[distribution]\r
89         p.arch="all"\r
90         p.urgency="low"\r
91         p.distribution=distribution\r
92         p.repository="extras"\r
93         p.changelog = __changelog__\r
94         p.postinstall = __postinstall__\r
95         p.icon = {\r
96                 "debian": "26x26-%s.png" % constants.__app_name__,\r
97                 "diablo": "26x26-%s.png" % constants.__app_name__,\r
98                 "fremantle": "48x48-%s.png" % constants.__app_name__,\r
99         }[distribution]\r
100         p["/opt/%s/bin" % constants.__app_name__] = [ "%s.py" % constants.__app_name__ ]\r
101         for relPath, files in unflatten_files(find_files("src", ".")).iteritems():\r
102                 fullPath = "/opt/%s/lib" % constants.__app_name__\r
103                 if relPath:\r
104                         fullPath += os.sep+relPath\r
105                 p[fullPath] = list(\r
106                         "|".join((oldName, newName))\r
107                         for (oldName, newName) in files\r
108                 )\r
109         p["/usr/share/applications/hildon"] = ["%s.desktop" % constants.__app_name__]\r
110         p["/usr/share/icons/hicolor/26x26/hildon"] = ["26x26-%s.png|%s.png" % (constants.__app_name__, constants.__app_name__)]\r
111         p["/usr/share/icons/hicolor/48x48/hildon"] = ["48x48-%s.png|%s.png" % (constants.__app_name__, constants.__app_name__)]\r
112         p["/usr/share/icons/hicolor/64x64/hildon"] = ["64x64-%s.png|%s.png" % (constants.__app_name__, constants.__app_name__)]\r
113         p["/usr/share/icons/hicolor/scalable/hildon"] = ["scale-%s.png|%s.png" % (constants.__app_name__, constants.__app_name__)]\r
114 \r
115         print p\r
116         if distribution == "debian":\r
117                 print p.generate(\r
118                         version="%s-%s" % (__version__, __build__),\r
119                         changelog=__changelog__,\r
120                         build=True,\r
121                         tar=False,\r
122                         changes=False,\r
123                         dsc=False,\r
124                 )\r
125         else:\r
126                 print p.generate(\r
127                         version="%s-%s" % (__version__, __build__),\r
128                         changelog=__changelog__,\r
129                         build=False,\r
130                         tar=True,\r
131                         changes=True,\r
132                         dsc=True,\r
133                 )\r
134         print "Building for %s finished" % distribution\r
135 \r
136 \r
137 if __name__ == "__main__":\r
138         if len(sys.argv) == 1:\r
139                 distribution = "fremantle"\r
140         else:\r
141                 distribution = sys.argv[1]\r
142         build_package(distribution)\r