~ubuntu-branches/ubuntu/utopic/pyscrabble/utopic

« back to all changes in this revision

Viewing changes to debian/patches/10_installation.dpatch

  • Committer: Bazaar Package Importer
  • Author(s): Magnus Holmgren
  • Date: 2011-04-25 21:58:25 UTC
  • Revision ID: james.westby@ubuntu.com-20110425215825-wk0w127t7mgjrbjy
Tags: 1.6.2-5
* Convert package to source format 3.0 (quilt), meaning renaming the
  patches and converting their headers as well as dropping
  README.source.
* Convert to using dh_python2 (Closes: #616983).
* Run setup.py with --install-layout=deb to get filesystem layout right.
* Bump Debhelper compat level to 7.
* pyscrabble-server.README.Debian: Clarify that pyscrabble-server is not
  intended to be run from the command line directly (Closes: #611833).
* hosts.patch: Improve the code for adding new entries to the Additional
  Hosts list:
  * Fix C&P bug that caused the Game port to be validated twice but the 
    Web port not at all.  
  * Pre-fill the default port numbers to help the user (Closes: #566666).
  * Don't destroy the dialog until the entered values have been extracted.
* Increase Standards-Version to 3.9.2 without changes needed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#! /bin/sh /usr/share/dpatch/dpatch-run
2
 
## 10_installation.dpatch by Magnus Holmgren <magnus@kibibyte.se>
3
 
##
4
 
## All lines beginning with `## DP:' are a description of the patch.
5
 
## DP: Mostly adapt server to run as a daemon
6
 
 
7
 
@DPATCH@
8
 
 
9
 
--- pyscrabble-1.6.2.orig/pyscrabble/net/server.py
10
 
+++ pyscrabble-1.6.2/pyscrabble/net/server.py
11
 
@@ -46,7 +46,7 @@
12
 
         self.db = db.DB()
13
 
         self.maxUsersLoggedIn = 0
14
 
         self.startDate = util.Time(seconds=time.time(), dispDate=True)
15
 
-        self.rankings = rank.Rankings( resources["config"][constants.RANK_CONFIG] )
16
 
+        self.rankings = rank.Rankings( resources["serverconfig"][constants.RANK_CONFIG] )
17
 
         
18
 
         dir = resources["resources"][constants.DICT_DIR].path
19
 
         for lang in os.listdir( dir ):
20
 
--- pyscrabble-1.6.2.orig/pyscrabble/dist.py
21
 
+++ pyscrabble-1.6.2/pyscrabble/dist.py
22
 
@@ -1,8 +1,6 @@
23
 
 import glob
24
 
 import os
25
 
 import sys
26
 
-from distutils.command.install_lib import install_lib
27
 
-from distutils.command.install_scripts import install_scripts
28
 
 
29
 
 APP_NAME = 'pyscrabble'
30
 
 
31
 
@@ -31,50 +29,13 @@
32
 
     RESOURCE_PREFIX = 'resources'
33
 
 
34
 
 CONFIG_DIR = get_app_data_dir()
35
 
-if not os.path.exists(CONFIG_DIR):
36
 
-    CONFIG_DIR = os.path.join(RESOURCE_PREFIX, 'config')
37
 
 
38
 
-def getLocaleDirs(dir, domain):
39
 
-    l = []
40
 
-    
41
 
-    langs = os.listdir( dir )
42
 
-    for lang in langs:
43
 
-        d = os.path.join(dir,lang,"LC_MESSAGES")
44
 
-        path = os.path.join(d, '%s.mo' % domain)
45
 
-        l.append( (d,[path]) )
46
 
-    
47
 
-    return l
48
 
-
49
 
-def getResourceDirs(dir, ensureLower=True, basePath = None, outdir=None):
50
 
-    result = []
51
 
-    absolute = os.path.abspath(dir)
52
 
-    
53
 
-    base = basePath
54
 
-    if base is None:
55
 
-        base = os.path.dirname(absolute)
56
 
-    else:
57
 
-        base = os.path.dirname( os.path.abspath(base) )
58
 
-    
59
 
-    for root, dirs, files in os.walk(absolute):
60
 
-        if ensureLower and not os.path.basename(root).islower(): continue
61
 
-        if len(files) > 0:
62
 
-            f = []
63
 
-            d = root[len(base)+1:]
64
 
-            if outdir is not None:
65
 
-                d = os.path.join(outdir, d)
66
 
-            for file in files:
67
 
-                f.append( os.path.join(root, file) )
68
 
-            result.append( (d, f) )
69
 
-    return result
70
 
-
71
 
-def getDataFiles():
72
 
-    return getLocaleDirs('resources/locale',APP_NAME) + \
73
 
-           [('resources/images', glob.glob('resources/images/*.*')), \
74
 
-            ('resources/sounds', glob.glob('resources/sounds/*.*')), \
75
 
-            ('config', glob.glob('resources/config/*.cfg')), \
76
 
-            ('resources/web', glob.glob('resources/web/*.*'))] + \
77
 
-           getResourceDirs('resources/dict', True, 'resources') + \
78
 
-           getResourceDirs('resources/letters', True, 'resources')
79
 
+try:
80
 
+    from __installed__ import SERVER_LOG_DIR, SERVER_DB_DIR, SERVER_CONFIG_DIR
81
 
+except ImportError:
82
 
+    SERVER_CONFIG_DIR = os.path.join(RESOURCE_PREFIX, 'config')
83
 
+    SERVER_DB_DIR = CONFIG_DIR
84
 
+    SERVER_LOG_DIR = CONFIG_DIR
85
 
 
86
 
 def ensure_config_dir(dir):
87
 
     '''
88
 
@@ -86,45 +47,6 @@
89
 
         os.makedirs(dir)
90
 
 
91
 
 
92
 
-class InstallScripts(install_scripts):
93
 
-    '''
94
 
-    install_scripts handler to strip any possible ^M's from files so they will run properly on unix
95
 
-    '''
96
 
-    
97
 
-    def run(self):
98
 
-        install_scripts.run(self)
99
 
-        for file in self.get_outputs():
100
 
-            self.fix(file)
101
 
-    
102
 
-    def fix(self, path):
103
 
-        f = open(path, "rb")
104
 
-        data = f.read().replace("\r\n", "\n")
105
 
-        f.close()
106
 
-        f = open(path, "w")
107
 
-        f.write(data)
108
 
-        f.close()
109
 
-    
110
 
-
111
 
-class InstallLib(install_lib):
112
 
-    
113
 
-    def generate_template(self):
114
 
-        filename = os.path.join(self.build_dir, APP_NAME, '__installed__.py')
115
 
-        self.mkpath(os.path.dirname(filename))
116
 
-        
117
 
-        install = self.distribution.get_command_obj('install')
118
 
-        datadir = os.path.join(install.prefix, 'share', APP_NAME)
119
 
-        
120
 
-        fp = open(filename, 'w')
121
 
-        fp.write('# Generated by setup.py do not modify\n')
122
 
-        fp.write("RESOURCE_PREFIX = '%s'\n" % datadir)
123
 
-        fp.close()
124
 
-
125
 
-        return filename
126
 
-    
127
 
-    def install(self):
128
 
-        template = self.generate_template()
129
 
-        return install_lib.install(self) + [template]
130
 
-
131
 
 class Resource(object):
132
 
     '''
133
 
     Filesystem resource
134
 
--- pyscrabble-1.6.2.orig/pyscrabble/db.py
135
 
+++ pyscrabble-1.6.2/pyscrabble/db.py
136
 
@@ -1,5 +1,4 @@
137
 
 from pyscrabble import constants
138
 
-from pyscrabble import manager
139
 
 from ZODB import FileStorage, DB as _DB
140
 
 import transaction
141
 
 
142
 
@@ -12,8 +11,10 @@
143
 
         '''
144
 
         Initialize the connection to the DB
145
 
         '''
146
 
-        r = manager.ResourceManager()
147
 
-        path = r["config"][constants.DB_LOCATION]
148
 
+        import os
149
 
+        from pyscrabble import dist
150
 
+
151
 
+        path = os.path.join(dist.SERVER_DB_DIR, constants.DB_LOCATION)
152
 
         
153
 
         storage = FileStorage.FileStorage(path)    
154
 
         db = _DB(storage)
155
 
--- pyscrabble-1.6.2.orig/pyscrabble/manager.py
156
 
+++ pyscrabble-1.6.2/pyscrabble/manager.py
157
 
@@ -36,6 +36,7 @@
158
 
         '''
159
 
         self.loaded = True
160
 
         
161
 
+        self["serverconfig"] = dist.Resource( dist.SERVER_CONFIG_DIR )
162
 
         self["config"] = dist.Resource( dist.CONFIG_DIR )
163
 
         self["resources"] = dist.Resource( dist.RESOURCE_PREFIX )
164
 
     
165
 
--- pyscrabble-1.6.2.orig/server_console.py
166
 
+++ pyscrabble-1.6.2/server_console.py
167
 
@@ -76,15 +76,15 @@
168
 
         '''
169
 
         Configure the server
170
 
         '''
171
 
-        dist.ensure_config_dir(dist.CONFIG_DIR)
172
 
+        dist.ensure_config_dir(dist.SERVER_CONFIG_DIR)
173
 
         resources = manager.ResourceManager()
174
 
         logging.basicConfig(level=logging.DEBUG,
175
 
                     format='%(asctime)s %(name)s %(levelname)s %(message)s',
176
 
-                    filename=resources["config"][constants.LOG_FILE],
177
 
-                    filemode='w')
178
 
+                    filename=os.path.join(dist.SERVER_LOG_DIR, constants.LOG_FILE),
179
 
+                    filemode='a')
180
 
         
181
 
         
182
 
-        config = resources["config"][constants.SERVER_CONSOLE_CONFIG]
183
 
+        config = resources["serverconfig"][constants.SERVER_CONSOLE_CONFIG]
184
 
         
185
 
         if not os.path.exists(config):
186
 
             raise IOError, "%s must exist in %s" % (constants.SERVER_CONSOLE_CONFIG, resources["config"].path)
187
 
--- pyscrabble-1.6.2.orig/setup.py
188
 
+++ pyscrabble-1.6.2/setup.py
189
 
@@ -7,20 +7,130 @@
190
 
     HAS_PY2EXE = False
191
 
 import glob
192
 
 import os
193
 
-import pkg_resources
194
 
+#import pkg_resources
195
 
 import sys
196
 
+from distutils.command.install_lib import install_lib
197
 
+from distutils.command.install_scripts import install_scripts
198
 
+from distutils.command.install_data import install_data
199
 
+from distutils.command.install import install
200
 
 from pyscrabble.constants import VERSION
201
 
 from pyscrabble import util
202
 
 from pyscrabble import dist
203
 
 
204
 
-def fix_path(item):
205
 
-    if type(item) in (list, tuple):
206
 
-        if 'config' in item[0]:
207
 
-            return (item[0].replace('config', dist.get_app_data_dir()), item[1])
208
 
-        else:
209
 
-            return (item[0].replace('resources/', 'share/pyscrabble/'), item[1])
210
 
+    
211
 
+def getLocaleDirs(dir, domain):
212
 
+    l = []
213
 
+    
214
 
+    langs = os.listdir( dir )
215
 
+    for lang in langs:
216
 
+        d = os.path.join(dir,lang,"LC_MESSAGES")
217
 
+        path = os.path.join(d, '%s.mo' % domain)
218
 
+        l.append( (d,[path]) )
219
 
+    
220
 
+    return l
221
 
+
222
 
+def getResourceDirs(dir, ensureLower=True, basePath = None, outdir=None):
223
 
+    result = []
224
 
+    absolute = os.path.abspath(dir)
225
 
+    
226
 
+    base = basePath
227
 
+    if base is None:
228
 
+        base = os.path.dirname(absolute)
229
 
     else:
230
 
-        return item
231
 
+        base = os.path.dirname( os.path.abspath(base) )
232
 
+    
233
 
+    for root, dirs, files in os.walk(absolute):
234
 
+        if ensureLower and not os.path.basename(root).islower(): continue
235
 
+        if len(files) > 0:
236
 
+            f = []
237
 
+            d = root[len(base)+1:]
238
 
+            if outdir is not None:
239
 
+                d = os.path.join(outdir, d)
240
 
+            for file in files:
241
 
+                f.append( os.path.join(root, file) )
242
 
+            result.append( (d, f) )
243
 
+    return result
244
 
+
245
 
+def getDataFiles():
246
 
+    return getLocaleDirs('resources/locale',dist.APP_NAME) + \
247
 
+           [('resources/images', glob.glob('resources/images/*.*')), \
248
 
+            ('resources/sounds', glob.glob('resources/sounds/*.*')), \
249
 
+            ('config', glob.glob('resources/config/*.cfg')), \
250
 
+            ('resources/web', glob.glob('resources/web/*.*'))] + \
251
 
+           getResourceDirs('resources/dict', True, 'resources') + \
252
 
+           getResourceDirs('resources/letters', True, 'resources')
253
 
+
254
 
+class InstallScripts(install_scripts):
255
 
+    '''
256
 
+    install_scripts handler to strip any possible ^Ms from files so they will run properly on unix
257
 
+    '''
258
 
+    
259
 
+    def run(self):
260
 
+        install_scripts.run(self)
261
 
+        for file in self.get_outputs():
262
 
+            self.fix(file)
263
 
+    
264
 
+    def fix(self, path):
265
 
+        f = open(path, "rb")
266
 
+        data = f.read().replace("\r\n", "\n")
267
 
+        f.close()
268
 
+        f = open(path, "w")
269
 
+        f.write(data)
270
 
+        f.close()
271
 
+    
272
 
+
273
 
+class InstallLib(install_lib):
274
 
+    
275
 
+    def generate_template(self):
276
 
+        filename = os.path.join(self.build_dir, dist.APP_NAME, '__installed__.py')
277
 
+        self.mkpath(os.path.dirname(filename))
278
 
+        
279
 
+        install = self.distribution.get_command_obj('install')
280
 
+        datadir = os.path.join(install.prefix, 'share', 'games', dist.APP_NAME)
281
 
+        
282
 
+        fp = open(filename, 'w')
283
 
+        fp.write('# Generated by setup.py do not modify\n')
284
 
+        fp.write("RESOURCE_PREFIX = %r\n" % datadir)
285
 
+        fp.write("SERVER_CONFIG_DIR = %r\n" % install.confdir)
286
 
+        fp.write("SERVER_DB_DIR = %r\n" % install.dbdir)
287
 
+        fp.write("SERVER_LOG_DIR = %r\n" % install.logdir)
288
 
+        fp.close()
289
 
+
290
 
+        return filename
291
 
+    
292
 
+    def install(self):
293
 
+        template = self.generate_template()
294
 
+        return install_lib.install(self) + [template]
295
 
+
296
 
+class InstallData(install_data):
297
 
+    def fix_path(self, item):
298
 
+        install = self.distribution.get_command_obj('install')
299
 
+        if type(item) in (list, tuple):
300
 
+            if 'config' in item[0]:
301
 
+                return (item[0].replace('config', install.confdir), item[1])
302
 
+            else:
303
 
+                return (item[0].replace('resources/', 'share/games/pyscrabble/'), item[1])
304
 
+        else:
305
 
+            return item
306
 
+
307
 
+    def finalize_options(self):
308
 
+        self.data_files = [ self.fix_path(f) for f in self.data_files ]
309
 
+        install_data.finalize_options(self)
310
 
+
311
 
+class Install(install):
312
 
+    user_options = install.user_options + [ ('logdir=', None, "log directory"),
313
 
+                                            ('dbdir=', None, "database directory"),
314
 
+                                            ('confdir=', None, "configuration directory") ]
315
 
+
316
 
+    def initialize_options(self):
317
 
+        self.logdir = None
318
 
+        self.dbdir = None
319
 
+        self.confdir = None
320
 
+        install.initialize_options(self)
321
 
+
322
 
+    def finalize_options(self):
323
 
+        print self.logdir
324
 
+        install.finalize_options(self)
325
 
 
326
 
 kwargs = {
327
 
     'name': 'pyscrabble',
328
 
@@ -28,7 +138,7 @@
329
 
     'author': 'Kevin Conaway',
330
 
     'author_email': 'kevin.a.conaway@gmail.com',
331
 
     'url': 'http://pyscrabble.sourceforge.net',
332
 
-    'data_files': dist.getDataFiles(),
333
 
+    'data_files': getDataFiles(),
334
 
     'packages': ['pyscrabble', 'pyscrabble.command', 'pyscrabble.game', 'pyscrabble.gui', 'pyscrabble.net']
335
 
 }
336
 
 
337
 
@@ -77,10 +187,10 @@
338
 
     kwargs['data_files'] += [('.', ['CHANGELOG.txt'])]
339
 
     kwargs['data_files'] += [('.', ['LICENSE.txt'])]
340
 
     #for egg in eggpacks:
341
 
-    #    kwargs['data_files'] += dist.getResourceDirs(egg.location, ensureLower=False, basePath=None, outdir='extra')
342
 
+    #    kwargs['data_files'] += getResourceDirs(egg.location, ensureLower=False, basePath=None, outdir='extra')
343
 
 else:
344
 
     kwargs['scripts'] = ['pyscrabble-main.py', 'server_console.py', 'db_upgrade.py']
345
 
-    kwargs['data_files'] = [fix_path(x) for x in kwargs['data_files']]
346
 
-    kwargs['cmdclass'] = {'install_lib': dist.InstallLib, 'install_scripts' : dist.InstallScripts}
347
 
+    #    kwargs['data_files'] = [fix_path(x) for x in kwargs['data_files']]
348
 
+    kwargs['cmdclass'] = {'install': Install, 'install_lib': InstallLib, 'install_scripts' : InstallScripts, 'install_data': InstallData}
349
 
 
350
 
-setup(**kwargs)
351
 
\ No newline at end of file
352
 
+setup(**kwargs)