]> git.saurik.com Git - wxWidgets.git/blob - wxPython/distrib/wxPythonFull.spec.in
be able to change tabs with arrow keys
[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/gizmos
239 make -C contrib/src/stc
240
241
242
243 # Build wxPython
244 cd $WXDIR/wxPython
245 %{python} setup.py \
246 WXPORT=%{port} \
247 UNICODE=%{unicode} \
248 EP_ADD_OPTS=1 \
249 EP_FULL_VER=%{fullver} \
250 NO_SCRIPTS=1 \
251 WX_CONFIG="$WXDIR/bld/wx-config --no_rpath" \
252 build_ext --rpath=%{wxpref}/lib \
253 build
254
255
256
257 #----------------------------------------------------------------------
258 %install
259
260 WXDIR=`pwd`
261
262 # Install wxGTK and contribs
263 cd bld
264 make prefix=$RPM_BUILD_ROOT%{wxpref} install
265 make -C contrib/src/gizmos prefix=$RPM_BUILD_ROOT%{wxpref} install
266 make -C contrib/src/stc prefix=$RPM_BUILD_ROOT%{wxpref} install
267
268
269
270 # Install wxPython for wxGTK
271 cd $WXDIR/wxPython
272 %{python} setup.py \
273 WXPORT=%{port} \
274 UNICODE=%{unicode} \
275 EP_ADD_OPTS=1 \
276 EP_FULL_VER=%{fullver} \
277 NO_SCRIPTS=1 \
278 WX_CONFIG="$RPM_BUILD_ROOT%{wxpref}/bin/wx-config --prefix=$RPM_BUILD_ROOT%{wxpref} --no_rpath" \
279 build_ext --rpath=%{wxpref}/lib \
280 install \
281 --root=$RPM_BUILD_ROOT
282
283
284 # remove the wx-config symlink, we'll redo it when installing the -devel package
285 rm $RPM_BUILD_ROOT%{wxpref}/bin/wx-config
286
287 # make sure that debug info is stripped
288 strip $RPM_BUILD_ROOT%{pref}/lib*/python%{pyver}/site-packages/wx-%{ver2}*-%{port}-%{chartype}/wx/*.so
289
290
291 # Since I want this RPM to be as generic as possible I won't let
292 # distutils copy the scripts (NO_SCRIPTS=1 above) since it will mangle
293 # the #! line to use the real python pathname. Since some distros
294 # install python 2.2 as python2 and others as python I can't let
295 # distutils do that otherwise the dependencies will be fouled up.
296 # Copy them manually instead, leaving the #!/usr/bin/env line intact.
297 cd $WXDIR/wxPython
298 mkdir -p $RPM_BUILD_ROOT%{pref}/bin
299 for s in \
300 helpviewer \
301 img2png \
302 img2py \
303 img2xpm \
304 pyalacarte \
305 pyalamode \
306 pycrust \
307 pywrap \
308 pyshell \
309 pywxrc \
310 xrced; do
311 cp scripts/$s $RPM_BUILD_ROOT%{pref}/bin
312 done
313
314
315
316 # install KDE & GNOME menu items
317 mkdir -p $RPM_BUILD_ROOT%{_datadir}/applnk/Development
318 mkdir -p $RPM_BUILD_ROOT%{_datadir}/applications
319 for d in distrib/*.desktop; do
320 install -m 644 $d $RPM_BUILD_ROOT%{_datadir}/applnk/Development
321 install -m 644 $d $RPM_BUILD_ROOT%{_datadir}/applications
322 done
323
324 # install KDE icons
325 mkdir -p $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/{16x16,32x32}/apps
326 mkdir -p $RPM_BUILD_ROOT%{_datadir}/pixmaps
327 install -m 644 wx/py/PyCrust_16.png $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/16x16/apps/PyCrust.png
328 install -m 644 wx/py/PyCrust_32.png $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/32x32/apps/PyCrust.png
329 install -m 644 wx/py/PyCrust_32.png $RPM_BUILD_ROOT%{_datadir}/pixmaps/PyCrust.png
330 install -m 644 wx/tools/XRCed/XRCed_16.png $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/16x16/apps/XRCed.png
331 install -m 644 wx/tools/XRCed/XRCed_32.png $RPM_BUILD_ROOT%{_datadir}/icons/hicolor/32x32/apps/XRCed.png
332 install -m 644 wx/tools/XRCed/XRCed_32.png $RPM_BUILD_ROOT%{_datadir}/pixmaps/XRCed.png
333
334 # install Mandrake menu items
335 mkdir -p $RPM_BUILD_ROOT%{_libdir}/menu
336 cat > $RPM_BUILD_ROOT%{_libdir}/menu/%{pkgname} <<EOF
337 ?package(%{pkgname}): \\
338 command="%{_bindir}/pyshell" \\
339 needs="X11" \\
340 icon="PyCrust.png" \\
341 section="Applications/Development/Tools" \\
342 title="PyShell" \\
343 longtitle="GUI Python Shell"
344 ?package(%{pkgname}): \\
345 command="%{_bindir}/pycrust" \\
346 needs="X11" \\
347 icon="PyCrust.png" \\
348 section="Applications/Development/Tools" \\
349 title="PyCrust" \\
350 longtitle="GUI Python Shell with Filling"
351 ?package(%{pkgname}): \\
352 command="%{_bindir}/pyalamode" \\
353 needs="X11" \\
354 icon="PyCrust.png" \\
355 section="Applications/Development/Tools" \\
356 title="PyAlaMode" \\
357 longtitle="GUI Python Shell with Filling and editor windows"
358 ?package(%{pkgname}): \\
359 command="%{_bindir}/xrced" \\
360 needs="X11" \\
361 icon="XRCed.png" \\
362 section="Applications/Development/Tools" \\
363 title="XRCed" \\
364 longtitle="wxPython XRC resource editor"
365 EOF
366
367
368 #----------------------------------------------------------------------
369
370 %post -n %{pkgname}%{ver2}-%{port}-%{chartype}
371 if [ ! -e %{wxprefbase} ]; then
372 ln -s %{pkgname}-%{version}-%{port}-%{chartype} %{wxprefbase}
373 fi
374
375 %preun -n %{pkgname}%{ver2}-%{port}-%{chartype}
376 if [ -L %{wxprefbase} ]; then
377 if [ `readlink %{wxprefbase}` == %{pkgname}-%{version}-%{port}-%{chartype} ]; then
378 rm -f %{wxprefbase}
379 fi
380 fi
381
382
383
384
385 %post -n %{pkgname}-common-%{port}-%{chartype}
386 # This is done on Mandrake to update its menus:
387 if [ -x /usr/bin/update-menus ]; then /usr/bin/update-menus || true ; fi
388
389 %postun -n %{pkgname}-common-%{port}-%{chartype}
390 # This is done on Mandrake to update its menus:
391 if [ "$1" = "0" -a -x /usr/bin/update-menus ]; then /usr/bin/update-menus || true ; fi
392
393
394
395 %post -n %{pkgname}%{ver2}-devel-%{port}-%{chartype}
396 cd %{wxpref}/bin
397 ln -s ../lib/wx/config/%{port}-%{chartype}* wx-config
398
399 %preun -n %{pkgname}%{ver2}-devel-%{port}-%{chartype}
400 rm %{wxpref}/bin/wx-config
401
402
403 #----------------------------------------------------------------------
404 %clean
405 [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
406
407
408 #----------------------------------------------------------------------
409
410 %files -n %{pkgname}%{ver2}-%{port}-%{chartype}
411 %defattr(-,root,root)
412 %doc docs/preamble.txt docs/licence.txt docs/lgpl.txt docs/readme.txt docs/changes.txt
413 %doc wxPython/docs/*
414 %dir %{pref}/lib*/python%{pyver}/site-packages/wx-%{ver2}*-%{port}-%{chartype}
415 %{pref}/lib*/python%{pyver}/site-packages/wx-%{ver2}*-%{port}-%{chartype}/*
416 %dir %{pref}/lib*/python%{pyver}/site-packages/wxaddons
417 %{pref}/lib*/python%{pyver}/site-packages/wxaddons/*
418 %dir %{wxpref}
419 %dir %{wxpref}/lib
420 %{wxpref}/lib/libwx_*
421 %dir %{wxpref}/bin
422 %{wxpref}/bin/wxrc*
423 %{wxpref}/share
424
425
426
427 %files -n %{pkgname}-common-%{port}-%{chartype}
428 %defattr(-,root,root)
429 %{pref}/lib*/python%{pyver}/site-packages/wxversion.*
430 %{pref}/lib*/python%{pyver}/site-packages/wx.pth
431 %{_bindir}/*
432 %{_datadir}/applnk/Development/*
433 %{_datadir}/applications/*
434 %{_datadir}/icons/hicolor/*/apps/*
435 %{_datadir}/pixmaps/*
436 %{_libdir}/menu/*
437
438
439
440
441
442 %files -n %{pkgname}%{ver2}-devel-%{port}-%{chartype}
443 %defattr(-,root,root)
444 %{wxpref}/include
445 %{wxpref}/lib/wx
446 %dir %{wxpref}/bin
447
448
449 #----------------------------------------------------------------------
450 # end of file