Add default Smack manifest for python.spec
[profile/ivi/python.git] / packaging / python.spec
1 Name:           python
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
8 Version:        2.7.1
9 Release:        1
10 Requires:       python-base = %{version}
11 %define         tarversion      %{version}
12 %define         tarname         Python-%{tarversion}
13 Source0:        %{tarname}.tar.bz2
14 Source2:        pythonstart
15 Source3:        python.sh
16 Source4:        python.csh
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
30
31 %define         python_version    %(echo %{version} | head -c 3)
32 %define         idle_name         idle
33 Provides:       %{name} = %{python_version}
34
35 %description
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.
40
41 If you want to install third party modules using distutils, you need to
42 install python-devel package.
43
44
45
46 Authors:
47 --------
48     Guido van Rossum <guido@python.org>
49
50 %package idle
51 License:        Python License ..
52 Requires:       python-base = %{version} 
53 Summary:        An Integrated Development Environment for Python
54 Group:          Development/Languages/Python
55
56 %description idle
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
60 a debugger.
61
62
63 Authors:  
64 --------  
65     Guido van Rossum <guido@python.org>  
66  
67 %package xml  
68 License:        Python License ..  
69 Requires:       python-base = %{version}   
70 Summary:        An Integrated Development Environment for Python  
71 Group:          Development/Languages/Python  
72  
73 %description xml  
74 for supporting xml stuff. (TODO: This description should be changed correctly.)  
75
76
77 Authors:
78 --------
79     Guido van Rossum <guido@python.org>
80
81 %package demo
82 License:        Python License ..
83 Provides:       pyth_dmo
84 Obsoletes:      pyth_dmo
85 Requires:       python-base = %{version}
86 Summary:        Python Demonstration Scripts
87 Group:          Development/Languages/Python
88
89 %description demo
90 Various demonstrations of what you can do with Python and a number of
91 programs that are useful for building or extending Python.
92
93
94
95 Authors:
96 --------
97     Guido van Rossum <guido@python.org>
98
99
100 %package curses
101 License:        Python License ..
102 Requires:       python-base = %{version}
103 Obsoletes:      pyth_cur
104 Provides:       pyth_cur
105 Summary:        Python Interface to the (N)Curses Library
106 Group:          Development/Libraries/Python
107
108 %description curses
109 An easy to use interface to the (n)curses CUI library. CUI stands for
110 Console User Interface.
111
112
113
114 Authors:
115 --------
116     Guido van Rossum <guido@python.org>
117
118 %package gdbm
119 License:        MIT License (or similar)
120 Requires:       python-base = %{version}
121 Obsoletes:      pygdmod
122 Provides:       pygdmod
123 Summary:        Python Interface to the GDBM Library
124 Group:          Development/Libraries/Python
125
126 %description gdbm
127 An easy to use interface for GDBM databases. GDBM is the GNU
128 implementation of the standard Unix DBM databases.
129
130
131
132 Authors:
133 --------
134     Guido van Rossum <guido@python.org>
135
136 %prep
137 %setup -q -n %{tarname}
138 # patching
139 %patch1 -p1
140 %patch2 -p1
141 %patch3
142 %patch4
143 %patch5
144 %patch6
145 %patch7 -p1
146 %patch9 -p1
147 %patch10 -p1
148 %patch11 -p1
149
150 # drop Autoconf version requirement
151 sed -i 's/^version_required/dnl version_required/' configure.in
152
153 %build
154 cp %{SOURCE1001} .
155 export OPT="$RPM_OPT_FLAGS"
156
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
161
162 ./configure \
163     --prefix=%{_prefix} \
164     --libdir=%{_libdir} \
165     --mandir=%{_mandir} \
166     --docdir=%{_docdir}/python \
167     --enable-ipv6 \
168     --with-fpectl \
169     --enable-shared \
170     --enable-unicode=ucs4
171
172 make %{?_smp_mflags} DESTDIR=$RPM_BUILD_ROOT
173
174 %check
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. 
178 %ifnarch  %arm
179 # Limit virtual memory to avoid spurious failures
180 if test $(ulimit -v) = unlimited || test $(ulimit -v) -gt 10000000; then
181   ulimit -v 10000000 || :
182 fi
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"
186 %endif
187
188 %install
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 ########################################
193 # install it
194 ########################################
195 make \
196     OPT="$RPM_OPT_FLAGS -fPIC" \
197     DESTDIR=$RPM_BUILD_ROOT \
198     install
199 ########################################
200 # some cleanups
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
206 done
207 # kill imageop.so, it's insecure
208 rm -f $RPM_BUILD_ROOT/%{_libdir}/python%{python_version}/lib-dynload/imageop.so
209 #cleanup for -base
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}
296
297 export PDOCS=${RPM_BUILD_ROOT}%{_docdir}/%{name}
298 install -d -m 755 $PDOCS
299
300 ########################################
301 # tools and demos
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 )
307 done
308 ########################################
309 # idle
310 ########################################
311 # move idle config into /etc
312 install -d -m755 ${RPM_BUILD_ROOT}/etc/%{idle_name}
313
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/
318     done
319 )
320 ########################################
321 # startup script
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
326
327 %clean
328 rm -rf $RPM_BUILD_ROOT
329
330 %post -p /sbin/ldconfig
331
332 %postun -p /sbin/ldconfig
333
334 %files idle
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}
346    
347 %files xml  
348 %manifest python.manifest
349 %{_libdir}/python%{python_version}/xml/*  
350 %{_libdir}/python%{python_version}/xml/*/*  
351
352 %files demo
353 %manifest python.manifest
354 %defattr(644, root, root, 755)
355 %doc %{_docdir}/%{name}/Demo
356 %doc %{_docdir}/%{name}/Tools
357
358
359 %files curses
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
365
366 %files gdbm
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
371
372 %files
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