File: make_rpm.py

package info (click to toggle)
svn-workbench 1.5.0-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 2,400 kB
  • ctags: 1,585
  • sloc: python: 12,163; sh: 74; makefile: 46; ansic: 9
file content (125 lines) | stat: -rw-r--r-- 4,265 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#
#	make_rpm.py
#
import os

print 'Info: setup_version_handling.py'
import sys
import glob
import pysvn
import time
sys.path.append( '../../Source' )
import wb_version

wb_version_string = '%d.%d.%d-%d' % (wb_version.major, wb_version.minor, wb_version.patch, wb_version.build)
wb_version_package_release_string = '%d' % wb_version.build
wb_version_package_string = '%d.%d.%d' % (wb_version.major, wb_version.minor, wb_version.patch)
svn_version_string = '%d.%d.%d' % (pysvn.svn_version[0], pysvn.svn_version[1], pysvn.svn_version[2])
svn_compact_version_string = '%d%d%d' % (pysvn.svn_version[0], pysvn.svn_version[1], pysvn.svn_version[2])

build_time  = time.time()
build_time_str = time.strftime( '%d-%b-%Y %H:%M', time.localtime( build_time ) )

tmpdir = os.path.join( os.getcwd(), 'tmp' )
if os.path.exists( tmpdir ):
	print 'Info: Clean up tmp directory'
	os.system( 'rm -rf tmp' )

print 'Info: Create directories'

for kit_dir in [
	tmpdir,
	os.path.join( tmpdir, 'ROOT' ),
	os.path.join( tmpdir, 'BUILD' ),
	os.path.join( tmpdir, 'SPECS' ),
	os.path.join( tmpdir, 'RPMS' ),
	os.path.join( tmpdir, 'ROOT/usr' ),
	os.path.join( tmpdir, 'ROOT/usr/local' ),
	os.path.join( tmpdir, 'ROOT/usr/local/bin' ),
	os.path.join( tmpdir, 'ROOT/usr/local/workbench' ),
	os.path.join( tmpdir, 'ROOT/usr/local/workbench/support' ),
	os.path.join( tmpdir, 'ROOT/usr/local/workbench/WorkBench_files' ),
	]:
	if not os.path.exists( kit_dir ):
		os.makedirs( kit_dir )


print 'Info: Copy files'
for cp_src, cp_dst_dir_fmt in [
	('../../Source/bin/wb',
		'ROOT/usr/local/workbench'),
	('../../Source/bin/support/*',
		'ROOT/usr/local/workbench/support'),
	('../../Docs/WorkBench.html',
		'ROOT/usr/local/workbench'),
	('../../Docs/WorkBench_files/*.png',
		'ROOT/usr/local/workbench/WorkBench_files'),
	]:
	print 'Info:  cp %s' % cp_src
	os.system( 'cp -f %s tmp/%s' % (cp_src, cp_dst_dir_fmt % locals()) )

os.system( 'gzip tmp/ROOT/usr/local/workbench/support/libdb-4.3.so' )

print 'Info: Create tmp/SPECS/workbench.spec'
f = file('tmp/SPECS/workbench.spec','w')
f.write('''BuildRoot:	%(tmpdir)s/ROOT
Name:		pysvn_workbench_svn%(svn_compact_version_string)s
Version:	%(wb_version_package_string)s
Group:		Development/Libraries
Release:	%(wb_version_package_release_string)s
Summary:	pysvn WorkBench %(wb_version_string)s for Subversion %(svn_version_string)s
License:	Apache Software License, Version 1.1 - Copyright Barry A. Scott (c) 2003-2006
Packager:	Barry A. Scott <barry@barrys-emacs.org>
AutoReqProv:	no
Requires:	libsvn_client-1.so.0
%%description
PySVN WorkBench %(wb_version_string)s for Subversion %(svn_version_string)s

Copyright Barry A. Scott (c) 2003-2006

mailto:barry@barrys-emacs.org
http://pysvn.tigris.org

     Barry Scott

%%define __spec_install_post %%{nil}
%%prep
%%build
%%install
%%post
rm -f /usr/local/bin/workbench
ln -f -s /usr/local/workbench/wb /usr/local/bin/workbench
gzip -d -c </usr/local/workbench/support/libdb-4.3.so.gz >/usr/local/workbench/support/libdb-4.3.so

mkdir -p /usr/local/share/workbench
ln -f -s /usr/local/workbench/WorkBench.html /usr/local/share/workbench
%%postun
# check the arg to find out if this is an update or a delete
# 0 - delete, 1 - update
if [ $1 = 0 ]
then
    rm -f /usr/local/bin/workbench
    rm -rf /usr/local/share/workbench
    rm -f /usr/local/workbench/support/libdb-4.3.so
fi
%%files
%%defattr (-,root,root)
%%attr(555,root,root) /usr/local/workbench/wb
%%attr(444,root,root) /usr/local/workbench/WorkBench.html
''' % locals() )

for name in glob.glob('tmp/ROOT/usr/local/workbench/support/*'):
	f.write( '%%attr(444,root,root) /usr/local/workbench/support/%s\n' % os.path.basename( name ) )

for name in glob.glob('tmp/ROOT/usr/local/workbench/WorkBench_files/*'):
	f.write( '%%attr(444,root,root) /usr/local/workbench/WorkBench_files/%s\n' % os.path.basename( name ) )
f.close()

print 'Info: Create rpmrc'
os.system('grep ^macrofiles: /usr/lib/rpm/rpmrc |sed -e s!~/.rpmmacros!%(tmpdir)s/rpmmacros! >%(tmpdir)s/rpmrc' % locals() )
print 'Info: Create rpmmacros'
f = file( 'tmp/rpmmacros', 'w' )
f.write( '%%_topdir %(tmpdir)s' % locals() )
f.close()
print 'Info: rpmbuild'
os.system( 'rpmbuild --rcfile=/usr/lib/rpm/rpmrc:%(tmpdir)s/rpmrc -bb %(tmpdir)s/SPECS/workbench.spec' % locals() )