2 BuildRequires: db4-devel fdupes gdbm-devel gmp-devel bzip2-devel openssl-devel ncurses-devel readline-devel sqlite-devel
3 Url: http://www.python.org/
4 License: MIT License (or similar)
5 Group: Development/Languages/Python
6 Obsoletes: python-nothreads python21 python-elementtree python-sqlite
7 Summary: Python Interpreter
10 Requires: python-base = %{version}
11 %define tarversion %{version}
12 %define tarname Python-%{tarversion}
13 Source0: %{tarname}.tar.bz2
17 Source1001: packaging/python.manifest
18 #Source11: testfiles.tar.bz2
19 # issues with copyrighted Unicode testing files
20 Patch1: python-2.7-dirs.patch
21 Patch2: python-2.7.1-multilib.patch
22 Patch3: python-2.7rc2-canonicalize2.patch
23 Patch4: python-2.5.1-sqlite.patch
24 Patch5: python-2.7rc2-configure.patch
25 Patch6: python-2.6b3-curses-panel.patch
26 Patch7: sparc_longdouble.patch
27 Patch9: python-2.7.1-fix_date_time_compiler.patch
28 Patch10: python-2.7-fix-parallel-make.patch
29 Patch11: python-2.7.1-linux3.patch
31 %define python_version %(echo %{version} | head -c 3)
32 %define idle_name idle
33 Provides: %{name} = %{python_version}
36 Python is an interpreted, object-oriented programming language, and is
37 often compared to Tcl, Perl, Scheme, or Java. You can find an overview
38 of Python in the documentation and tutorials included in the python-doc
39 (HTML) or python-doc-pdf (PDF) packages.
41 If you want to install third party modules using distutils, you need to
42 install python-devel package.
48 Guido van Rossum <guido@python.org>
51 License: Python License ..
52 Requires: python-base = %{version}
53 Summary: An Integrated Development Environment for Python
54 Group: Development/Languages/Python
57 IDLE is a Tkinter based integrated development environment for Python.
58 It features a multi-window text editor with multiple undo, Python
59 colorizing, and many other things, as well as a Python shell window and
65 Guido van Rossum <guido@python.org>
68 License: Python License ..
69 Requires: python-base = %{version}
70 Summary: An Integrated Development Environment for Python
71 Group: Development/Languages/Python
74 for supporting xml stuff. (TODO: This description should be changed correctly.)
79 Guido van Rossum <guido@python.org>
82 License: Python License ..
85 Requires: python-base = %{version}
86 Summary: Python Demonstration Scripts
87 Group: Development/Languages/Python
90 Various demonstrations of what you can do with Python and a number of
91 programs that are useful for building or extending Python.
97 Guido van Rossum <guido@python.org>
101 License: Python License ..
102 Requires: python-base = %{version}
105 Summary: Python Interface to the (N)Curses Library
106 Group: Development/Libraries/Python
109 An easy to use interface to the (n)curses CUI library. CUI stands for
110 Console User Interface.
116 Guido van Rossum <guido@python.org>
119 License: MIT License (or similar)
120 Requires: python-base = %{version}
123 Summary: Python Interface to the GDBM Library
124 Group: Development/Libraries/Python
127 An easy to use interface for GDBM databases. GDBM is the GNU
128 implementation of the standard Unix DBM databases.
134 Guido van Rossum <guido@python.org>
137 %setup -q -n %{tarname}
150 # drop Autoconf version requirement
151 sed -i 's/^version_required/dnl version_required/' configure.in
155 export OPT="$RPM_OPT_FLAGS"
157 autoreconf -f -i . # Modules/_ctypes/libffi
158 # prevent make from trying to rebuild asdl stuff, which requires existing
159 # python installation
160 touch Parser/asdl* Python/Python-ast.c Include/Python-ast.h
163 --prefix=%{_prefix} \
164 --libdir=%{_libdir} \
165 --mandir=%{_mandir} \
166 --docdir=%{_docdir}/python \
170 --enable-unicode=ucs4
172 make %{?_smp_mflags} DESTDIR=$RPM_BUILD_ROOT
175 # on hppa, the threading of glibc is quite broken. The tests just stop
176 # at some point, and the machine does not build anything more until a
177 # timeout several hours later.
179 # Limit virtual memory to avoid spurious failures
180 if test $(ulimit -v) = unlimited || test $(ulimit -v) -gt 10000000; then
181 ulimit -v 10000000 || :
183 LIST="test_urllib test_ssl test_hashlib test_hmac test_unicodedata test_tarfile test_sqlite test_tcl test_anydbm test_dumbdbm test_gdbm test_whichdb test_tk test_ttk_textonly test_bsddb test_readline "
184 #drop test_urllib2_localnet, need to fix later.
185 make test TESTOPTS="$LIST"
189 # replace rest of /usr/local/bin/python or /usr/bin/python2.x with /usr/bin/python
190 find . -wholename "./Parser" -prune -o -name '*.py' -type f -print0 | xargs -0 grep -lE '^#! *(/usr/.*bin/(env +)?)?python' | xargs sed -r -i -e '1s@^#![[:space:]]*(/usr/(local/)?bin/(env +)?)?python([0-9]+\.[0-9]+)?@#!/usr/bin/python@'
191 # the grep inbetween makes it much faster
192 ########################################
194 ########################################
196 OPT="$RPM_OPT_FLAGS -fPIC" \
197 DESTDIR=$RPM_BUILD_ROOT \
199 ########################################
201 ########################################
202 # remove hard links and replace them with symlinks
203 for dir in bin include %{_lib} ; do
204 rm -f $RPM_BUILD_ROOT/%{_prefix}/$dir/python
205 ln -s python%{python_version} $RPM_BUILD_ROOT/%{_prefix}/$dir/python
207 # kill imageop.so, it's insecure
208 rm -f $RPM_BUILD_ROOT/%{_libdir}/python%{python_version}/lib-dynload/imageop.so
210 rm -rf %{buildroot}/usr/lib/python2.7/lib-tk
211 rm $RPM_BUILD_ROOT%{_bindir}/python{,%{python_version}}
212 rm $RPM_BUILD_ROOT%{_bindir}/smtpd.py
213 rm $RPM_BUILD_ROOT%{_bindir}/pydoc
214 rm $RPM_BUILD_ROOT%{_bindir}/2to3
215 rm $RPM_BUILD_ROOT%{_mandir}/man1/python*
216 rm $RPM_BUILD_ROOT%{_libdir}/libpython*.so.*
217 rm $RPM_BUILD_ROOT%{_libdir}/python
218 find $RPM_BUILD_ROOT%{_libdir}/python%{python_version} -maxdepth 1 ! \( -name "ssl.py" \) -exec rm {} ";"
219 rm $RPM_BUILD_ROOT%{_bindir}/python%{python_version}-config
220 rm $RPM_BUILD_ROOT%{_bindir}/python-config
221 rm $RPM_BUILD_ROOT%{_libdir}/pkgconfig/*
222 rm -r $RPM_BUILD_ROOT%{_includedir}/python
223 rm -r $RPM_BUILD_ROOT%{_includedir}/python%{python_version}
224 rm -r $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/compiler
225 rm -r $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/config
226 rm -r $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/ctypes
227 rm -r $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/distutils
228 rm -r $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/email
229 rm -r $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/encodings
230 rm -r $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/hotshot
231 rm -r $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/importlib
232 rm -r $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/json
233 rm -r $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib2to3
234 rm -r $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/logging
235 rm -r $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/multiprocessing
236 rm -r $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/plat-*
237 rm -r $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/pydoc_data
238 rm -r $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/test
239 rm -r $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/unittest
240 rm -r $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/wsgiref
241 rm $RPM_BUILD_ROOT%{_libdir}/libpython%{python_version}.so
242 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/site-packages/README
243 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/_bisect.so
244 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/_csv.so
245 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/_collections.so
246 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/_ctypes.so
247 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/_ctypes_test.so
248 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/_elementtree.so
249 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/_functools.so
250 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/_heapq.so
251 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/_hotshot.so
252 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/_io.so
253 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/_json.so
254 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/_locale.so
255 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/_lsprof.so
256 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/_multiprocessing.so
257 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/_random.so
258 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/_socket.so
259 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/_struct.so
260 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/_testcapi.so
261 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/array.so
262 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/binascii.so
263 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/bz2.so
264 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/cPickle.so
265 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/cStringIO.so
266 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/cmath.so
267 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/crypt.so
268 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/datetime.so
269 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/fcntl.so
270 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/future_builtins.so
271 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/grp.so
272 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/itertools.so
273 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/linuxaudiodev.so
274 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/math.so
275 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/mmap.so
276 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/nis.so
277 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/operator.so
278 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/ossaudiodev.so
279 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/parser.so
280 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/resource.so
281 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/select.so
282 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/spwd.so
283 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/strop.so
284 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/syslog.so
285 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/termios.so
286 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/time.so
287 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/unicodedata.so
288 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/zlib.so
289 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/_codecs*.so
290 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/_multibytecodec.so
291 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/audioop.so
292 rm -f $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/dl.so
293 rm $RPM_BUILD_ROOT%{_libdir}/python%{python_version}/lib-dynload/Python-%{tarversion}-py%{python_version}.egg-info
294 # replace duplicate .pyo/.pyc with hardlinks
295 %fdupes $RPM_BUILD_ROOT/%{_libdir}/python%{python_version}
297 export PDOCS=${RPM_BUILD_ROOT}%{_docdir}/%{name}
298 install -d -m 755 $PDOCS
300 ########################################
302 ########################################
303 find Tools/ Demo/ -type d \( -regex ".*/.cvsignore" \) -exec rm -f \{\} \;
304 for x in `find Tools/ Demo/ \( -not -name Makefile \) -print | sort` ; do
305 test -d $x && ( install -c -m 755 -d $PDOCS/$x ) \
306 || ( install -c -m 644 $x $PDOCS/$x )
308 ########################################
310 ########################################
311 # move idle config into /etc
312 install -d -m755 ${RPM_BUILD_ROOT}/etc/%{idle_name}
314 cd ${RPM_BUILD_ROOT}/%{_libdir}/python%{python_version}/idlelib/
315 for file in *.def ; do
316 mv $file ${RPM_BUILD_ROOT}/etc/%{idle_name}/
317 ln -sf /etc/%{idle_name}/$file ${RPM_BUILD_ROOT}/%{_libdir}/python%{python_version}/idlelib/
320 ########################################
322 ########################################
323 install -m 644 %{S:2} $RPM_BUILD_ROOT/etc
324 install -d -m 755 $RPM_BUILD_ROOT/etc/profile.d
325 install -m 644 %{S:3} %{S:4} $RPM_BUILD_ROOT/etc/profile.d
328 rm -rf $RPM_BUILD_ROOT
330 %post -p /sbin/ldconfig
332 %postun -p /sbin/ldconfig
335 %manifest python.manifest
336 %defattr(644, root, root, 755)
337 %dir /etc/%{idle_name}
338 %config /etc/%{idle_name}/*
339 %doc Lib/idlelib/NEWS.txt
340 %doc Lib/idlelib/README.txt
341 %doc Lib/idlelib/TODO.txt
342 %doc Lib/idlelib/extend.txt
343 %doc Lib/idlelib/ChangeLog
344 %{_libdir}/python%{python_version}/idlelib
345 %attr(755, root, root) %{_bindir}/%{idle_name}
348 %manifest python.manifest
349 %{_libdir}/python%{python_version}/xml/*
350 %{_libdir}/python%{python_version}/xml/*/*
353 %manifest python.manifest
354 %defattr(644, root, root, 755)
355 %doc %{_docdir}/%{name}/Demo
356 %doc %{_docdir}/%{name}/Tools
360 %manifest python.manifest
361 %defattr(644, root, root, 755)
362 %{_libdir}/python%{python_version}/curses
363 %{_libdir}/python%{python_version}/lib-dynload/_curses.so
364 %{_libdir}/python%{python_version}/lib-dynload/_curses_panel.so
367 %manifest python.manifest
368 %defattr(644, root, root, 755)
369 %{_libdir}/python%{python_version}/lib-dynload/gdbm.so
370 %{_libdir}/python%{python_version}/lib-dynload/dbm.so
373 %manifest python.manifest
374 %defattr(644, root, root, 755)
375 %config /etc/pythonstart
376 %config /etc/profile.d/python.*
377 %dir %{_libdir}/python%{python_version}
378 %{_libdir}/python%{python_version}/ssl.py*
379 %{_libdir}/python%{python_version}/bsddb
380 %{_libdir}/python%{python_version}/sqlite3
381 %dir %{_libdir}/python%{python_version}/lib-dynload
382 %{_libdir}/python%{python_version}/lib-dynload/_bsddb.so
383 %{_libdir}/python%{python_version}/lib-dynload/_hashlib.so
384 %{_libdir}/python%{python_version}/lib-dynload/_sqlite3.so
385 %{_libdir}/python%{python_version}/lib-dynload/_ssl.so
386 %{_libdir}/python%{python_version}/lib-dynload/readline.so
387 %{_libdir}/python%{python_version}/lib-dynload/pyexpat.so