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

Last change on this file since 623 was 623, checked in by Yuri Dario, 10 years ago

spec: ash, fix typo. fixes ticket#157.

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