]> git.saurik.com Git - wxWidgets.git/blob - wxPython/distrib/wxPythonFull.spec.in
Only Freeze/Thaw on wxMSW. The other ports don't need it.
[wxWidgets.git] / wxPython / distrib / wxPythonFull.spec.in
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