source: spec/trunk/SPECS/python.spec@ 405

Last change on this file since 405 was 405, checked in by Yuri Dario, 11 years ago

spec: update to python 2.7.6.

  • Property svn:eol-style set to native
File size: 16.6 KB
Line 
1%{!?__python_ver:%global __python_ver EMPTY}
2#global __python_ver 2.7
3%global unicode ucs4
4
5%global _default_patch_fuzz 2
6
7%if "%{__python_ver}" != "EMPTY"
8%global main_python 0
9%global python python%{__python_ver}
10%global tkinter tkinter%{__python_ver}
11%else
12%global main_python 1
13%global python python
14%global tkinter tkinter
15%endif
16
17%global pybasever 2.7
18%global pybasever_cond 27
19%global pylibdir %{_libdir}/python%{pybasever}
20%global tools_dir %{pylibdir}/Tools
21%global demo_dir %{pylibdir}/Demo
22%global doc_tools_dir %{pylibdir}/Doc/tools
23%global dynload_dir %{pylibdir}/lib-dynload
24%global site_packages %{pylibdir}/site-packages
25
26%global with_gdb_hooks 0
27
28%global with_systemtap 0
29
30%global with_valgrind 0
31
32# Some of the files below /usr/lib/pythonMAJOR.MINOR/test (e.g. bad_coding.py)
33# are deliberately invalid, leading to SyntaxError exceptions if they get
34# byte-compiled.
35#
36# These errors are ignored by the normal python build, and aren't normally a
37# problem in the buildroots since /usr/bin/python isn't present.
38#
39# However, for the case where we're rebuilding the python srpm on a machine
40# that does have python installed we need to set this to avoid
41# brp-python-bytecompile treating these as fatal errors:
42#
43%global _python_bytecompile_errors_terminate_build 0
44
45Summary: An interpreted, interactive, object-oriented programming language
46Name: %{python}
47Version: 2.7.6
48Release: 10%{?dist}
49License: Python
50Group: Development/Languages
51Provides: python-abi = %{pybasever}
52Provides: python(abi) = %{pybasever}
53Source: http://www.python.org/ftp/python/%{version}/Python-%{version}.tar.xz
54
55Patch0: Python-%{version}-os2.diff
56Patch1: Python-%{version}-os2knix.diff
57
58%if %{main_python}
59Obsoletes: Distutils
60Provides: Distutils
61Obsoletes: python2
62Provides: python2 = %{version}
63Obsoletes: python-elementtree <= 1.2.6
64Obsoletes: python-sqlite < 2.3.2
65Provides: python-sqlite = 2.3.2
66Obsoletes: python-ctypes < 1.0.1
67Provides: python-ctypes = 1.0.1
68Obsoletes: python-hashlib < 20081120
69Provides: python-hashlib = 20081120
70Obsoletes: python-uuid < 1.31
71Provides: python-uuid = 1.31
72%endif
73
74# YD unix adds this automatically by parsing elf binaries
75Requires: %{name}-libs = %{version}-%{release}
76Requires: pthread
77Requires: gettext-libs
78
79BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
80#BuildRequires: readline-devel, openssl-devel, gmp-devel
81BuildRequires: readline-devel, openssl-devel
82#BuildRequires: gdbm-devel, zlib-devel, expat-devel
83BuildRequires: ncurses-devel, zlib-devel
84#BuildRequires: libGL-devel tk tix gcc-c++ libX11-devel glibc-devel
85#BuildRequires: tar findutils pkgconfig tcl-devel tk-devel
86BuildRequires: bzip2 pkgconfig tcl-devel
87#BuildRequires: tix-devel
88BuildRequires: bzip2-devel sqlite-devel
89#BuildRequires: autoconf
90BuildRequires: db4-devel >= 4.8
91#BuildRequires: libffi-devel
92%if 0%{?with_valgrind}
93BuildRequires: valgrind-devel
94%endif
95
96%if 0%{?with_systemtap}
97BuildRequires: systemtap-sdt-devel
98%global tapsetdir /usr/share/systemtap/tapset
99%endif
100
101URL: http://www.python.org/
102
103%description
104Python is an interpreted, interactive, object-oriented programming
105language often compared to Tcl, Perl, Scheme or Java. Python includes
106modules, classes, exceptions, very high level dynamic data types and
107dynamic typing. Python supports interfaces to many system calls and
108libraries, as well as to various windowing systems (X11, Motif, Tk,
109Mac and MFC).
110
111Programmers can write new built-in modules for Python in C or C++.
112Python can be used as an extension language for applications that need
113a programmable interface. This package contains most of the standard
114Python modules, as well as modules for interfacing to the Tix widget
115set for Tk and RPM.
116
117Note that documentation for Python is provided in the python-docs
118package.
119
120%package common
121Summary: An interpreted, interactive, object-oriented programming language
122Group: Development/Languages
123
124%description common
125Only binary files without versioned name. Allows multiple installations.
126
127%package libs
128Summary: The libraries for python runtime
129Group: Applications/System
130Requires: %{name} = %{version}-%{release}
131# Needed for ctypes, to load libraries, worked around for Live CDs size
132# Requires: binutils
133
134%description libs
135The python interpreter can be embedded into applications wanting to
136use python as an embedded scripting language. The python-libs package
137provides the libraries needed for this.
138
139%package devel
140Summary: The libraries and header files needed for Python development
141Group: Development/Libraries
142Requires: %{python}%{?_isa} = %{version}-%{release}
143# Needed here because of the migration of Makefile from -devel to the main
144# package
145Conflicts: %{python} < %{version}-%{release}
146%if %{main_python}
147Obsoletes: python2-devel
148Provides: python2-devel = %{version}-%{release}
149%endif
150
151%description devel
152The Python programming language's interpreter can be extended with
153dynamically loaded extensions and can be embedded in other programs.
154This package contains the header files and libraries needed to do
155these types of tasks.
156
157Install python-devel if you want to develop Python extensions. The
158python package will also need to be installed. You'll probably also
159want to install the python-docs package, which contains Python
160documentation.
161
162%package tools
163Summary: A collection of development tools included with Python
164Group: Development/Tools
165Requires: %{name} = %{version}-%{release}
166Requires: %{tkinter} = %{version}-%{release}
167%if %{main_python}
168Obsoletes: python2-tools
169Provides: python2-tools = %{version}
170%endif
171
172%description tools
173This package includes several tools to help with the development of Python
174programs, including IDLE (an IDE with editing and debugging facilities), a
175color editor (pynche), and a python gettext program (pygettext.py).
176
177%package -n %{tkinter}
178Summary: A graphical user interface for the Python scripting language
179Group: Development/Languages
180#BuildRequires: tcl, tk
181Requires: %{name} = %{version}-%{release}
182%if %{main_python}
183Obsoletes: tkinter2
184Provides: tkinter2 = %{version}
185%endif
186
187%description -n %{tkinter}
188
189The Tkinter (Tk interface) program is an graphical user interface for
190the Python scripting language.
191
192You should install the tkinter package if you'd like to use a graphical
193user interface for Python programming.
194
195%package test
196Summary: The test modules from the main python package
197Group: Development/Languages
198Requires: %{name} = %{version}-%{release}
199
200%description test
201
202The test modules from the main python package: %{name}
203These have been removed to save space, as they are never or almost
204never used in production.
205
206You might want to install the python-test package if you're developing python
207code that uses more than just unittest and/or test_support.py.
208
209%package debug
210Summary: HLL debug data for exception handling support.
211
212%description debug
213HLL debug data for exception handling support.
214
215%prep
216%setup -q -n Python-%{version}
217
218%if 0%{?with_systemtap}
219# Provide an example of usage of the tapset:
220cp -a %{SOURCE4} .
221cp -a %{SOURCE5} .
222%endif # with_systemtap
223
224# Ensure that we're using the system copy of various libraries, rather than
225# copies shipped by upstream in the tarball:
226# Remove embedded copy of expat:
227#rm -r Modules/expat || exit 1
228# Remove embedded copy of libffi:
229#for SUBDIR in darwin libffi libffi_arm_wince libffi_msvc libffi_osx ; do
230# rm -r Modules/_ctypes/$SUBDIR || exit 1 ;
231#done
232# Remove embedded copy of zlib:
233#rm -r Modules/zlib || exit 1
234
235#
236# Apply patches:
237#
238%patch0 -p1 -b .os2~
239%patch1 -p1 -b .os2knix~
240
241mkdir Lib/plat-os2knix
242
243# This shouldn't be necesarry, but is right now (2.2a3)
244find -name "*~" |xargs rm -f
245
246%build
247export CONFIG_SHELL="/@unixroot/usr/bin/sh.exe"
248export SHELL=$CONFIG_SHELL
249export EMXSHELL=$CONFIG_SHELL
250export MAKESHELL=$CONFIG_SHELL
251
252export LDFLAGS="-Zbin-files -Zhigh-mem -Zomf -Zargs-wild -Zargs-resp"
253export LIBS="-lssl -lcrypto -lurpo -lmmap -lpthread -lintl"
254%configure \
255 --enable-shared --disable-static \
256 --with-system-ffi --with-libs='-lmmap' \
257 "--cache-file=%{_topdir}/cache/%{name}-%{_target_cpu}.cache"
258
259make OPT="$CFLAGS" %{?_smp_mflags}
260
261%install
262rm -rf %{buildroot}
263mkdir -p %{buildroot}%{_prefix} %{buildroot}%{_mandir}
264
265make install DESTDIR=%{buildroot}
266
267# YD fix binaries
268cp %{buildroot}%{_bindir}/python.exe %{buildroot}%{_bindir}/python
269rm -f %{buildroot}%{_bindir}/python%{pybasever_cond}.dll
270
271# Junk, no point in putting in -test sub-pkg
272rm -f %{buildroot}/%{pylibdir}/idlelib/testcode.py*
273
274# don't include tests that are run at build time in the package
275# This is documented, and used: rhbz#387401
276if /bin/false; then
277 # Move this to -test subpackage.
278mkdir save_bits_of_test
279for i in test_support.py __init__.py; do
280 cp -a %{buildroot}/%{pylibdir}/test/$i save_bits_of_test
281done
282rm -rf %{buildroot}/%{pylibdir}/test
283mkdir %{buildroot}/%{pylibdir}/test
284cp -a save_bits_of_test/* %{buildroot}/%{pylibdir}/test
285fi
286
287#%if %{main_python}
288#ln -s python %{buildroot}%{_bindir}/python2
289#%else
290#mv %{buildroot}%{_bindir}/python %{buildroot}%{_bindir}/%{python}
291#mv %{buildroot}/%{_mandir}/man1/python.1 %{buildroot}/%{_mandir}/man1/python%{pybasever}.1
292#%endif
293
294# tools
295
296mkdir -p ${RPM_BUILD_ROOT}%{site_packages}
297
298#gettext
299install -m755 Tools/i18n/pygettext.py %{buildroot}%{_bindir}/
300install -m755 Tools/i18n/msgfmt.py %{buildroot}%{_bindir}/
301
302# Useful development tools
303install -m755 -d %{buildroot}%{tools_dir}/scripts
304install Tools/README %{buildroot}%{tools_dir}/
305install Tools/scripts/*py %{buildroot}%{tools_dir}/scripts/
306
307# Documentation tools
308install -m755 -d %{buildroot}%{doc_tools_dir}
309#install -m755 Doc/tools/mkhowto %{buildroot}%{doc_tools_dir}
310
311# Useful demo scripts
312install -m755 -d %{buildroot}%{demo_dir}
313cp -ar Demo/* %{buildroot}%{demo_dir}
314
315# Get rid of crap
316find %{buildroot}/ -name "*~"|xargs rm -f
317find %{buildroot}/ -name ".cvsignore"|xargs rm -f
318find . -name "*~"|xargs rm -f
319find . -name ".cvsignore"|xargs rm -f
320#zero length
321rm -f %{buildroot}%{site_packages}/modulator/Templates/copyright
322
323rm -f %{buildroot}%{pylibdir}/LICENSE.txt
324
325
326#make the binaries install side by side with the main python
327#%if !%{main_python}
328#pushd %{buildroot}%{_bindir}
329#mv idle idle%{__python_ver}
330#mv modulator modulator%{__python_ver}
331#mv pynche pynche%{__python_ver}
332#mv pygettext.py pygettext%{__python_ver}.py
333#mv msgfmt.py msgfmt%{__python_ver}.py
334#mv smtpd.py smtpd%{__python_ver}.py
335#mv pydoc pydoc%{__python_ver}
336#popd
337#%endif
338
339# Fix for bug #136654
340rm -f %{buildroot}%{pylibdir}/email/test/data/audiotest.au %{buildroot}%{pylibdir}/test/audiotest.au
341
342%global _pyconfig_h pyconfig.h
343
344# Get rid of egg-info files (core python modules are installed through rpms)
345rm %{buildroot}%{pylibdir}/*.egg-info
346
347%clean
348rm -fr %{buildroot}
349
350#%post libs -p /sbin/ldconfig
351
352#%postun libs -p /sbin/ldconfig
353
354
355%post
356if [ "$1" = 1 ] ; then
357#execute only on first install
358%cube {DELLINE "SET PYTHONPATH="} c:\config.sys > NUL
359%cube {DELLINE "SET PYTHONHOME="} c:\config.sys > NUL
360fi
361
362
363%files
364%defattr(-, root, root, -)
365%doc LICENSE README
366%{_bindir}/pydoc*
367%{_bindir}/python
368%{_bindir}/python.exe
369%{_bindir}/python2.exe
370%if %{main_python}
371#%{_bindir}/python2
372%endif
373%{_bindir}/python%{pybasever}.exe
374%{_mandir}/*/*
375%exclude %{_bindir}/*.dbg
376
377%dir %{pylibdir}
378%dir %{dynload_dir}
379%{dynload_dir}/Python-%{version}-py%{pybasever}.egg-info
380%{dynload_dir}/_bisect.pyd
381%{dynload_dir}/_bsddb.pyd
382#%{dynload_dir}/_bytesio.pyd
383%{dynload_dir}/_codecs_.pyd
384#%{dynload_dir}/_codecs_hk.pyd
385#%{dynload_dir}/_codecs_iso2022.pyd
386#%{dynload_dir}/_codecs_jp.pyd
387#%{dynload_dir}/_codecs_kr.pyd
388#%{dynload_dir}/_codecs_tw.pyd
389%{dynload_dir}/_collect.pyd
390%{dynload_dir}/_csv.pyd
391%{dynload_dir}/_ctypes.pyd
392%{dynload_dir}/_curses.pyd
393%{dynload_dir}/_curses_.pyd
394%{dynload_dir}/_element.pyd
395#%{dynload_dir}/_fileio.pyd
396#%{dynload_dir}/_functoo.pyd
397%{dynload_dir}/_hashlib.pyd
398%{dynload_dir}/_heapq.pyd
399%{dynload_dir}/_hotshot.pyd
400%{dynload_dir}/_io.pyd
401%{dynload_dir}/_json.pyd
402#%{dynload_dir}/_locale.pyd
403%{dynload_dir}/_lsprof.pyd
404#%{dynload_dir}/_md5.pyd
405%{dynload_dir}/_multiby.pyd
406%{dynload_dir}/_multipr.pyd
407%{dynload_dir}/_random.pyd
408#%{dynload_dir}/_sha256.pyd
409#%{dynload_dir}/_sha512.pyd
410#%{dynload_dir}/_sha.pyd
411%{dynload_dir}/_socket.pyd
412%{dynload_dir}/_sqlite3.pyd
413%{dynload_dir}/_ssl.pyd
414%{dynload_dir}/_struct.pyd
415#%{dynload_dir}/_weakref.pyd
416%{dynload_dir}/array.pyd
417%{dynload_dir}/audioop.pyd
418%{dynload_dir}/binascii.pyd
419%{dynload_dir}/bz2.pyd
420%{dynload_dir}/cPickle.pyd
421%{dynload_dir}/cStringI.pyd
422%{dynload_dir}/cmath.pyd
423%{dynload_dir}/crypt.pyd
424%{dynload_dir}/datetime.pyd
425%{dynload_dir}/dbm.pyd
426%{dynload_dir}/dl.pyd
427%{dynload_dir}/fcntl.pyd
428%{dynload_dir}/future_b.pyd
429#%{dynload_dir}/gdbm.pyd
430%{dynload_dir}/grp.pyd
431%{dynload_dir}/imageop.pyd
432%{dynload_dir}/itertool.pyd
433#%{dynload_dir}/linuxaudiodev.pyd
434%{dynload_dir}/math.pyd
435#%{dynload_dir}/mmap.pyd
436#%{dynload_dir}/nis.pyd
437#%{dynload_dir}/operator.pyd
438#%{dynload_dir}/ossaudiodev.pyd
439%{dynload_dir}/parser.pyd
440%{dynload_dir}/pyexpat.pyd
441%{dynload_dir}/readline.pyd
442%{dynload_dir}/resource.pyd
443%{dynload_dir}/select.pyd
444#%{dynload_dir}/spwd.pyd
445%{dynload_dir}/strop.pyd
446%{dynload_dir}/syslog.pyd
447%{dynload_dir}/termios.pyd
448%{dynload_dir}/time.pyd
449#%{dynload_dir}/timing.pyd
450%{dynload_dir}/unicoded.pyd
451#%{dynload_dir}/xxsubtype.pyd
452%{dynload_dir}/zlib.pyd
453
454%dir %{site_packages}
455%{site_packages}/README
456%{pylibdir}/*.py*
457%{pylibdir}/*.doc
458%dir %{pylibdir}/bsddb
459%{pylibdir}/bsddb/*.py*
460%{pylibdir}/compiler
461%dir %{pylibdir}/ctypes
462%{pylibdir}/ctypes/*.py*
463%{pylibdir}/ctypes/macholib
464%{pylibdir}/curses
465%dir %{pylibdir}/distutils
466%{pylibdir}/distutils/*.py*
467%{pylibdir}/distutils/README
468%{pylibdir}/distutils/command
469%dir %{pylibdir}/email
470%{pylibdir}/email/*.py*
471%{pylibdir}/email/mime
472%{pylibdir}/encodings
473%{pylibdir}/hotshot
474%{pylibdir}/idlelib
475%{pylibdir}/importlib
476%dir %{pylibdir}/json
477%{pylibdir}/json/*.py*
478%{pylibdir}/lib2to3
479%{pylibdir}/logging
480%{pylibdir}/multiprocessing
481%{pylibdir}/plat-os2knix
482%{pylibdir}/pydoc_data
483%dir %{pylibdir}/sqlite3
484%{pylibdir}/sqlite3/*.py*
485%dir %{pylibdir}/test
486%{pylibdir}/test/test_support.py*
487%{pylibdir}/test/__init__.py*
488%{pylibdir}/wsgiref
489%{pylibdir}/xml
490
491# "Makefile" and the config-32/64.h file are needed by
492# distutils/sysconfig.py:_init_posix(), so we include them in the core
493# package, along with their parent directories (bug 531901):
494%dir %{pylibdir}/config
495%{pylibdir}/config/Makefile
496%dir %{_includedir}/python%{pybasever}
497%{_includedir}/python%{pybasever}/%{_pyconfig_h}
498
499%files libs
500%defattr(-,root,root,-)
501#%doc LICENSE README
502%{_libdir}/python%{pybasever_cond}.dll
503%if 0%{?with_systemtap}
504%{tapsetdir}/%{libpython_stp}
505%doc systemtap-example.stp pyfuntop.stp
506%endif
507%exclude %{_libdir}/*.dbg
508
509%files devel
510%defattr(-,root,root,-)
511%{pylibdir}/config/*
512%exclude %{pylibdir}/config/Makefile
513%{_includedir}/python%{pybasever}/*.h
514%exclude %{_includedir}/python%{pybasever}/%{_pyconfig_h}
515%doc Misc/README.valgrind Misc/valgrind-python.supp Misc/gdbinit
516%if %{main_python}
517%{_bindir}/python-config
518%endif
519%{_bindir}/python*-config
520#%{_libdir}/libpython%{pybasever}.pyd
521%{_libdir}/python%{pybasever}_dll.a
522%{_libdir}/pkgconfig
523
524%files tools
525%defattr(-,root,root,755)
526#%doc Tools/modulator/README.modulator
527#%doc Tools/pynche/README.pynche
528#%{site_packages}/modulator
529#%{site_packages}/pynche
530%{_bindir}/smtpd*.py*
531%{_bindir}/2to3*
532%{_bindir}/idle*
533#%{_bindir}/modulator*
534#%{_bindir}/pynche*
535%{_bindir}/pygettext*.py*
536%{_bindir}/msgfmt*.py*
537%{tools_dir}
538%{demo_dir}
539%{pylibdir}/Doc
540
541%files -n %{tkinter}
542%defattr(-,root,root,755)
543%{pylibdir}/lib-tk
544#%{dynload_dir}/_tkinter.pyd
545
546%files test
547%defattr(-, root, root, -)
548%{pylibdir}/bsddb/test
549%{pylibdir}/ctypes/test
550%{pylibdir}/distutils/tests
551%{pylibdir}/email/test
552%{pylibdir}/json/tests
553%{pylibdir}/sqlite3/test
554%{pylibdir}/test/*
555%{pylibdir}/unittest/*
556# These two are shipped in the main subpackage:
557%exclude %{pylibdir}/test/test_support.py*
558%exclude %{pylibdir}/test/__init__.py*
559%{dynload_dir}/_ctypes_.pyd
560%{dynload_dir}/_testcap.pyd
561
562# We put the debug-gdb.py file inside /usr/lib/debug to avoid noise from
563# ldconfig (rhbz:562980).
564#
565# The /usr/lib/rpm/redhat/macros defines %__debug_package to use
566# debugfiles.list, and it appears that everything below /usr/lib/debug and
567# (/usr/src/debug) gets added to this file (via LISTFILES) in
568# /usr/lib/rpm/find-debuginfo.sh
569#
570# Hence by installing it below /usr/lib/debug we ensure it is added to the
571# -debuginfo subpackage
572# (if it doesn't, then the rpmbuild ought to fail since the debug-gdb.py
573# payload file would be unpackaged)
574
575%files debug
576%defattr(-,root,root)
577%{_bindir}/*.dbg
578%{_libdir}/*.dbg
579
580%changelog
581* Mon Apr 07 2014 yd
582- build for python 2.7.
583
584* Sat Mar 15 2014 yd
585- r385 and others, added support for virtualenv.
586- added debug package with symbolic info for exceptq.
587
588* Wed Jun 05 2013 yd
589- r348, add samefile, sameopenfile, samestat to os.path module.
590
591* Thu Dec 27 2012 yd
592- fix local/bin requirements for python-tools.
593
594* Mon Jan 16 2012 yd
595- rebuild with libc 0.6.4 runtime.
Note: See TracBrowser for help on using the repository browser.