Updating changelist
[gc-dialer] / 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__ = "Touch screen enhanced interface to the GoogleVoice/GrandCentral phone service"
16 __author__ = "Ed Page"
17 __email__ = "eopage@byu.net"
18 __version__ = constants.__version__
19 __build__ = 0
20 __changelog__ = '''
21 1.0.3
22 * Holding down a tab for a second will now force a refresh
23 * Fixed a bug dealing with overzealously refreshing the contacts tab
24 * Finding some undescriptive errors and made them more descriptive
25 * Swapped the order GrandCentral and GoogleVoice appear in login window
26 * Fixed the "Recent" and "Message" tabs, google changed things on me again
27
28 1.0.2
29 * Random bug fixes
30 * Random performance improvements
31
32 1.0.1
33 * Fixed a voicemail transcripts due to a GoogleVoice change
34
35 1.0.0
36 * Added names to the recent tab for GoogleVoice
37
38 0.9.9
39 * SMS From Dialpad
40 * Display of names for messages tab
41 * Condensed messages/recent's date column
42
43 0.9.8
44  * Added columns to recent view and messages view to help seperate messages
45  * Attempted refreshing session on dial/sms send
46  * Fixed a GC Bug
47  * Minor bug fixes as usual
48
49 0.9.7
50  * Switched to Force Refresh for when wanting to check for more messages
51  * Removed timeouts that forced refreshes on various tabs
52  * Added support for a settings file, fairly primitive right now
53  * Fixed Maemo Support
54  * Lots of major and minor bug fixes
55
56 0.9.6
57  * Experimenting with the tabs being on the side
58  * Now the phone selector is used always, even if there is just one phone number
59  * Added a Messages Tab, which displays SMS and Voicemail messages
60  * Added option to send SMS messages
61
62 0.9.5
63  * Fixed a login issue due to Google changing their webpage
64
65 0.9.4 - ""
66  * Misc Bug fixes and experiments
67
68 0.9.3 - ""
69  * Removed the much disliked contact source ID
70  * Added saving of callback number when using GoogleVoice
71  * Got proper formatting on things ("&" rather than "&")
72  * Misc Bug fixes
73
74 0.9.2 - "Two heads are better than one"
75  * Adding of UI to switch between GC and GV
76  * Minimized flashing the dial button between grayed out and not on startup
77  * Bug fixes
78
79 0.9.1 - "Get your hands off that"
80  * GoogleVoice Support, what a pain
81  * More flexible CSV support.  It now checks the header row for what column name/number are in
82  * Experimenting with faster startup by caching PYC files with the package
83  * Fixing of some bad error handling
84  * More debug output for when people run into issues
85
86 0.9.0 - "Slick as snot"
87  * Caching of contacts
88  * Refactoring to make working with the code easier
89  * Filesystem backed contacts but currently only supporting a specific csv format
90  * Gracefully handle lack of connection and connection transitions
91  * Gracefully handle failed login
92  * A tiny bit better error reporting
93
94 0.8.3 - "Extras Love"
95  * Version bump fighting the extras autobuilder, I hope this works
96
97 0.8.2 - "Feed is for horses, so what about feedback?"
98  * Merged addressbook
99  * many more smaller fixes
100
101 0.8.1 - "Two Beers"
102  * Thumb scrollbars ( Kudos Khertan )
103
104 0.8.0 - "Spit and polish"
105  * Addressbook support
106  * threaded networking for better interactivity
107  * Hold down back to clear number
108  * Standard about dialog
109  * many more smaller fixes
110 '''
111
112
113 __postinstall__ = '''#!/bin/sh -e
114
115 gtk-update-icon-cache -f /usr/share/icons/hicolor
116 '''
117
118
119 def find_files(path):
120         for root, dirs, files in os.walk(path):
121                 for file in files:
122                         if file.startswith("src-"):
123                                 fileParts = file.split("-")
124                                 unused, relPathParts, newName = fileParts[0], fileParts[1:-1], fileParts[-1]
125                                 assert unused == "src"
126                                 relPath = os.sep.join(relPathParts)
127                                 yield relPath, file, newName
128
129
130 def unflatten_files(files):
131         d = {}
132         for relPath, oldName, newName in files:
133                 if relPath not in d:
134                         d[relPath] = []
135                 d[relPath].append((oldName, newName))
136         return d
137
138
139 def build_package(distribution):
140         try:
141                 os.chdir(os.path.dirname(sys.argv[0]))
142         except:
143                 pass
144
145         p = py2deb.Py2deb(__appname__)
146         p.description = __description__
147         p.author = __author__
148         p.mail = __email__
149         p.license = "lgpl"
150         p.depends = {
151                 "diablo": "python2.5, python2.5-gtk2, python2.5-xml",
152                 "mer": "python2.6, python-gtk2, python-xml, python-glade2",
153         }[distribution]
154         p.section = "user/communication"
155         p.arch = "all"
156         p.urgency = "low"
157         p.distribution = "chinook diablo fremantle mer"
158         p.repository = "extras"
159         p.changelog = __changelog__
160         p.postinstall = __postinstall__
161         p.icon = "26x26-dialcentral.png"
162         p["/usr/bin"] = [ "dialcentral.py" ]
163         for relPath, files in unflatten_files(find_files(".")).iteritems():
164                 fullPath = "/usr/lib/dialcentral"
165                 if relPath:
166                         fullPath += os.sep+relPath
167                 p[fullPath] = list(
168                         "|".join((oldName, newName))
169                         for (oldName, newName) in files
170                 )
171         p["/usr/share/applications/hildon"] = ["dialcentral.desktop"]
172         p["/usr/share/icons/hicolor/26x26/hildon"] = ["26x26-dialcentral.png|dialcentral.png"]
173         p["/usr/share/icons/hicolor/64x64/hildon"] = ["64x64-dialcentral.png|dialcentral.png"]
174         p["/usr/share/icons/hicolor/scalable/hildon"] = ["scale-dialcentral.png|dialcentral.png"]
175
176         print p
177         print p.generate(
178                 __version__, __build__, changelog=__changelog__,
179                 tar=True, dsc=True, changes=True, build=False, src=True
180         )
181         print "Building for %s finished" % distribution
182
183
184 if __name__ == "__main__":
185         if len(sys.argv) > 1:
186                 try:
187                         import optparse
188                 except ImportError:
189                         optparse = None
190
191                 if optparse is not None:
192                         parser = optparse.OptionParser()
193                         (commandOptions, commandArgs) = parser.parse_args()
194         else:
195                 commandArgs = None
196                 commandArgs = ["diablo"]
197         build_package(commandArgs[0])