]>
Commit | Line | Data |
---|---|---|
f6bcfd97 | 1 | #!/bin/bash |
4726eec6 RD |
2 | #---------------------------------------------------------------------- |
3 | # Build an RPM containing both wxGTK and wxPython | |
f6bcfd97 | 4 | |
59455c67 RD |
5 | ##set -o xtrace |
6 | ||
4726eec6 RD |
7 | spectemplate=distrib/wxPythonFull.spec.in |
8 | ||
9 | if [ ! -d wxPython -o ! -e ${spectemplate} ]; then | |
10 | echo "Please run this script from the root wxPython directory." | |
f6bcfd97 BP |
11 | exit 1 |
12 | fi | |
13 | ||
4726eec6 RD |
14 | |
15 | #---------------------------------------------------------------------- | |
16 | # Initialization | |
17 | ||
59455c67 | 18 | version=`python -c "import setup;print setup.VERSION"` |
1e4a197e RD |
19 | wxpdir=`pwd` |
20 | wxdir=${wxpdir}/.. | |
21 | distdir=${wxpdir}/dist | |
22 | builddir=${wxpdir}/_build_rpm | |
4726eec6 | 23 | rpmtop=${builddir}/rpmtop |
1e4a197e | 24 | cvsroot=:pserver:anoncvs@cvs.wxwindows.org:/pack/cvsroots/wxwindows |
4726eec6 RD |
25 | pythonbin=/usr/bin/python |
26 | port=GTK | |
27 | lcport=gtk | |
1e4a197e | 28 | unicode=0 |
357262e4 | 29 | tarname=wxPythonSrc |
1e4a197e | 30 | rpmflag=-ba |
4726eec6 RD |
31 | |
32 | #---------------------------------------------------------------------- | |
33 | # Check parameters | |
34 | ||
59455c67 RD |
35 | function usage { |
36 | echo "Usage: $0 py_version [command flags...]" | |
4726eec6 RD |
37 | echo " py_version String to append to $pythonbin (which python" |
38 | echo " version to use.)" | |
39 | echo "" | |
40 | echo "command flags:" | |
1e4a197e | 41 | echo " skipcopy Don't copy the files for the tarball from the workspace" |
4726eec6 RD |
42 | echo " skiptar Don't build the tarball" |
43 | echo " skiprpm Don't build the RPM (but why?)" | |
44 | echo " skipclean Don't do the cleanup at the end" | |
1e4a197e RD |
45 | echo " gtk2 Build using wxGTK2 and Unicode" |
46 | echo " x11 Build using wxX11" | |
4726eec6 | 47 | echo " speconly Do nothing but write the RPM spec file" |
1e4a197e RD |
48 | echo " srpm Only make the SRPM" |
49 | # echo " smp Add SMP=2 to the envivonment to speed wxGTK build" | |
4726eec6 RD |
50 | } |
51 | ||
978cadd0 | 52 | if [ $# -lt 1 ]; then |
59455c67 | 53 | usage |
4726eec6 RD |
54 | exit 1 |
55 | fi | |
56 | ||
59455c67 RD |
57 | pyver=$1 |
58 | shift | |
4726eec6 | 59 | |
b817523b | 60 | ver2=`echo ${version} | cut -c 1,2,3` |
357262e4 RD |
61 | tarver=${tarname}-${version} |
62 | ||
4726eec6 RD |
63 | python=${pythonbin}${pyver} |
64 | if [ ! -e ${python} ]; then | |
65 | echo "${python} not found!" | |
f6bcfd97 BP |
66 | exit 1 |
67 | fi | |
68 | ||
69 | ||
4726eec6 RD |
70 | function makespec { |
71 | echo "*** Writing ${distdir}/wxPython${port}.spec" | |
72 | cat ${spectemplate} \ | |
73 | | sed s:@PYTHON@:${python}:g \ | |
74 | | sed s:@PYVER@:${pyver}:g \ | |
4726eec6 RD |
75 | | sed s:@PORT@:${port}:g \ |
76 | | sed s:@LCPORT@:${lcport}:g \ | |
77 | | sed s:@TARNAME@:${tarname}:g \ | |
357262e4 | 78 | | sed s:@VERSION@:${version}:g \ |
b817523b | 79 | | sed s:@VER2@:${ver2}:g \ |
1e4a197e | 80 | | sed s:@UNICODE@:${unicode}:g \ |
4726eec6 RD |
81 | > ${distdir}/wxPython${port}.spec |
82 | } | |
83 | ||
84 | ||
85 | ||
86 | for flag in $*; do | |
87 | case ${flag} in | |
1e4a197e RD |
88 | skipcopy) skipcopy=1 ;; |
89 | skipclean) skipclean=1 ;; | |
90 | skiptar) skiptar=1 ;; | |
91 | skiprpm) skiprpm=1 ;; | |
92 | gtk2) unicode=1; port=GTK2; lcport=gtk2 ;; | |
93 | x11) port=X11; lcport=x11 ;; | |
94 | smp) export SMP=2 ;; | |
95 | speconly) makespec; exit 0 ;; | |
96 | srpm) rpmflag=-bs; ;; | |
4726eec6 RD |
97 | |
98 | *) echo "Unknown flag \"${flag}\"" | |
59455c67 | 99 | usage |
4726eec6 RD |
100 | exit 1 |
101 | esac | |
102 | done | |
103 | ||
f6bcfd97 | 104 | |
4726eec6 RD |
105 | #---------------------------------------------------------------------- |
106 | # Setup build dirs | |
107 | ||
108 | echo "*** Setting up" | |
109 | ||
110 | if [ ! -d ${builddir} ]; then | |
111 | mkdir -p ${builddir} | |
112 | fi | |
113 | ||
114 | if [ ! -d ${distdir} ]; then | |
115 | mkdir -p ${distdir} | |
116 | fi | |
117 | ||
118 | for dir in SOURCES SPECS BUILD RPMS SRPMS; do | |
119 | if [ ! -d ${rpmtop}/${dir} ]; then | |
120 | mkdir -p ${rpmtop}/${dir} | |
121 | fi | |
122 | done | |
123 | ||
124 | ||
125 | #---------------------------------------------------------------------- | |
1e4a197e | 126 | # Copy the sources from my CVS workspace |
4726eec6 | 127 | |
59455c67 RD |
128 | function cleanup { |
129 | RMFILES=`find . -name "$1"` | |
130 | if [ "$RMFILES" != "" ]; then | |
131 | rm -rf $RMFILES | |
132 | fi | |
133 | } | |
134 | ||
135 | ||
1e4a197e RD |
136 | if [ -z "${skipcopy}" ]; then |
137 | echo "*** Copying CVS tree" | |
4726eec6 RD |
138 | pushd ${builddir} > /dev/null |
139 | if [ -e ${tarver} ]; then | |
1e4a197e | 140 | rm -rf ${tarver} |
4726eec6 | 141 | fi |
1e4a197e RD |
142 | mkdir -p ${tarver} |
143 | ||
144 | # copy root dir contents | |
145 | cp -pf --link ${wxdir}/* ${tarver} > /dev/null 2>&1 | |
4726eec6 | 146 | |
1e4a197e | 147 | # copy all top dirs except CVS, build, demos, utils, samples, and wxPython |
59455c67 | 148 | for d in art build contrib debian distrib docs include lib locale misc patches src; do |
1fded56b RD |
149 | if [ -e ${wxdir}/$d ]; then |
150 | cp -Rpf --link ${wxdir}/$d ${tarver} #> /dev/null 2>&1 | |
151 | fi | |
1e4a197e RD |
152 | done |
153 | ||
154 | # now do the same thing for wxPython, skipping it's build dirs and such | |
6e83b721 RD |
155 | for dir in `grep -v '#' ${wxdir}/wxPython/distrib/DIRLIST`; do |
156 | mkdir ${tarver}/${dir} | |
157 | ##echo "cp -pf --link ${wxdir}/${dir}/* ${tarver}/${dir}" | |
158 | cp -pf --link ${wxdir}/${dir}/* ${tarver}/${dir} > /dev/null 2>&1 | |
1e4a197e RD |
159 | done |
160 | ||
1e4a197e | 161 | echo "*** Removing uneeded stuff from copy of CVS tree" |
4726eec6 | 162 | pushd ${tarver} > /dev/null |
59455c67 RD |
163 | cleanup .cvsignore |
164 | cleanup CVS | |
165 | cleanup CVSROOT | |
166 | rm BuildCVS.txt | |
4726eec6 | 167 | rm *.spec |
b817523b RD |
168 | rm -rf docs/html |
169 | rm -rf docs/latex | |
1e4a197e RD |
170 | rm -rf contrib/docs |
171 | rm -rf contrib/samples | |
172 | rm locale/*.mo | |
59455c67 RD |
173 | cleanup ".#*" |
174 | cleanup "*~" | |
1ab1deab RD |
175 | cleanup "*.orig" |
176 | cleanup "*.rej" | |
59455c67 RD |
177 | cleanup "*.pyc" |
178 | cleanup core | |
179 | cleanup "core.[0-9]*" | |
1e4a197e | 180 | |
59455c67 | 181 | rm -f wxPython/wx/* > /dev/null 2>&1 |
4726eec6 RD |
182 | |
183 | popd > /dev/null | |
184 | popd > /dev/null | |
185 | fi | |
186 | ||
187 | ||
188 | #---------------------------------------------------------------------- | |
357262e4 RD |
189 | # Make the spec file and copy to ${builddir}/${tarver} so it will be |
190 | # in the tar file when it's built | |
4726eec6 | 191 | |
73c7ae5a RD |
192 | # TODO? Output all combinations of spec files to put in the tar file?? |
193 | ||
357262e4 RD |
194 | makespec |
195 | cp ${distdir}/wxPython${port}.spec ${builddir}/${tarver}/wxPython${port}.spec | |
4726eec6 RD |
196 | |
197 | ||
198 | #---------------------------------------------------------------------- | |
199 | # Build the tar file | |
200 | ||
201 | if [ -z "${skiptar}" ]; then | |
1e4a197e RD |
202 | echo "*** Creating language catalogs..." |
203 | pushd ${builddir}/${tarver}/locale > /dev/null | |
204 | make allmo | |
205 | popd > /dev/null | |
206 | ||
4726eec6 | 207 | echo "*** Creating tarball..." |
1e4a197e | 208 | cp distrib/README.1st.txt ${builddir}/${tarver} |
4726eec6 RD |
209 | pushd ${builddir} > /dev/null |
210 | tar cvf ${distdir}/${tarver}.tar ${tarver} > /dev/null | |
1e4a197e | 211 | |
4726eec6 RD |
212 | echo "*** Compressing..." |
213 | if [ -e ${distdir}/${tarver}.tar.gz ]; then | |
214 | rm ${distdir}/${tarver}.tar.gz | |
215 | fi | |
216 | gzip --best ${distdir}/${tarver}.tar | |
217 | popd > /dev/null | |
218 | fi | |
219 | ||
220 | ||
221 | #---------------------------------------------------------------------- | |
222 | # build the RPM | |
223 | ||
224 | if [ -z "${skiprpm}" ]; then | |
225 | echo "*** Building RPMs..." | |
226 | cp ${distdir}/${tarver}.tar.gz ${rpmtop}/SOURCES | |
1e4a197e | 227 | rpmbuild ${rpmflag} \ |
4726eec6 RD |
228 | --define "_topdir ${rpmtop}" \ |
229 | --define "_tmppath ${builddir}" \ | |
230 | ${distdir}/wxPython${port}.spec | |
231 | if [ "$?" != "0" ]; then | |
232 | echo "*** RPM failure, exiting." | |
233 | exit 1 | |
234 | else | |
357262e4 | 235 | echo "*** Moving RPMs to ${distdir}" |
4726eec6 RD |
236 | mv -f `find ${rpmtop} -name "wxPython*.rpm"` ${distdir} |
237 | fi | |
238 | fi | |
239 | ||
240 | #---------------------------------------------------------------------- | |
241 | # Cleanup | |
242 | ||
243 | if [ -z ${skipclean} ]; then | |
244 | echo "*** Cleaning up" | |
245 | rm -rf ${rpmtop} | |
246 | rm -rf ${builddir} | |
247 | fi | |
f6bcfd97 BP |
248 | |
249 | ||
250 |