~certify-web-dev/twisted/certify-trunk

« back to all changes in this revision

Viewing changes to bin/tap2deb

  • Committer: Bazaar Package Importer
  • Author(s): Moshe Zadka
  • Date: 2002-03-08 07:14:16 UTC
  • Revision ID: james.westby@ubuntu.com-20020308071416-oxvuw76tpcpi5v1q
Tags: upstream-0.15.5
ImportĀ upstreamĀ versionĀ 0.15.5

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/env python
 
2
 
 
3
# Twisted, the Framework of Your Internet
 
4
# Copyright (C) 2001 Matthew W. Lefkowitz
 
5
 
6
# This library is free software; you can redistribute it and/or
 
7
# modify it under the terms of version 2.1 of the GNU Lesser General Public
 
8
# License as published by the Free Software Foundation.
 
9
 
10
# This library is distributed in the hope that it will be useful,
 
11
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
13
# Lesser General Public License for more details.
 
14
 
15
# You should have received a copy of the GNU Lesser General Public
 
16
# License along with this library; if not, write to the Free Software
 
17
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
18
 
 
19
"""tap2deb"""
 
20
import sys, os, string, pwd, shutil
 
21
 
 
22
### Twisted Preamble
 
23
# This makes sure that users don't have to set up their environment
 
24
# specially in order to run these programs from bin/.
 
25
import sys,os,string
 
26
 
 
27
if string.find(os.path.abspath(sys.argv[0]),'Twisted') != -1:
 
28
    sys.path.append(os.path.dirname(
 
29
        os.path.dirname(os.path.abspath(sys.argv[0]))))
 
30
sys.path.append('.')
 
31
### end of preamble
 
32
 
 
33
from twisted.python import usage
 
34
 
 
35
class MyOptions(usage.Options):
 
36
    optFlags = [["unsigned", "u"]]
 
37
    optStrings = [["tapfile", "t", "twistd.tap"],
 
38
                  ["maintainer", "m", ""],
 
39
                  ["protocol", "p", ""],
 
40
                  ["description", "e", ""],
 
41
                  ["long_description", "l", ""],
 
42
                  ["version", "v", "1.0"],
 
43
                  ["debfile", "d", None]]
 
44
try:
 
45
    config = MyOptions()
 
46
    config.parseOptions()
 
47
except usage.error, ue:
 
48
    sys.exit("%s: %s" % (sys.argv[0], ue))
 
49
 
 
50
def save_to_file(file, text):
 
51
    open(file, 'w').write(text)
 
52
 
 
53
tap_file = config.tapfile
 
54
protocol = config.protocol or os.path.splitext(tap_file)[0]
 
55
deb_file = config.debfile or 'twisted-'+protocol
 
56
version = config.version
 
57
maintainer = config.maintainer
 
58
description = config.description or ('A TCP server for %(protocol)s' % vars())
 
59
long_description = config.long_description or 'Automatically created by tap2deb'
 
60
date = string.strip(os.popen('822-date').read())
 
61
directory = deb_file + '-' + version
 
62
 
 
63
if os.path.exists(os.path.join('.build', directory)):
 
64
    os.system('rm -rf %s' % os.path.join('.build', directory))
 
65
os.makedirs(os.path.join('.build', directory, 'debian'))
 
66
 
 
67
shutil.copy(tap_file, os.path.join('.build', directory))
 
68
 
 
69
save_to_file(os.path.join('.build', directory, 'debian', 'README.Debian'), 
 
70
'''\
 
71
This package is auto-generated by tap2deb
 
72
''')
 
73
 
 
74
save_to_file(os.path.join('.build', directory, 'debian', 'conffiles'), 
 
75
'''\
 
76
/etc/init.d/%(deb_file)s
 
77
/etc/default/%(deb_file)s
 
78
/etc/%(tap_file)s
 
79
''' % vars())
 
80
 
 
81
save_to_file(os.path.join('.build', directory, 'debian', 'default'), 
 
82
'''\
 
83
pidfile=/var/run/%(deb_file)s.pid \
 
84
rundir=/var/lib/%(deb_file)s/ \
 
85
file=/etc/%(tap_file)s \
 
86
logfile=/var/log/%(deb_file)s.log
 
87
''' % vars())
 
88
 
 
89
save_to_file(os.path.join('.build', directory, 'debian', 'init.d'),
 
90
'''\
 
91
#!/bin/sh
 
92
 
 
93
PATH=/sbin:/bin:/usr/sbin:/usr/bin
 
94
 
 
95
pidfile=/var/run/%(deb_file)s.pid \
 
96
rundir=/var/lib/%(deb_file)s/ \
 
97
file=/etc/%(tap_file)s \
 
98
logfile=/var/log/%(deb_file)s.log
 
99
 
 
100
[ -r /etc/default/%(deb_file)s ] && . /etc/default/%(deb_file)s
 
101
 
 
102
test -x /usr/bin/twistd || exit 0
 
103
test -r $file || exit 0
 
104
 
 
105
 
 
106
case "$1" in
 
107
    start)
 
108
        echo -n "Starting %(deb_file)s: twistd"
 
109
        start-stop-daemon --start --quiet --exec /usr/bin/twistd -- \
 
110
                          --pidfile=$pidfile \
 
111
                          --rundir=$rundir \
 
112
                          --file=$file \
 
113
                          --logfile=$logfile \
 
114
                          --quiet
 
115
        echo "."        
 
116
    ;;
 
117
 
 
118
    stop)
 
119
        echo -n "Stopping %(deb_file)s: twistd"
 
120
        start-stop-daemon --stop --quiet  \
 
121
            --pidfile $pidfile
 
122
        echo "."        
 
123
    ;;
 
124
 
 
125
    restart)
 
126
        $0 stop
 
127
        $0 start
 
128
    ;;
 
129
    
 
130
    force-reload)
 
131
        $0 restart
 
132
    ;;
 
133
 
 
134
    *)
 
135
        echo "Usage: /etc/init.d/%(deb_file)s {start|stop|restart|force-reload}" >&2
 
136
        exit 1
 
137
    ;;
 
138
esac
 
139
 
 
140
exit 0
 
141
''' % vars())
 
142
 
 
143
os.chmod(os.path.join('.build', directory, 'debian', 'init.d'), 0755)
 
144
 
 
145
save_to_file(os.path.join('.build', directory, 'debian', 'postinst'),
 
146
'''\
 
147
#!/bin/sh
 
148
if [ "$1" = "configure" ]; then
 
149
        if [ -d /usr/doc -a ! -e /usr/doc/%(deb_file)s -a -d /usr/share/doc/%(deb_file)s ]; then
 
150
                ln -sf ../share/doc/%(deb_file)s /usr/doc/%(deb_file)s
 
151
        fi
 
152
fi
 
153
 
 
154
update-rc.d %(deb_file)s defaults >/dev/null
 
155
sh /etc/init.d/%(deb_file)s start
 
156
''' % vars())
 
157
 
 
158
save_to_file(os.path.join('.build', directory, 'debian', 'prerm'),
 
159
'''\
 
160
#!/bin/sh
 
161
if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/%(deb_file)s ]; then
 
162
        rm -f /usr/doc/%(deb_file)s
 
163
fi
 
164
sh /etc/init.d/%(deb_file)s stop
 
165
''' % vars())
 
166
 
 
167
save_to_file(os.path.join('.build', directory, 'debian', 'postrm'),
 
168
'''\
 
169
#!/bin/sh
 
170
if [ "$1" = purge ]; then
 
171
        update-rc.d %(deb_file)s remove >/dev/null
 
172
fi
 
173
''' % vars())
 
174
 
 
175
save_to_file(os.path.join('.build', directory, 'debian', 'changelog'),
 
176
'''\
 
177
%(deb_file)s (%(version)s) unstable; urgency=low
 
178
 
 
179
  * Created by tap2deb
 
180
 
 
181
 -- %(maintainer)s  %(date)s
 
182
 
 
183
Local variables:
 
184
mode: debian-changelog
 
185
End:
 
186
''' % vars())
 
187
 
 
188
save_to_file(os.path.join('.build', directory, 'debian', 'control'),
 
189
'''\
 
190
Source: %(deb_file)s
 
191
Section: net
 
192
Priority: extra
 
193
Maintainer: %(maintainer)s
 
194
Build-Depends: debhelper
 
195
Standards-Version: 3.5.6
 
196
 
 
197
Package: %(deb_file)s
 
198
Architecture: all
 
199
Depends: twisted
 
200
Description: %(description)s
 
201
 %(long_description)s
 
202
''' % vars())
 
203
 
 
204
save_to_file(os.path.join('.build', directory, 'debian', 'copyright'),
 
205
'''\
 
206
This package was auto-debianized by %(maintainer)s on
 
207
%(date)s
 
208
 
 
209
It was auto-generated by tap2deb
 
210
 
 
211
Upstream Author(s): 
 
212
Moshe Zadka <moshez@twistedmatrix.com> -- tap2deb author
 
213
 
 
214
Copyright:
 
215
 
 
216
tap2deb is released under the GNU Lesser Generl Public License,
 
217
and this package contains bits of code from tap2deb, and hence is
 
218
a derived work of tap2deb, and is under the GNU Lesser General
 
219
Public License too
 
220
''' % vars())
 
221
 
 
222
save_to_file(os.path.join('.build', directory, 'debian', 'dirs'),
 
223
'''\
 
224
etc/init.d
 
225
etc/default
 
226
var/lib/%(deb_file)s
 
227
usr/share/doc/%(deb_file)s
 
228
''' % vars())
 
229
 
 
230
save_to_file(os.path.join('.build', directory, 'debian', 'rules'),
 
231
'''\
 
232
#!/usr/bin/make -f
 
233
 
 
234
export DH_COMPAT=1
 
235
 
 
236
build: build-stamp
 
237
build-stamp:
 
238
        dh_testdir
 
239
        touch build-stamp
 
240
 
 
241
clean:
 
242
        dh_testdir
 
243
        dh_testroot
 
244
        rm -f build-stamp install-stamp
 
245
        dh_clean
 
246
 
 
247
install: install-stamp
 
248
install-stamp: build-stamp
 
249
        dh_testdir
 
250
        dh_testroot
 
251
        dh_clean -k
 
252
        dh_installdirs
 
253
 
 
254
        # Add here commands to install the package into debian/tmp.
 
255
        cp %(tap_file)s debian/tmp/etc/
 
256
        cp debian/init.d debian/tmp/etc/init.d/%(deb_file)s
 
257
        cp debian/default debian/tmp/etc/default/%(deb_file)s
 
258
        cp debian/copyright debian/tmp/usr/share/doc/%(deb_file)s/
 
259
        cp debian/README.Debian debian/tmp/usr/share/doc/%(deb_file)s/
 
260
        touch install-stamp
 
261
 
 
262
binary-arch: build install
 
263
 
 
264
binary-indep: build install
 
265
        dh_testdir
 
266
        dh_testroot
 
267
        dh_strip
 
268
        dh_compress
 
269
        dh_installchangelogs
 
270
        dh_fixperms
 
271
        dh_installdeb
 
272
        dh_shlibdeps
 
273
        dh_gencontrol
 
274
        dh_md5sums
 
275
        dh_builddeb
 
276
 
 
277
source diff:                                                                  
 
278
        @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
 
279
 
 
280
binary: binary-indep binary-arch
 
281
.PHONY: build clean binary-indep binary-arch binary install
 
282
''' % vars())
 
283
 
 
284
os.chmod(os.path.join('.build', directory, 'debian', 'rules'), 0755)
 
285
 
 
286
os.chdir('.build/%(directory)s' % vars())
 
287
os.system('dpkg-buildpackage -rfakeroot'+ ['', ' -uc -us'][config.unsigned])