5 Summary: Python Interpreter base package
6 Url: http://www.python.org/
7 Group: Development/Languages/Python
8 %define tarversion %{version}
9 %define tarname Python-%{tarversion}
10 Source0: %{tarname}.tar.bz2
11 Source1: macros.python
12 Source4: distutils.cfg
14 Source1001: python.manifest
16 Patch1: python-2.7-dirs.patch
17 Patch2: python-distutils-rpm-8.patch
18 Patch3: python-2.7.3rc2-multilib.patch
19 Patch4: python-2.5.1-sqlite.patch
20 Patch5: python-2.7.3rc2-canonicalize2.patch
21 Patch6: python-2.7rc2-configure.patch
22 Patch7: python-2.6-gettext-plurals.patch
23 Patch8: python-2.6b3-curses-panel.patch
24 Patch9: python-2.7.1-distutils_test_path.patch
25 Patch12: http://psf.upfronthosting.co.za/roundup/tracker/file19029/python-test_structmembers.patch
26 Patch13: python-2.7.2-fix_date_time_compiler.patch
27 Patch16: pypirc-secure.diff
28 Patch17: remove-static-libpython.diff
29 Patch18: python-2.7.3-ssl_ca_path.patch
31 %define python_version %(echo %{tarversion} | head -c 3)
32 BuildRequires: automake
34 BuildRequires: pkg-config
35 BuildRequires: zlib-devel
36 BuildRequires: bzip2-devel
39 Python is an interpreted, object-oriented programming language, and is
40 often compared to Tcl, Perl, Scheme, or Java. You can find an overview
41 of Python in the documentation and tutorials included in the python-doc
42 (HTML) or python-doc-pdf (PDF) packages.
44 This package contains all of stand-alone Python files, minus binary
45 modules that would pull in extra dependencies.
47 %package -n python-devel
48 Summary: Include Files and Libraries Mandatory for Building Python Modules
49 Group: Development/Languages/Python
51 Requires: python-base = %{version}
53 %description -n python-devel
54 The Python programming language's interpreter can be extended with
55 dynamically loaded extensions and can be embedded in other programs.
57 This package contains header files, a static library, and development
58 tools for building Python modules, extending the Python interpreter or
59 embedding Python in applications.
61 %package -n python-xml
62 Summary: A Python XML Interface
63 Group: Development/Libraries/Python
64 Requires: python-base = %{version}
65 # pyxml used to live out of tree
66 Provides: pyxml = 0.8.5
67 Obsoletes: pyxml < 0.8.5
69 %description -n python-xml
70 The expat module is a Python interface to the expat XML parser. Since
71 Python2.x, it is part of the core Python distribution.
74 Summary: Python Interpreter shared library
75 Group: Development/Languages/Python
77 %description -n libpython
78 Python is an interpreted, object-oriented programming language, and is
79 often compared to Tcl, Perl, Scheme, or Java. You can find an overview
80 of Python in the documentation and tutorials included in the python-doc
81 (HTML) or python-doc-pdf (PDF) packages.
83 This package contains libpython2.6 shared library for embedding in
87 %setup -q -n %{tarname}
101 #skip test_io test for ppc,ppc64 as it broken.
107 # drop Autoconf version requirement
108 sed -i 's/^version_required/dnl version_required/' configure.in
112 export OPT="%{optflags}"
114 autoreconf -f -i . # Modules/_ctypes/libffi
116 # provide a stable timestamp
117 touch -r %{SOURCE0} Makefile.pre.in
119 # prevent make from trying to rebuild asdl stuff, which requires existing
120 # python installation
121 touch Parser/asdl* Python/Python-ast.c Include/Python-ast.h
124 --docdir=%{_docdir}/python \
128 --enable-unicode=ucs4
130 LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH \
131 make %{?_smp_mflags} profile-opt
135 # replace rest of /usr/local/bin/python or /usr/bin/python2.5 with /usr/bin/python
136 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@'
137 # the grep inbetween makes it much faster
138 ########################################
140 ########################################
141 %make_install OPT="%{optflags} -fPIC"
142 # install site-specific tweaks
143 #ln -s python%{python_version} %{buildroot}%{_bindir}/python2
144 install -m 644 %{SOURCE4} %{buildroot}%{_libdir}/python%{python_version}/distutils
145 install -m 644 %{SOURCE5} %{buildroot}%{_libdir}/python%{python_version}/site-packages
146 install -d -m 755 %{buildroot}%{_sysconfdir}/rpm
147 install -m 644 %{SOURCE1} %{buildroot}%{_sysconfdir}/rpm
148 # make sure /usr/lib/python/site-packages exists even on lib64 machines
149 mkdir -p %{buildroot}%{_prefix}/lib/python%{python_version}/site-packages
150 ########################################
152 ########################################
153 # remove hard links and replace them with symlinks
154 for dir in bin include %{_lib} ; do
155 rm -f %{buildroot}/%{_prefix}/$dir/python
156 ln -s python%{python_version} %{buildroot}/%{_prefix}/$dir/python
158 CLEANUP_DIR="%{buildroot}%{_libdir}/python%{python_version}"
159 # don't distribute precompiled windows installers (duh)
160 rm -f $CLEANUP_DIR/distutils/command/*.exe
161 # kill imageop.so and audioop.so, they are rarely used and insecure
162 rm -f $CLEANUP_DIR/lib-dynload/imageop.so
163 rm -f $CLEANUP_DIR/lib-dynload/audioop.so
164 # link shared library instead of static library that tools expect
165 ln -s ../../libpython%{python_version}.so %{buildroot}%{_libdir}/python%{python_version}/config/libpython%{python_version}.so
166 # remove various things that don't need to be in python-base
167 rm %{buildroot}%{_bindir}/idle
168 rm -rf $CLEANUP_DIR/{curses,bsddb,idlelib,lib-tk,sqlite3}
169 rm $CLEANUP_DIR/ssl.py*
170 # does not work without _ssl.so anyway
171 # replace duplicate .pyo/.pyc with hardlinks
172 %fdupes %{buildroot}/%{_libdir}/python%{python_version}
173 ########################################
175 ########################################
176 export PDOCS=%{buildroot}%{_docdir}/%{name}
177 install -d -m 755 $PDOCS
178 install -c -m 644 LICENSE $PDOCS/
179 install -c -m 644 README $PDOCS/
180 ln -s python%{python_version}.1.gz %{buildroot}%{_mandir}/man1/python.1.gz
181 ########################################
183 ########################################
184 # install Makefile.pre.in and Makefile.pre
185 cp Makefile Makefile.pre.in Makefile.pre %{buildroot}%{_libdir}/python%{python_version}/config/
187 %post -n libpython -p /sbin/ldconfig
189 %postun -n libpython -p /sbin/ldconfig
191 %files -n python-devel
192 %manifest python.manifest
193 %defattr(-, root, root)
194 %{_libdir}/python%{python_version}/config/*
195 %exclude %{_libdir}/python%{python_version}/config/Setup
196 %exclude %{_libdir}/python%{python_version}/config/Makefile
197 %defattr(644, root, root, 755)
198 %{_libdir}/libpython*.so
199 %{_libdir}/pkgconfig/python-%{python_version}.pc
200 %{_libdir}/pkgconfig/python.pc
201 %{_libdir}/pkgconfig/python2.pc
202 %{_includedir}/python*
203 %exclude %{_includedir}/python%{python_version}/pyconfig.h
204 %{_libdir}/python%{python_version}/test
205 %defattr(755, root, root)
206 %{_bindir}/python-config
207 %{_bindir}/python2-config
208 %{_bindir}/python%{python_version}-config
211 %manifest python.manifest
212 %defattr(644, root, root, 755)
213 %{_libdir}/python%{python_version}/xml
214 %{_libdir}/python%{python_version}/lib-dynload/pyexpat.so
217 %manifest python.manifest
218 %defattr(644, root, root)
219 %{_libdir}/libpython*.so.*
222 %manifest python.manifest
223 %defattr(644, root, root, 755)
224 %config %{_sysconfdir}/rpm/macros.python
225 %dir %{_docdir}/%{name}
226 %doc %{_docdir}/%{name}/README
227 %doc %{_docdir}/%{name}/LICENSE
228 %doc %{_mandir}/man1/python.1*
229 %doc %{_mandir}/man1/python%{python_version}.1*
230 %dir %{_includedir}/python%{python_version}
231 %{_includedir}/python%{python_version}/pyconfig.h
233 %dir %{_prefix}/lib/python%{python_version}
234 %dir %{_prefix}/lib/python%{python_version}/site-packages
235 %dir %{_libdir}/python%{python_version}
236 %dir %{_libdir}/python%{python_version}/config
237 %{_libdir}/python%{python_version}/config/Setup
238 %{_libdir}/python%{python_version}/config/Makefile
239 %{_libdir}/python%{python_version}/*.*
240 %{_libdir}/python%{python_version}/compiler
241 %{_libdir}/python%{python_version}/ctypes
242 %{_libdir}/python%{python_version}/distutils
243 %{_libdir}/python%{python_version}/email
244 %{_libdir}/python%{python_version}/encodings
245 %{_libdir}/python%{python_version}/hotshot
246 %{_libdir}/python%{python_version}/importlib
247 %{_libdir}/python%{python_version}/json
248 %{_libdir}/python%{python_version}/lib2to3
249 %{_libdir}/python%{python_version}/logging
250 %{_libdir}/python%{python_version}/multiprocessing
251 %{_libdir}/python%{python_version}/plat-*
252 %{_libdir}/python%{python_version}/pydoc_data
253 %{_libdir}/python%{python_version}/unittest
254 %{_libdir}/python%{python_version}/wsgiref
255 %dir %{_libdir}/python%{python_version}/site-packages
256 %{_libdir}/python%{python_version}/site-packages/README
257 %{_libdir}/python%{python_version}/site-packages/_local.pth
258 %dir %{_libdir}/python%{python_version}/lib-dynload
259 %{_libdir}/python%{python_version}/lib-dynload/_bisect.so
260 %{_libdir}/python%{python_version}/lib-dynload/_csv.so
261 %{_libdir}/python%{python_version}/lib-dynload/_collections.so
262 %{_libdir}/python%{python_version}/lib-dynload/_ctypes.so
263 %{_libdir}/python%{python_version}/lib-dynload/_ctypes_test.so
264 %{_libdir}/python%{python_version}/lib-dynload/_elementtree.so
265 %{_libdir}/python%{python_version}/lib-dynload/_functools.so
266 %{_libdir}/python%{python_version}/lib-dynload/_heapq.so
267 %{_libdir}/python%{python_version}/lib-dynload/_hotshot.so
268 %{_libdir}/python%{python_version}/lib-dynload/_io.so
269 %{_libdir}/python%{python_version}/lib-dynload/_json.so
270 %{_libdir}/python%{python_version}/lib-dynload/_locale.so
271 %{_libdir}/python%{python_version}/lib-dynload/_lsprof.so
272 %{_libdir}/python%{python_version}/lib-dynload/_md5.so
273 %{_libdir}/python%{python_version}/lib-dynload/_multiprocessing.so
274 %{_libdir}/python%{python_version}/lib-dynload/_random.so
275 %{_libdir}/python%{python_version}/lib-dynload/_sha.so
276 %{_libdir}/python%{python_version}/lib-dynload/_sha256.so
277 %{_libdir}/python%{python_version}/lib-dynload/_sha512.so
278 %{_libdir}/python%{python_version}/lib-dynload/_socket.so
279 %{_libdir}/python%{python_version}/lib-dynload/_struct.so
280 %{_libdir}/python%{python_version}/lib-dynload/_testcapi.so
281 %{_libdir}/python%{python_version}/lib-dynload/array.so
282 %{_libdir}/python%{python_version}/lib-dynload/binascii.so
283 %{_libdir}/python%{python_version}/lib-dynload/bz2.so
284 %{_libdir}/python%{python_version}/lib-dynload/cPickle.so
285 %{_libdir}/python%{python_version}/lib-dynload/cStringIO.so
286 %{_libdir}/python%{python_version}/lib-dynload/cmath.so
287 %{_libdir}/python%{python_version}/lib-dynload/crypt.so
288 %{_libdir}/python%{python_version}/lib-dynload/datetime.so
289 %{_libdir}/python%{python_version}/lib-dynload/fcntl.so
290 %{_libdir}/python%{python_version}/lib-dynload/future_builtins.so
291 %{_libdir}/python%{python_version}/lib-dynload/grp.so
292 %{_libdir}/python%{python_version}/lib-dynload/itertools.so
293 %{_libdir}/python%{python_version}/lib-dynload/linuxaudiodev.so
294 %{_libdir}/python%{python_version}/lib-dynload/math.so
295 %{_libdir}/python%{python_version}/lib-dynload/mmap.so
296 %{_libdir}/python%{python_version}/lib-dynload/nis.so
297 %{_libdir}/python%{python_version}/lib-dynload/operator.so
298 %{_libdir}/python%{python_version}/lib-dynload/ossaudiodev.so
299 %{_libdir}/python%{python_version}/lib-dynload/parser.so
300 %{_libdir}/python%{python_version}/lib-dynload/resource.so
301 %{_libdir}/python%{python_version}/lib-dynload/select.so
302 %{_libdir}/python%{python_version}/lib-dynload/spwd.so
303 %{_libdir}/python%{python_version}/lib-dynload/strop.so
304 %{_libdir}/python%{python_version}/lib-dynload/syslog.so
305 %{_libdir}/python%{python_version}/lib-dynload/termios.so
306 %{_libdir}/python%{python_version}/lib-dynload/time.so
307 %{_libdir}/python%{python_version}/lib-dynload/unicodedata.so
308 %{_libdir}/python%{python_version}/lib-dynload/zlib.so
309 %{_libdir}/python%{python_version}/lib-dynload/_codecs*.so
310 %{_libdir}/python%{python_version}/lib-dynload/_multibytecodec.so
311 %{_libdir}/python%{python_version}/lib-dynload/Python-%{tarversion}-py%{python_version}.egg-info
312 # these modules don't support 64-bit arches (disabled by setup.py)
314 # requires sizeof(int) == sizeof(long) == sizeof(char*)
315 %{_libdir}/python%{python_version}/lib-dynload/dl.so
317 %attr(755, root, root) %{_bindir}/pydoc
318 %attr(755, root, root) %{_bindir}/python
319 %attr(755, root, root) %{_bindir}/python%{python_version}
320 %attr(755, root, root) %{_bindir}/smtpd.py
322 %exclude %{_bindir}/2to3