Updating from Dialcentral
[theonering] / support / builddeb.py
1 #!/usr/bin/python2.5
2
3 import os
4 import sys
5
6 try:
7         import py2deb
8 except ImportError:
9         import fake_py2deb as py2deb
10
11 import constants
12
13
14 __appname__ = constants.__app_name__
15 __description__ = """Google Voice Communication Plugin
16 .
17 Homepage: http://theonering.garage.maemo.org
18 """
19 __author__ = "Ed Page"
20 __email__ = "eopage@byu.net"
21 __version__ = constants.__version__
22 __build__ = constants.__build__
23 __changelog__ = """
24 0.1.0
25 * Initial release
26 """
27
28
29 __postinstall__ = """#!/bin/sh -e
30
31 gtk-update-icon-cache -f /usr/share/icons/hicolor
32 """
33
34 def find_files(path):
35         for root, dirs, files in os.walk(path):
36                 for file in files:
37                         if file.startswith("src-"):
38                                 fileParts = file.split("-")
39                                 unused, relPathParts, newName = fileParts[0], fileParts[1:-1], fileParts[-1]
40                                 assert unused == "src"
41                                 relPath = os.sep.join(relPathParts)
42                                 yield relPath, file, newName
43
44
45 def unflatten_files(files):
46         d = {}
47         for relPath, oldName, newName in files:
48                 if relPath not in d:
49                         d[relPath] = []
50                 d[relPath].append((oldName, newName))
51         return d
52
53
54 def build_package(distribution):
55         try:
56                 os.chdir(os.path.dirname(sys.argv[0]))
57         except:
58                 pass
59
60         py2deb.Py2deb.SECTIONS = py2deb.SECTIONS_BY_POLICY[distribution]
61         p = py2deb.Py2deb(__appname__)
62         p.prettyName = constants.__pretty_app_name__
63         p.description = __description__
64         p.bugTracker = "https://bugs.maemo.org/enter_bug.cgi?product=theonering"
65         p.upgradeDescription = __changelog__.split("\n\n", 1)[0]
66         p.author = __author__
67         p.mail = __email__
68         p.license = "lgpl"
69         p.depends = ", ".join([
70                 "python (>= 2.5)",
71                 "python-dbus",
72                 "python-gobject",
73                 "python-telepathy",
74         ])
75         p.section = {
76                 "debian": "comm",
77                 "chinook": "communication",
78                 "diablo": "user/network",
79                 "fremantle": "user/network",
80                 "mer": "user/network",
81         }[distribution]
82         p.arch = "all"
83         p.urgency = "low"
84         p.distribution = "chinook diablo fremantle mer debian"
85         p.repository = "extras"
86         p.changelog = __changelog__
87         p.postinstall = __postinstall__
88         p.icon = {
89                 "debian": "26x26-theonering.png",
90                 "chinook": "26x26-theonering.png",
91                 "diablo": "26x26-theonering.png",
92                 "fremantle": "64x64-theonering.png", # Fremantle natively uses 48x48
93                 "mer": "64x64-theonering.png",
94         }[distribution]
95         for relPath, files in unflatten_files(find_files(".")).iteritems():
96                 fullPath = "/usr/lib/theonering"
97                 if relPath:
98                         fullPath += os.sep+relPath
99                 p[fullPath] = list(
100                         "|".join((oldName, newName))
101                         for (oldName, newName) in files
102                 )
103         p["/usr/share/dbus-1/services"] = ["org.freedesktop.Telepathy.ConnectionManager.theonering.service.in"]
104         p["/usr/share/telepathy/managers"] = ["theonering.manager"]
105         p["/usr/share/icons/hicolor/26x26/hildon"] = ["26x26-theonering.png|theonering.png"]
106         p["/usr/share/icons/hicolor/64x64/hildon"] = ["64x64-theonering.png|theonering.png"]
107         p["/usr/share/icons/hicolor/scalable/hildon"] = ["scale-theonering.png|theonering.png"]
108
109         print p
110         print p.generate(
111                 version="%s-%s" % (__version__, __build__),
112                 changelog=__changelog__,
113                 build=False,
114                 tar=True,
115                 changes=True,
116                 dsc=True,
117         )
118         print "Building for %s finished" % distribution
119
120
121 if __name__ == "__main__":
122         if len(sys.argv) > 1:
123                 try:
124                         import optparse
125                 except ImportError:
126                         optparse = None
127
128                 if optparse is not None:
129                         parser = optparse.OptionParser()
130                         (commandOptions, commandArgs) = parser.parse_args()
131         else:
132                 commandArgs = None
133                 commandArgs = ["diablo"]
134         build_package(commandArgs[0])