~landscape/zope3/newer-from-ztk

« back to all changes in this revision

Viewing changes to src/twisted/scripts/tap2deb.py

  • Committer: Thomas Hervé
  • Date: 2009-07-08 13:52:04 UTC
  • Revision ID: thomas@canonical.com-20090708135204-df5eesrthifpylf8
Remove twisted copy

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
2
 
# See LICENSE for details.
3
 
 
4
 
 
5
 
 
6
 
import sys, os, string, shutil
7
 
 
8
 
from twisted.python import usage
9
 
 
10
 
class MyOptions(usage.Options):
11
 
    optFlags = [["unsigned", "u"]]
12
 
    optParameters = [["tapfile", "t", "twistd.tap"],
13
 
                  ["maintainer", "m", "", "The maintainer's name and email in a specific format: "
14
 
                   "'John Doe <johndoe@example.com>'"],
15
 
                  ["protocol", "p", ""],
16
 
                  ["description", "e", ""],
17
 
                  ["long_description", "l", ""],
18
 
                  ["set-version", "V", "1.0"],
19
 
                  ["debfile", "d", None],
20
 
                  ["type", "y", "tap", "type of configuration: 'tap', 'xml, 'source' or 'python' for .tac files"]]
21
 
 
22
 
    #zsh_altArgDescr = {"foo":"use this description for foo instead"}
23
 
    #zsh_multiUse = ["foo", "bar"]
24
 
    #zsh_mutuallyExclusive = [("foo", "bar"), ("bar", "baz")]
25
 
    zsh_actions = {"type":"(tap xml source python)"}
26
 
    #zsh_actionDescr = {"logfile":"log file name", "random":"random seed"}
27
 
 
28
 
    def postOptions(self):
29
 
        if not self["maintainer"]:
30
 
            raise usage.UsageError, "maintainer must be specified."
31
 
 
32
 
 
33
 
type_dict = {
34
 
'tap': 'file',
35
 
'python': 'python',
36
 
'source': 'source',
37
 
'xml': 'xml',
38
 
}
39
 
 
40
 
def save_to_file(file, text):
41
 
    open(file, 'w').write(text)
42
 
 
43
 
 
44
 
def run():
45
 
 
46
 
    try:
47
 
        config = MyOptions()
48
 
        config.parseOptions()
49
 
    except usage.error, ue:
50
 
        sys.exit("%s: %s" % (sys.argv[0], ue))
51
 
 
52
 
    tap_file = config['tapfile']
53
 
    base_tap_file = os.path.basename(config['tapfile'])
54
 
    protocol = (config['protocol'] or os.path.splitext(base_tap_file)[0])
55
 
    deb_file = config['debfile'] or 'twisted-'+protocol
56
 
    version = config['set-version']
57
 
    maintainer = config['maintainer']
58
 
    description = config['description'] or ('A Twisted-based server for %(protocol)s' %
59
 
                                            vars())
60
 
    long_description = config['long_description'] or 'Automatically created by tap2deb'
61
 
    twistd_option = type_dict[config['type']]
62
 
    date = string.strip(os.popen('822-date').read())
63
 
    directory = deb_file + '-' + version
64
 
    python_version = '%s.%s' % sys.version_info[:2]
65
 
 
66
 
    if os.path.exists(os.path.join('.build', directory)):
67
 
        os.system('rm -rf %s' % os.path.join('.build', directory))
68
 
    os.makedirs(os.path.join('.build', directory, 'debian'))
69
 
 
70
 
    shutil.copy(tap_file, os.path.join('.build', directory))
71
 
 
72
 
    save_to_file(os.path.join('.build', directory, 'debian', 'README.Debian'), 
73
 
    '''This package was auto-generated by tap2deb\n''')
74
 
 
75
 
    save_to_file(os.path.join('.build', directory, 'debian', 'conffiles'), 
76
 
    '''\
77
 
/etc/init.d/%(deb_file)s
78
 
/etc/default/%(deb_file)s
79
 
/etc/%(base_tap_file)s
80
 
''' % vars())
81
 
 
82
 
    save_to_file(os.path.join('.build', directory, 'debian', 'default'), 
83
 
    '''\
84
 
pidfile=/var/run/%(deb_file)s.pid
85
 
rundir=/var/lib/%(deb_file)s/
86
 
file=/etc/%(tap_file)s
87
 
logfile=/var/log/%(deb_file)s.log
88
 
 ''' % vars())
89
 
 
90
 
    save_to_file(os.path.join('.build', directory, 'debian', 'init.d'),
91
 
    '''\
92
 
#!/bin/sh
93
 
 
94
 
PATH=/sbin:/bin:/usr/sbin:/usr/bin
95
 
 
96
 
pidfile=/var/run/%(deb_file)s.pid \
97
 
rundir=/var/lib/%(deb_file)s/ \
98
 
file=/etc/%(tap_file)s \
99
 
logfile=/var/log/%(deb_file)s.log
100
 
 
101
 
[ -r /etc/default/%(deb_file)s ] && . /etc/default/%(deb_file)s
102
 
 
103
 
test -x /usr/bin/twistd%(python_version)s || exit 0
104
 
test -r $file || exit 0
105
 
test -r /usr/share/%(deb_file)s/package-installed || exit 0
106
 
 
107
 
 
108
 
case "$1" in
109
 
    start)
110
 
        echo -n "Starting %(deb_file)s: twistd"
111
 
        start-stop-daemon --start --quiet --exec /usr/bin/twistd%(python_version)s -- \
112
 
                          --pidfile=$pidfile \
113
 
                          --rundir=$rundir \
114
 
                          --%(twistd_option)s=$file \
115
 
                          --logfile=$logfile
116
 
        echo "."        
117
 
    ;;
118
 
 
119
 
    stop)
120
 
        echo -n "Stopping %(deb_file)s: twistd"
121
 
        start-stop-daemon --stop --quiet  \
122
 
            --pidfile $pidfile
123
 
        echo "."        
124
 
    ;;
125
 
 
126
 
    restart)
127
 
        $0 stop
128
 
        $0 start
129
 
    ;;
130
 
 
131
 
    force-reload)
132
 
        $0 restart
133
 
    ;;
134
 
 
135
 
    *)
136
 
        echo "Usage: /etc/init.d/%(deb_file)s {start|stop|restart|force-reload}" >&2
137
 
        exit 1
138
 
    ;;
139
 
esac
140
 
 
141
 
exit 0
142
 
''' % vars())
143
 
 
144
 
    os.chmod(os.path.join('.build', directory, 'debian', 'init.d'), 0755)
145
 
 
146
 
    save_to_file(os.path.join('.build', directory, 'debian', 'postinst'),
147
 
    '''\
148
 
#!/bin/sh
149
 
update-rc.d %(deb_file)s defaults >/dev/null
150
 
invoke-rc.d %(deb_file)s start
151
 
''' % vars())
152
 
 
153
 
    save_to_file(os.path.join('.build', directory, 'debian', 'prerm'),
154
 
    '''\
155
 
#!/bin/sh
156
 
invoke-rc.d %(deb_file)s stop
157
 
''' % vars())
158
 
 
159
 
    save_to_file(os.path.join('.build', directory, 'debian', 'postrm'),
160
 
    '''\
161
 
#!/bin/sh
162
 
if [ "$1" = purge ]; then
163
 
        update-rc.d %(deb_file)s remove >/dev/null
164
 
fi
165
 
''' % vars())
166
 
 
167
 
    save_to_file(os.path.join('.build', directory, 'debian', 'changelog'),
168
 
    '''\
169
 
%(deb_file)s (%(version)s) unstable; urgency=low
170
 
 
171
 
  * Created by tap2deb
172
 
 
173
 
 -- %(maintainer)s  %(date)s
174
 
 
175
 
''' % vars())
176
 
 
177
 
    save_to_file(os.path.join('.build', directory, 'debian', 'control'),
178
 
    '''\
179
 
Source: %(deb_file)s
180
 
Section: net
181
 
Priority: extra
182
 
Maintainer: %(maintainer)s
183
 
Build-Depends-Indep: debhelper
184
 
Standards-Version: 3.5.6
185
 
 
186
 
Package: %(deb_file)s
187
 
Architecture: all
188
 
Depends: python%(python_version)s-twisted
189
 
Description: %(description)s
190
 
 %(long_description)s
191
 
''' % vars())
192
 
 
193
 
    save_to_file(os.path.join('.build', directory, 'debian', 'copyright'),
194
 
    '''\
195
 
This package was auto-debianized by %(maintainer)s on
196
 
%(date)s
197
 
 
198
 
It was auto-generated by tap2deb
199
 
 
200
 
Upstream Author(s): 
201
 
Moshe Zadka <moshez@twistedmatrix.com> -- tap2deb author
202
 
 
203
 
Copyright:
204
 
 
205
 
Insert copyright here.
206
 
''' % vars())
207
 
 
208
 
    save_to_file(os.path.join('.build', directory, 'debian', 'dirs'),
209
 
    '''\
210
 
etc/init.d
211
 
etc/default
212
 
var/lib/%(deb_file)s
213
 
usr/share/doc/%(deb_file)s
214
 
usr/share/%(deb_file)s
215
 
''' % vars())
216
 
 
217
 
    save_to_file(os.path.join('.build', directory, 'debian', 'rules'),
218
 
    '''\
219
 
#!/usr/bin/make -f
220
 
 
221
 
export DH_COMPAT=1
222
 
 
223
 
build: build-stamp
224
 
build-stamp:
225
 
        dh_testdir
226
 
        touch build-stamp
227
 
 
228
 
clean:
229
 
        dh_testdir
230
 
        dh_testroot
231
 
        rm -f build-stamp install-stamp
232
 
        dh_clean
233
 
 
234
 
install: install-stamp
235
 
install-stamp: build-stamp
236
 
        dh_testdir
237
 
        dh_testroot
238
 
        dh_clean -k
239
 
        dh_installdirs
240
 
 
241
 
        # Add here commands to install the package into debian/tmp.
242
 
        cp %(base_tap_file)s debian/tmp/etc/
243
 
        cp debian/init.d debian/tmp/etc/init.d/%(deb_file)s
244
 
        cp debian/default debian/tmp/etc/default/%(deb_file)s
245
 
        cp debian/copyright debian/tmp/usr/share/doc/%(deb_file)s/
246
 
        cp debian/README.Debian debian/tmp/usr/share/doc/%(deb_file)s/
247
 
        touch debian/tmp/usr/share/%(deb_file)s/package-installed
248
 
        touch install-stamp
249
 
 
250
 
binary-arch: build install
251
 
 
252
 
binary-indep: build install
253
 
        dh_testdir
254
 
        dh_testroot
255
 
        dh_strip
256
 
        dh_compress
257
 
        dh_installchangelogs
258
 
        dh_fixperms
259
 
        dh_installdeb
260
 
        dh_shlibdeps
261
 
        dh_gencontrol
262
 
        dh_md5sums
263
 
        dh_builddeb
264
 
 
265
 
source diff:                                                                  
266
 
        @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
267
 
 
268
 
binary: binary-indep binary-arch
269
 
.PHONY: build clean binary-indep binary-arch binary install
270
 
''' % vars())
271
 
 
272
 
    os.chmod(os.path.join('.build', directory, 'debian', 'rules'), 0755)
273
 
 
274
 
    os.chdir('.build/%(directory)s' % vars())
275
 
    os.system('dpkg-buildpackage -rfakeroot'+ ['', ' -uc -us'][config['unsigned']])
276
 
 
277
 
if __name__ == '__main__':
278
 
    run()
279