]>
Commit | Line | Data |
---|---|---|
1 | #---------------------------------------------------------------------- | |
2 | # Name: wxPython.spec | |
3 | # Purpose: RPM Build and packaging instructions | |
4 | # | |
5 | # Author: Robin Dunn | |
6 | # | |
7 | # RCS-ID: $Id$ | |
8 | # Copyright: (c) 2004 by Total Control Software | |
9 | # Licence: wxWindows license | |
10 | #---------------------------------------------------------------------- | |
11 | ||
12 | ||
13 | # The following values can be set on the rpmbuild command line with | |
14 | # --define 'name VALUE' If no value is set on the command line then | |
15 | # the default value set here will be used instead. | |
16 | ||
17 | ||
18 | # Which version of Python to build with. Used to assemble python | |
19 | # binary name so use '2.3', '2.4', etc. | |
20 | %if %{?pyver:0}%{!?pyver:1} | |
21 | %define pyver 2.4 | |
22 | %endif | |
23 | ||
24 | ||
25 | # Which wxWidgets port to build and use. Current acceptable values | |
26 | # are 'gtk' and 'gtk2'. | |
27 | %if %{?port:0}%{!?port:1} | |
28 | %define port gtk2 | |
29 | %endif | |
30 | ||
31 | ||
32 | # Build in unicode mode? Can only be used if port is gtk2, acceptable | |
33 | # values are '0' and '1' | |
34 | %if %{?unicode:0}%{!?unicode:1} | |
35 | %define unicode 1 | |
36 | %endif | |
37 | ||
38 | ||
39 | # Should the builtin image and etc. libs be used, or system libs? | |
40 | # Distro specific RPMs should probably set this to 0, generic ones | |
41 | # should use 1. | |
42 | # NOTE: I'm trying 0 for this next release to see if I can get rid of | |
43 | # this... | |
44 | %if %{?builtin_libs:0}%{!?builtin_libs:1} | |
45 | %define builtin_libs 0 | |
46 | %endif | |
47 | ||
48 | ||
49 | # Should --enable-debug_flag be used in release builds? Using it | |
50 | # defines __WXDEBUG__ and gives us runtime diagnostics that are turned | |
51 | # into Python exceptions. (So turning it on is a very helpful thing | |
52 | # IMO and is recommended.) The code is still compiled with | |
53 | # optimization flags and and without debug info and such when this | |
54 | # option is used, it simply turns on some extra code. | |
55 | %if %{?debug_flag:0}%{!?debug_flag:1} | |
56 | %define debug_flag 1 | |
57 | %endif | |
58 | ||
59 | ||
60 | # Used to set the Release tag below. I normally use it to define what | |
61 | # distro the RPM was build on and also include the version of Python | |
62 | # it was built with. | |
63 | %if %{?release:0}%{!?release:1} | |
64 | %define release 1_py%{pyver} | |
65 | %endif | |
66 | ||
67 | ||
68 | ||
69 | #---------------------------------------------------------------------- | |
70 | # Other variables used below | |
71 | ||
72 | %define pref %{_prefix} | |
73 | %define python /usr/bin/python%{pyver} | |
74 | %define tarname @TARNAME@ | |
75 | %define version @VERSION@ | |
76 | %define ver2 @VER2@ | |
77 | ||
78 | %define chartype %(if [ "%{unicode}" = "1" ]; then echo unicode; else echo ansi; fi) | |
79 | %define gtktype %(if [ "%{port}" = "gtk2" ]; then echo 2; fi) | |
80 | %define using_gtk1 %(if [ "%{port}" = "gtk" ]; then echo 1; else echo 0; fi) | |
81 | ||
82 | %define wxprefbase %{pref}/lib/wxPython | |
83 | %define wxpref %{wxprefbase}-%{version}-%{port}-%{chartype} | |
84 | %define pkgname wxPython | |
85 | ||
86 | # turn off the generation of debuginfo rpm (RH9) ?? | |
87 | %define debug_package %{nil} | |
88 | ||
89 | ||
90 | #---------------------------------------------------------------------- | |
91 | # Package definition | |
92 | #---------------------------------------------------------------------- | |
93 | Name: %{pkgname}%{ver2} | |
94 | Summary: Cross platform GUI toolkit for Python | |
95 | Version: %{version} | |
96 | Release: %{release} | |
97 | Source0: %{tarname}-%{version}.tar.gz | |
98 | License: wx Library Licence, Version 3 | |
99 | URL: http://wxPython.org/ | |
100 | Packager: Robin Dunn <robin@alldunn.com> | |
101 | Group: Development/Python | |
102 | BuildRoot: %{_tmppath}/%{pkgname}-buildroot | |
103 | Prefix: %{pref} | |
104 | ||
105 | %description | |
106 | Cross platform GUI toolkit for Python | |
107 | ||
108 | ||
109 | ||
110 | ||
111 | %package -n %{pkgname}%{ver2}-%{port}-%{chartype} | |
112 | Summary: Cross platform GUI toolkit for Python | |
113 | Group: Development/Python | |
114 | Requires: %{pkgname}-common | |
115 | Obsoletes: wxPythonGTK%{gtktype}-py%{pyver}, wxPythonGTK%{gtktype} | |
116 | Provides: wxPython | |
117 | ||
118 | ||
119 | %description -n %{pkgname}%{ver2}-%{port}-%{chartype} | |
120 | wxPython is a GUI toolkit for the Python programming language. It | |
121 | allows Python programmers to create programs with a robust, highly | |
122 | functional graphical user interface, simply and easily. It is | |
123 | implemented as a Python extension module (native code) that wraps the | |
124 | popular wxWidgets cross platform GUI library, which is written in C++. | |
125 | ||
126 | wxPython is a cross-platform toolkit. The same program will usually | |
127 | run on multiple platforms without modification. Currently supported | |
128 | platforms are 32-bit Microsoft Windows, most Unix or unix-like | |
129 | systems, and Macintosh OS X. | |
130 | ||
131 | This package contains the wxPython runtime files built for the | |
132 | wxWidgets %{port} port with %{chartype} character type. | |
133 | ||
134 | ||
135 | ||
136 | ||
137 | ||
138 | %package -n %{pkgname}-common-%{port}-%{chartype} | |
139 | Summary: Common files for needed by all wxPython runtimes | |
140 | Group: Development/Python | |
141 | Provides: %{pkgname}-common | |
142 | ||
143 | # They obsolete each other so any of them can be installed over another | |
144 | # without conflicts | |
145 | Obsoletes: %{pkgname}-common-gtk-ansi | |
146 | Obsoletes: %{pkgname}-common-gtk2-ansi | |
147 | Obsoletes: %{pkgname}-common-gtk2-unicode | |
148 | ||
149 | %description -n %{pkgname}-common-%{port}-%{chartype} | |
150 | This package contains the common files needed by any version of the | |
151 | wxPython runtime. This pacakge also installs a wx.pth file which will | |
152 | determine which of the installed runtimes is the default version of | |
153 | wxPython that is imported automatically with a bare "import wx". | |
154 | ||
155 | ||
156 | ||
157 | ||
158 | ||
159 | %package -n %{pkgname}%{ver2}-devel-%{port}-%{chartype} | |
160 | Summary: wxPython development files | |
161 | Group: Development/Libraries | |
162 | Requires: %{pkgname}%{ver2}-%{port}-%{chartype} = %{version} | |
163 | ||
164 | %description -n %{pkgname}%{ver2}-devel-%{port}-%{chartype} | |
165 | This packages contains the headers and etc. for building apps or | |
166 | Python extension modules that use the same wxWidgets shared libraries | |
167 | that wxPython uses. | |
168 | ||
169 | ||
170 | ||
171 | #---------------------------------------------------------------------- | |
172 | %prep | |
173 | %setup -q -n %{tarname}-%{version} | |
174 | ||
175 | ||
176 | #---------------------------------------------------------------------- | |
177 | %build | |
178 | ||
179 | WXDIR=`pwd` | |
180 | ||
181 | # Configure and build wxWidgets | |
182 | mkdir bld | |
183 | cd bld | |
184 | ../configure \ | |
185 | %if %{using_gtk1} | |
186 | --with-gtk=1 \ | |
187 | %else | |
188 | --with-gtk=2 \ | |
189 | %endif | |
190 | --prefix=%{wxpref} \ | |
191 | --enable-monolithic \ | |
192 | --disable-rpath \ | |
193 | --with-opengl \ | |
194 | --with-gnomeprint \ | |
195 | --enable-geometry \ | |
196 | --enable-optimise \ | |
197 | --enable-sound --with-sdl \ | |
198 | --enable-display \ | |
199 | %if %{unicode} | |
200 | --enable-unicode \ | |
201 | %else | |
202 | --disable-unicode \ | |
203 | %endif | |
204 | %if %{debug_flag} | |
205 | --enable-debug_flag \ | |
206 | %endif | |
207 | --disable-debugreport \ | |
208 | %if %{builtin_libs} | |
209 | --with-libjpeg=builtin \ | |
210 | --with-libpng=builtin \ | |
211 | --with-libtiff=builtin \ | |
212 | --with-zlib=builtin \ | |
213 | %endif | |
214 | ||
215 | ||
216 | make | |
217 | make -C contrib/src/animate | |
218 | make -C contrib/src/gizmos | |
219 | make -C contrib/src/stc | |
220 | ||
221 | ||
222 | ||
223 | # Build wxPython | |
224 | cd $WXDIR/wxPython | |
225 | %{python} setup.py \ | |
226 | WXPORT=%{port} \ | |
227 | UNICODE=%{unicode} \ | |
228 | EP_ADD_OPTS=1 \ | |
229 | NO_SCRIPTS=1 \ | |
230 | WX_CONFIG="$WXDIR/bld/wx-config --no_rpath" \ | |
231 | build_ext --rpath=%{wxpref}/lib \ | |
232 | build | |
233 | ||
234 | ||
235 | ||
236 | #---------------------------------------------------------------------- | |
237 | %install | |
238 | ||
239 | WXDIR=`pwd` | |
240 | ||
241 | # Install wxGTK and contribs | |
242 | cd bld | |
243 | make prefix=$RPM_BUILD_ROOT%{wxpref} install | |
244 | make -C contrib/src/animate prefix=$RPM_BUILD_ROOT%{wxpref} install | |
245 | make -C contrib/src/gizmos prefix=$RPM_BUILD_ROOT%{wxpref} install | |
246 | make -C contrib/src/stc prefix=$RPM_BUILD_ROOT%{wxpref} install | |
247 | ||
248 | ||
249 | ||
250 | # Install wxPython for wxGTK | |
251 | cd $WXDIR/wxPython | |
252 | %{python} setup.py \ | |
253 | WXPORT=%{port} \ | |
254 | UNICODE=%{unicode} \ | |
255 | EP_ADD_OPTS=1 \ | |
256 | NO_SCRIPTS=1 \ | |
257 | WX_CONFIG="$RPM_BUILD_ROOT%{wxpref}/bin/wx-config --prefix=$RPM_BUILD_ROOT%{wxpref} --no_rpath" \ | |
258 | build_ext --rpath=%{wxpref}/lib \ | |
259 | install \ | |
260 | --root=$RPM_BUILD_ROOT | |
261 | ||
262 | ||
263 | # remove the wx-config symlink, we'll redo it when installing the -devel package | |
264 | rm $RPM_BUILD_ROOT%{wxpref}/bin/wx-config | |
265 | ||
266 | # make sure that debug info is stripped | |
267 | strip $RPM_BUILD_ROOT%{pref}/lib*/python%{pyver}/site-packages/wx-%{ver2}*-%{port}-%{chartype}/wx/*.so | |
268 | ||
269 | ||
270 | # Since I want this RPM to be as generic as possible I won't let | |
271 | # distutils copy the scripts (NO_SCRIPTS=1 above) since it will mangle | |
272 | # the #! line to use the real python pathname. Since some distros | |
273 | # install python 2.2 as python2 and others as python I can't let | |
274 | # distutils do that otherwise the dependencies will be fouled up. | |
275 | # Copy them manually instead, leaving the #!/usr/bin/env line intact. | |
276 | cd $WXDIR/wxPython | |
277 | mkdir -p $RPM_BUILD_ROOT%{pref}/bin | |
278 | for s in \ | |
279 | helpviewer \ | |
280 | img2png \ | |
281 | img2py \ | |
282 | img2xpm \ | |
283 | pyalacarte \ | |
284 | pyalamode \ | |
285 | pycrust \ | |
286 | pywrap \ | |
287 | pyshell \ | |
288 | pywxrc \ | |
289 | xrced; do | |
290 | cp scripts/$s $RPM_BUILD_ROOT%{pref}/bin | |
291 | done | |
292 | ||
293 | ||
294 | ||
295 | # install KDE & GNOME menu items | |
296 | mkdir -p $RPM_BUILD_ROOT%{_datadir}/applnk/Development | |
297 | mkdir -p $RPM_BUILD_ROOT%{_datadir}/applications | |
298 | for d in distrib/*.desktop; do | |
299 | install -m 644 $d $RPM_BUILD_ROOT%{_datadir}/applnk/Development | |
300 | install -m 644 $d $RPM_BUILD_ROOT%{_datadir}/applications | |
301 | done | |
302 | ||
303 | # install KDE icons | |
304 | mkdir -p $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/{16x16,32x32}/apps | |
305 | mkdir -p $RPM_BUILD_ROOT%{_datadir}/pixmaps | |
306 | install -m 644 wx/py/PyCrust_16.png $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/16x16/apps/PyCrust.png | |
307 | install -m 644 wx/py/PyCrust_32.png $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/32x32/apps/PyCrust.png | |
308 | install -m 644 wx/py/PyCrust_32.png $RPM_BUILD_ROOT%{_datadir}/pixmaps/PyCrust.png | |
309 | install -m 644 wx/tools/XRCed/XRCed_16.png $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/16x16/apps/XRCed.png | |
310 | install -m 644 wx/tools/XRCed/XRCed_32.png $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/32x32/apps/XRCed.png | |
311 | install -m 644 wx/tools/XRCed/XRCed_32.png $RPM_BUILD_ROOT%{_datadir}/pixmaps/XRCed.png | |
312 | ||
313 | # install Mandrake menu items | |
314 | mkdir -p $RPM_BUILD_ROOT%{_libdir}/menu | |
315 | cat > $RPM_BUILD_ROOT%{_libdir}/menu/%{pkgname} <<EOF | |
316 | ?package(%{pkgname}): \\ | |
317 | command="%{_bindir}/pyshell" \\ | |
318 | needs="X11" \\ | |
319 | icon="PyCrust.png" \\ | |
320 | section="Applications/Development/Tools" \\ | |
321 | title="PyShell" \\ | |
322 | longtitle="GUI Python Shell" | |
323 | ?package(%{pkgname}): \\ | |
324 | command="%{_bindir}/pycrust" \\ | |
325 | needs="X11" \\ | |
326 | icon="PyCrust.png" \\ | |
327 | section="Applications/Development/Tools" \\ | |
328 | title="PyCrust" \\ | |
329 | longtitle="GUI Python Shell with Filling" | |
330 | ?package(%{pkgname}): \\ | |
331 | command="%{_bindir}/pyalamode" \\ | |
332 | needs="X11" \\ | |
333 | icon="PyCrust.png" \\ | |
334 | section="Applications/Development/Tools" \\ | |
335 | title="PyAlaMode" \\ | |
336 | longtitle="GUI Python Shell with Filling and editor windows" | |
337 | ?package(%{pkgname}): \\ | |
338 | command="%{_bindir}/xrced" \\ | |
339 | needs="X11" \\ | |
340 | icon="XRCed.png" \\ | |
341 | section="Applications/Development/Tools" \\ | |
342 | title="XRCed" \\ | |
343 | longtitle="wxPython XRC resource editor" | |
344 | EOF | |
345 | ||
346 | ||
347 | #---------------------------------------------------------------------- | |
348 | ||
349 | %post -n %{pkgname}%{ver2}-%{port}-%{chartype} | |
350 | if [ ! -e %{wxprefbase} ]; then | |
351 | ln -s %{pkgname}-%{version}-%{port}-%{chartype} %{wxprefbase} | |
352 | fi | |
353 | ||
354 | %preun -n %{pkgname}%{ver2}-%{port}-%{chartype} | |
355 | if [ -L %{wxprefbase} ]; then | |
356 | if [ `readlink %{wxprefbase}` == %{pkgname}-%{version}-%{port}-%{chartype} ]; then | |
357 | rm -f %{wxprefbase} | |
358 | fi | |
359 | fi | |
360 | ||
361 | ||
362 | ||
363 | ||
364 | %post -n %{pkgname}-common-%{port}-%{chartype} | |
365 | # This is done on Mandrake to update its menus: | |
366 | if [ -x /usr/bin/update-menus ]; then /usr/bin/update-menus || true ; fi | |
367 | ||
368 | %postun -n %{pkgname}-common-%{port}-%{chartype} | |
369 | # This is done on Mandrake to update its menus: | |
370 | if [ "$1" = "0" -a -x /usr/bin/update-menus ]; then /usr/bin/update-menus || true ; fi | |
371 | ||
372 | ||
373 | ||
374 | %post -n %{pkgname}%{ver2}-devel-%{port}-%{chartype} | |
375 | cd %{wxpref}/bin | |
376 | ln -s ../lib/wx/config/%{port}-%{chartype}* wx-config | |
377 | ||
378 | %preun -n %{pkgname}%{ver2}-devel-%{port}-%{chartype} | |
379 | rm %{wxpref}/bin/wx-config | |
380 | ||
381 | ||
382 | #---------------------------------------------------------------------- | |
383 | %clean | |
384 | [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT | |
385 | ||
386 | ||
387 | #---------------------------------------------------------------------- | |
388 | ||
389 | %files -n %{pkgname}%{ver2}-%{port}-%{chartype} | |
390 | %defattr(-,root,root) | |
391 | %doc docs/preamble.txt docs/licence.txt docs/lgpl.txt docs/readme.txt docs/changes.txt | |
392 | %doc wxPython/docs/* | |
393 | %dir %{pref}/lib*/python%{pyver}/site-packages/wx-%{ver2}*-%{port}-%{chartype} | |
394 | %{pref}/lib*/python%{pyver}/site-packages/wx-%{ver2}*-%{port}-%{chartype}/* | |
395 | %dir %{wxpref} | |
396 | %dir %{wxpref}/lib | |
397 | %{wxpref}/lib/libwx_gtk* | |
398 | %{wxpref}/share | |
399 | ||
400 | ||
401 | ||
402 | %files -n %{pkgname}-common-%{port}-%{chartype} | |
403 | %defattr(-,root,root) | |
404 | %{pref}/lib*/python%{pyver}/site-packages/wxversion.* | |
405 | %{pref}/lib*/python%{pyver}/site-packages/wx.pth | |
406 | %{_bindir}/* | |
407 | %{_datadir}/applnk/Development/* | |
408 | %{_datadir}/applications/* | |
409 | %{_datadir}/icons/hicolor/*/apps/* | |
410 | %{_datadir}/pixmaps/* | |
411 | %{_libdir}/menu/* | |
412 | ||
413 | ||
414 | ||
415 | ||
416 | ||
417 | %files -n %{pkgname}%{ver2}-devel-%{port}-%{chartype} | |
418 | %defattr(-,root,root) | |
419 | %{wxpref}/include | |
420 | %{wxpref}/lib/wx | |
421 | %dir %{wxpref}/bin | |
422 | ||
423 | ||
424 | #---------------------------------------------------------------------- | |
425 | # end of file |