]> git.saurik.com Git - wxWidgets.git/blob - wxPython/distrib/wxPythonFull.spec.in
wxMemoryDC constructor now optionally accepts a wxBitmap parameter,
[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 built 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 # This one is used to control whether the full 4 components of the
69 # verseion number are used in the site-packages subdirectory name. By
70 # default only 2 or 3 components (depending on stable/unstable status)
71 # are used.
72 %if %{?fullver:0}%{!?fullver:1}
73 %define fullver 0
74 %endif
75
76
77 # Whether to add --enable-mediactrl to the wxWidgets configure. For
78 # some older versions of gstreamer-0.8 it currently incorerctly allows
79 # its use eventhough there is a compatibility problem that causes a
80 # failed compile.
81 %if %{?mediactrl:0}%{!?mediactrl:1}
82 %define mediactrl 1
83 %endif
84
85
86 #----------------------------------------------------------------------
87 # Other variables used below
88
89 %define pref %{_prefix}
90 %define python /usr/bin/python%{pyver}
91 %define tarname @TARNAME@
92 %define version @VERSION@
93 %define ver2 @VER2@
94
95 %define chartype %(if [ "%{unicode}" = "1" ]; then echo unicode; else echo ansi; fi)
96 %define gtktype %(if [ "%{port}" = "gtk2" ]; then echo 2; fi)
97 %define using_gtk1 %(if [ "%{port}" = "gtk" ]; then echo 1; else echo 0; fi)
98
99 %define wxprefbase %{pref}/lib/wxPython
100 %define wxpref %{wxprefbase}-%{version}-%{port}-%{chartype}
101 %define pkgname wxPython
102
103 # turn off the generation of debuginfo rpm (RH9) ??
104 %define debug_package %{nil}
105
106
107 #----------------------------------------------------------------------
108 # Package definition
109 #----------------------------------------------------------------------
110 Name: %{pkgname}%{ver2}
111 Summary: Cross platform GUI toolkit for Python
112 Version: %{version}
113 Release: %{release}
114 Source0: %{tarname}-%{version}.tar.bz2
115 License: wx Library Licence, Version 3
116 URL: http://wxPython.org/
117 Packager: Robin Dunn <robin@alldunn.com>
118 Group: Development/Python
119 BuildRoot: %{_tmppath}/%{pkgname}-buildroot
120 Prefix: %{pref}
121
122 %description
123 Cross platform GUI toolkit for Python
124
125
126
127
128 %package -n %{pkgname}%{ver2}-%{port}-%{chartype}
129 Summary: Cross platform GUI toolkit for Python
130 Group: Development/Python
131 Requires: %{pkgname}-common
132 Obsoletes: wxPythonGTK%{gtktype}-py%{pyver}, wxPythonGTK%{gtktype}
133 Provides: wxPython
134
135
136 %description -n %{pkgname}%{ver2}-%{port}-%{chartype}
137 wxPython is a GUI toolkit for the Python programming language. It
138 allows Python programmers to create programs with a robust, highly
139 functional graphical user interface, simply and easily. It is
140 implemented as a Python extension module (native code) that wraps the
141 popular wxWidgets cross platform GUI library, which is written in C++.
142
143 wxPython is a cross-platform toolkit. The same program will usually
144 run on multiple platforms without modification. Currently supported
145 platforms are 32-bit Microsoft Windows, most Unix or unix-like
146 systems, and Macintosh OS X.
147
148 This package contains the wxPython runtime files built for the
149 wxWidgets %{port} port with %{chartype} character type.
150
151
152
153
154
155 %package -n %{pkgname}-common-%{port}-%{chartype}
156 Summary: Common files for needed by all wxPython runtimes
157 Group: Development/Python
158 Provides: %{pkgname}-common
159
160 # They obsolete each other so any of them can be installed over another
161 # without conflicts
162 Obsoletes: %{pkgname}-common-gtk-ansi
163 Obsoletes: %{pkgname}-common-gtk2-ansi
164 Obsoletes: %{pkgname}-common-gtk2-unicode
165
166 %description -n %{pkgname}-common-%{port}-%{chartype}
167 This package contains the common files needed by any version of the
168 wxPython runtime. This pacakge also installs a wx.pth file which will
169 determine which of the installed runtimes is the default version of
170 wxPython that is imported automatically with a bare "import wx".
171
172
173
174
175
176 %package -n %{pkgname}%{ver2}-devel-%{port}-%{chartype}
177 Summary: wxPython development files
178 Group: Development/Libraries
179 Requires: %{pkgname}%{ver2}-%{port}-%{chartype} = %{version}
180
181 %description -n %{pkgname}%{ver2}-devel-%{port}-%{chartype}
182 This packages contains the headers and etc. for building apps or
183 Python extension modules that use the same wxWidgets shared libraries
184 that wxPython uses.
185
186
187
188 #----------------------------------------------------------------------
189 %prep
190 %setup -q -n %{tarname}-%{version}
191
192
193 #----------------------------------------------------------------------
194 %build
195
196 WXDIR=`pwd`
197
198 # Configure and build wxWidgets
199 mkdir bld
200 cd bld
201 ../configure \
202 %if %{using_gtk1}
203 --with-gtk=1 \
204 %else
205 --with-gtk=2 \
206 %endif
207 --prefix=%{wxpref} \
208 --disable-monolithic \
209 --disable-rpath \
210 --with-opengl \
211 --with-gnomeprint \
212 --enable-geometry \
213 --enable-graphics_ctx \
214 --enable-optimise \
215 --enable-sound --with-sdl \
216 %if %{mediactrl}
217 --enable-mediactrl \
218 %endif
219 --enable-display \
220 %if %{unicode}
221 --enable-unicode \
222 %else
223 --disable-unicode \
224 %endif
225 %if %{debug_flag}
226 --enable-debug_flag \
227 %endif
228 --disable-debugreport \
229 %if %{builtin_libs}
230 --with-libjpeg=builtin \
231 --with-libpng=builtin \
232 --with-libtiff=builtin \
233 --with-zlib=builtin \
234 %endif
235
236
237 make
238 make -C contrib/src/animate
239 make -C contrib/src/gizmos
240 make -C contrib/src/stc
241
242
243
244 # Build wxPython
245 cd $WXDIR/wxPython
246 %{python} setup.py \
247 WXPORT=%{port} \
248 UNICODE=%{unicode} \
249 EP_ADD_OPTS=1 \
250 EP_FULL_VER=%{fullver} \
251 NO_SCRIPTS=1 \
252 WX_CONFIG="$WXDIR/bld/wx-config --no_rpath" \
253 build_ext --rpath=%{wxpref}/lib \
254 build
255
256
257
258 #----------------------------------------------------------------------
259 %install
260
261 WXDIR=`pwd`
262
263 # Install wxGTK and contribs
264 cd bld
265 make prefix=$RPM_BUILD_ROOT%{wxpref} install
266 make -C contrib/src/animate prefix=$RPM_BUILD_ROOT%{wxpref} install
267 make -C contrib/src/gizmos prefix=$RPM_BUILD_ROOT%{wxpref} install
268 make -C contrib/src/stc prefix=$RPM_BUILD_ROOT%{wxpref} install
269
270
271
272 # Install wxPython for wxGTK
273 cd $WXDIR/wxPython
274 %{python} setup.py \
275 WXPORT=%{port} \
276 UNICODE=%{unicode} \
277 EP_ADD_OPTS=1 \
278 EP_FULL_VER=%{fullver} \
279 NO_SCRIPTS=1 \
280 WX_CONFIG="$RPM_BUILD_ROOT%{wxpref}/bin/wx-config --prefix=$RPM_BUILD_ROOT%{wxpref} --no_rpath" \
281 build_ext --rpath=%{wxpref}/lib \
282 install \
283 --root=$RPM_BUILD_ROOT
284
285
286 # remove the wx-config symlink, we'll redo it when installing the -devel package
287 rm $RPM_BUILD_ROOT%{wxpref}/bin/wx-config
288
289 # make sure that debug info is stripped
290 strip $RPM_BUILD_ROOT%{pref}/lib*/python%{pyver}/site-packages/wx-%{ver2}*-%{port}-%{chartype}/wx/*.so
291
292
293 # Since I want this RPM to be as generic as possible I won't let
294 # distutils copy the scripts (NO_SCRIPTS=1 above) since it will mangle
295 # the #! line to use the real python pathname. Since some distros
296 # install python 2.2 as python2 and others as python I can't let
297 # distutils do that otherwise the dependencies will be fouled up.
298 # Copy them manually instead, leaving the #!/usr/bin/env line intact.
299 cd $WXDIR/wxPython
300 mkdir -p $RPM_BUILD_ROOT%{pref}/bin
301 for s in \
302 helpviewer \
303 img2png \
304 img2py \
305 img2xpm \
306 pyalacarte \
307 pyalamode \
308 pycrust \
309 pywrap \
310 pyshell \
311 pywxrc \
312 xrced; do
313 cp scripts/$s $RPM_BUILD_ROOT%{pref}/bin
314 done
315
316
317
318 # install KDE & GNOME menu items
319 mkdir -p $RPM_BUILD_ROOT%{_datadir}/applnk/Development
320 mkdir -p $RPM_BUILD_ROOT%{_datadir}/applications
321 for d in distrib/*.desktop; do
322 install -m 644 $d $RPM_BUILD_ROOT%{_datadir}/applnk/Development
323 install -m 644 $d $RPM_BUILD_ROOT%{_datadir}/applications
324 done
325
326 # install KDE icons
327 mkdir -p $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/{16x16,32x32}/apps
328 mkdir -p $RPM_BUILD_ROOT%{_datadir}/pixmaps
329 install -m 644 wx/py/PyCrust_16.png $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/16x16/apps/PyCrust.png
330 install -m 644 wx/py/PyCrust_32.png $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/32x32/apps/PyCrust.png
331 install -m 644 wx/py/PyCrust_32.png $RPM_BUILD_ROOT%{_datadir}/pixmaps/PyCrust.png
332 install -m 644 wx/tools/XRCed/XRCed_16.png $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/16x16/apps/XRCed.png
333 install -m 644 wx/tools/XRCed/XRCed_32.png $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/32x32/apps/XRCed.png
334 install -m 644 wx/tools/XRCed/XRCed_32.png $RPM_BUILD_ROOT%{_datadir}/pixmaps/XRCed.png
335
336 # install Mandrake menu items
337 mkdir -p $RPM_BUILD_ROOT%{_libdir}/menu
338 cat > $RPM_BUILD_ROOT%{_libdir}/menu/%{pkgname} <<EOF
339 ?package(%{pkgname}): \\
340 command="%{_bindir}/pyshell" \\
341 needs="X11" \\
342 icon="PyCrust.png" \\
343 section="Applications/Development/Tools" \\
344 title="PyShell" \\
345 longtitle="GUI Python Shell"
346 ?package(%{pkgname}): \\
347 command="%{_bindir}/pycrust" \\
348 needs="X11" \\
349 icon="PyCrust.png" \\
350 section="Applications/Development/Tools" \\
351 title="PyCrust" \\
352 longtitle="GUI Python Shell with Filling"
353 ?package(%{pkgname}): \\
354 command="%{_bindir}/pyalamode" \\
355 needs="X11" \\
356 icon="PyCrust.png" \\
357 section="Applications/Development/Tools" \\
358 title="PyAlaMode" \\
359 longtitle="GUI Python Shell with Filling and editor windows"
360 ?package(%{pkgname}): \\
361 command="%{_bindir}/xrced" \\
362 needs="X11" \\
363 icon="XRCed.png" \\
364 section="Applications/Development/Tools" \\
365 title="XRCed" \\
366 longtitle="wxPython XRC resource editor"
367 EOF
368
369
370 #----------------------------------------------------------------------
371
372 %post -n %{pkgname}%{ver2}-%{port}-%{chartype}
373 if [ ! -e %{wxprefbase} ]; then
374 ln -s %{pkgname}-%{version}-%{port}-%{chartype} %{wxprefbase}
375 fi
376
377 %preun -n %{pkgname}%{ver2}-%{port}-%{chartype}
378 if [ -L %{wxprefbase} ]; then
379 if [ `readlink %{wxprefbase}` == %{pkgname}-%{version}-%{port}-%{chartype} ]; then
380 rm -f %{wxprefbase}
381 fi
382 fi
383
384
385
386
387 %post -n %{pkgname}-common-%{port}-%{chartype}
388 # This is done on Mandrake to update its menus:
389 if [ -x /usr/bin/update-menus ]; then /usr/bin/update-menus || true ; fi
390
391 %postun -n %{pkgname}-common-%{port}-%{chartype}
392 # This is done on Mandrake to update its menus:
393 if [ "$1" = "0" -a -x /usr/bin/update-menus ]; then /usr/bin/update-menus || true ; fi
394
395
396
397 %post -n %{pkgname}%{ver2}-devel-%{port}-%{chartype}
398 cd %{wxpref}/bin
399 ln -s ../lib/wx/config/%{port}-%{chartype}* wx-config
400
401 %preun -n %{pkgname}%{ver2}-devel-%{port}-%{chartype}
402 rm %{wxpref}/bin/wx-config
403
404
405 #----------------------------------------------------------------------
406 %clean
407 [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
408
409
410 #----------------------------------------------------------------------
411
412 %files -n %{pkgname}%{ver2}-%{port}-%{chartype}
413 %defattr(-,root,root)
414 %doc docs/preamble.txt docs/licence.txt docs/lgpl.txt docs/readme.txt docs/changes.txt
415 %doc wxPython/docs/*
416 %dir %{pref}/lib*/python%{pyver}/site-packages/wx-%{ver2}*-%{port}-%{chartype}
417 %{pref}/lib*/python%{pyver}/site-packages/wx-%{ver2}*-%{port}-%{chartype}/*
418 %dir %{pref}/lib*/python%{pyver}/site-packages/wxaddons
419 %{pref}/lib*/python%{pyver}/site-packages/wxaddons/*
420 %dir %{wxpref}
421 %dir %{wxpref}/lib
422 %{wxpref}/lib/libwx_*
423 %dir %{wxpref}/bin
424 %{wxpref}/bin/wxrc*
425 %{wxpref}/share
426
427
428
429 %files -n %{pkgname}-common-%{port}-%{chartype}
430 %defattr(-,root,root)
431 %{pref}/lib*/python%{pyver}/site-packages/wxversion.*
432 %{pref}/lib*/python%{pyver}/site-packages/wx.pth
433 %{_bindir}/*
434 %{_datadir}/applnk/Development/*
435 %{_datadir}/applications/*
436 %{_datadir}/icons/hicolor/*/apps/*
437 %{_datadir}/pixmaps/*
438 %{_libdir}/menu/*
439
440
441
442
443
444 %files -n %{pkgname}%{ver2}-devel-%{port}-%{chartype}
445 %defattr(-,root,root)
446 %{wxpref}/include
447 %{wxpref}/lib/wx
448 %dir %{wxpref}/bin
449
450
451 #----------------------------------------------------------------------
452 # end of file