Start packaging the bz2 python module as it is needed for building Qt5
[profile/ivi/python.git] / packaging / python-base.spec
1 Name:           python-base
2 Version:        2.7.3
3 Release:        0
4 License:        Python-2.0
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
13 Source5:        _local.pth
14 Source1001:     python.manifest
15 # COMMON-PATCH-BEGIN
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
30 # COMMON-PATCH-END
31 %define         python_version    %(echo %{tarversion} | head -c 3)
32 BuildRequires:  automake
33 BuildRequires:  fdupes
34 BuildRequires:  pkg-config
35 BuildRequires:  zlib-devel
36 BuildRequires:  bzip2-devel
37
38 %description
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.
43
44 This package contains all of stand-alone Python files, minus binary
45 modules that would pull in extra dependencies.
46
47 %package -n python-devel
48 Summary:        Include Files and Libraries Mandatory for Building Python Modules
49 Group:          Development/Languages/Python
50 Requires:       glibc-devel
51 Requires:       python-base = %{version}
52
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.
56
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.
60
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
68
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.
72
73 %package -n libpython
74 Summary:        Python Interpreter shared library
75 Group:          Development/Languages/Python
76
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.
82
83 This package contains libpython2.6 shared library for embedding in
84 other applications.
85
86 %prep
87 %setup -q -n %{tarname}
88 # patching
89 # COMMON-PREP-BEGIN
90 %patch1 -p1
91 %patch2 -p1
92 %patch3
93 %patch4
94 %patch5
95 %patch6
96 %patch7
97 %patch8
98 %patch9 -p1
99 %patch12
100 %patch13
101 #skip test_io test for ppc,ppc64 as it broken.
102 %patch16 -p1
103 %patch17
104 %patch18
105 # COMMON-PREP-END
106
107 # drop Autoconf version requirement
108 sed -i 's/^version_required/dnl version_required/' configure.in
109
110 %build
111 cp %{S:1001} .
112 export OPT="%{optflags}"
113
114 autoreconf -f -i . # Modules/_ctypes/libffi
115
116 # provide a stable timestamp
117 touch -r %{SOURCE0} Makefile.pre.in
118
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
122
123 %configure \
124     --docdir=%{_docdir}/python \
125     --with-fpectl \
126     --enable-ipv6 \
127     --enable-shared \
128     --enable-unicode=ucs4
129
130 LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH \
131     make %{?_smp_mflags} profile-opt
132
133
134 %install
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 ########################################
139 # install it
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 ########################################
151 # some cleanups
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
157 done
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 ########################################
174 # documentation
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 ########################################
182 # devel
183 ########################################
184 # install Makefile.pre.in and Makefile.pre
185 cp Makefile Makefile.pre.in Makefile.pre %{buildroot}%{_libdir}/python%{python_version}/config/
186
187 %post -n libpython -p /sbin/ldconfig
188
189 %postun -n libpython -p /sbin/ldconfig
190
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
209
210 %files -n python-xml
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
215
216 %files -n libpython
217 %manifest python.manifest
218 %defattr(644, root, root)
219 %{_libdir}/libpython*.so.*
220
221 %files
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
232 %{_libdir}/python
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)
313 %ifnarch x86_64
314 # requires sizeof(int) == sizeof(long) == sizeof(char*)
315 %{_libdir}/python%{python_version}/lib-dynload/dl.so
316 %endif
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
321 %{_bindir}/python2
322 %exclude %{_bindir}/2to3
323