3 # - test_pydoc fails because of PYTHONPATH override
4 # - change searchpath order so /usr/lib* is before /usr/share
5 # - kill lib-tk from searchpath
6 # - kill BR: file requirement from lib64 patch
7 # - security(CVE-2008-4108)
8 # http://securitytracker.com/alerts/2008/Sep/1020904.html
11 %bcond_with info # build info pages (requires emacs, fails in python-2.5.0)
12 %bcond_without tkinter # disables tkinter module building
13 %bcond_without tests # disables Python testing
14 %bcond_with verbose_tests # runs tests in verbose mode
15 %bcond_with openssl097 # build for openssl < 0.9.8
17 # tests which will not work on 64-bit platforms
18 %define no64bit_tests test_audioop test_rgbimg test_imageop
19 # tests which may fail because of builder environment limitations (no /proc or /dev/pts)
20 %define nobuilder_tests test_resource test_openpty test_socket test_nis test_posix test_locale test_pty test_urllib2
21 # tests which fail because of some unknown/unresolved reason (this list should be ideally just %{nil})
22 %define broken_tests test_doctest test_pydoc test_distutils test_gdb
25 %define py_prefix %{_prefix}
26 %define py_libdir %{py_prefix}/%{_lib}/python%{py_ver}
27 %define py_incdir %{_includedir}/python%{py_ver}
28 %define py_sitedir %{py_libdir}/site-packages
29 %define py_sitescriptdir %{_datadir}/python%{py_ver}/site-packages
30 %define py_dyndir %{py_libdir}/lib-dynload
32 Summary: Very high level scripting language with X interface
33 Summary(es.UTF-8): Lenguaje script de alto nivel con interfaz X
34 Summary(fr.UTF-8): Langage de script de très haut niveau avec interface X
35 Summary(pl.UTF-8): Python - język obiektowy wysokiego poziomu
36 Summary(pt_BR.UTF-8): Linguagem de programação interpretada de alto nível
37 Summary(ru.UTF-8): Язык программирования очень высокого уровня с X-интерфейсом
38 Summary(tr.UTF-8): X arayüzlü, yüksek düzeyli, kabuk yorumlayıcı dili
39 Summary(uk.UTF-8): Мова програмування дуже високого рівня з X-інтерфейсом
45 Group: Development/Languages/Python
46 Source0: https://www.python.org/ftp/python/%{version}/Python-%{version}.tar.xz
47 # Source0-md5: fd6cc8ec0a78c44036f825e739f36e5a
48 Source1: https://www.python.org/ftp/python/doc/%{version}/%{name}-%{version}-docs-html.tar.bz2
49 # Source1-md5: de2e764e4fda62e61af49df3e640fcba
50 Source2: pyconfig.h.in
51 Patch0: %{name}-db.patch
52 Patch1: %{name}-pythonpath.patch
53 Patch2: %{name}-ac_fixes.patch
54 Patch3: %{name}-multilib.patch
55 Patch4: %{name}-verbose.patch
56 Patch5: %{name}-distro.patch
57 Patch6: %{name}-DNStests.patch
58 Patch7: %{name}-install_prefix.patch
59 Patch8: %{name}-bdist_rpm.patch
60 # https://bugs.python.org/issue10496
61 Patch9: https://bugs.python.org/file21896/nonexistent_user.patch
62 # Patch9-md5: db706fbe6de467c6e4c97c675eddf29a
63 URL: https://www.python.org/
64 BuildRequires: autoconf >= 2.65
65 BuildRequires: automake
66 BuildRequires: bluez-libs-devel
67 BuildRequires: bzip2-devel
68 BuildRequires: db-devel >= 4
69 %{?with_info:BuildRequires: emacs >= 21}
70 BuildRequires: expat-devel >= 1:1.95.7
72 BuildRequires: gdbm-devel >= 1.8.3
73 BuildRequires: gmp-devel >= 4.0
74 BuildRequires: libnsl-devel
75 BuildRequires: libstdc++-devel
76 BuildRequires: libtirpc-devel
77 BuildRequires: ncurses-ext-devel >= 5.2
78 %if %{with openssl097}
79 BuildRequires: openssl-devel < 0.9.8
81 BuildRequires: openssl-devel >= 0.9.8
83 BuildRequires: pkgconfig
84 BuildRequires: readline-devel >= 5.0
85 BuildRequires: rpm-pythonprov
86 BuildRequires: sed >= 4.0
87 BuildRequires: sqlite3-devel >= 3.3.5
88 %{?with_info:BuildRequires: tetex-makeindex}
89 #%{?with_tkinter:BuildRequires: tix-devel >= 1:8.1.4-4}
90 %{?with_tkinter:BuildRequires: tk-devel >= 8.4.3}
91 BuildRequires: zlib-devel
92 Requires: %{name}-libs = %{epoch}:%{version}-%{release}
96 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
98 %if %{with verbose_tests}
99 %define test_flags -v -l -x
101 %define test_flags -w -l -x
104 %ifarch alpha ia64 ppc64 ppc64 %{x8664}
105 %define test_list %{nobuilder_tests} %{broken_tests} %{no64bit_tests}
107 %define test_list %{nobuilder_tests} %{broken_tests}
110 %ifarch sparc sparcv9
111 %define test_list %{nobuilder_tests} %{broken_tests} test_fcntl test_ioctl
115 %define test_list %{nobuilder_tests} %{broken_tests} %{no64bit_tests} test_fcntl test_ioctl
119 Python is an interpreted, interactive, object-oriented programming
120 language. It incorporates modules, exceptions, dynamic typing, very
121 high level dynamic data types, and classes. Python combines remarkable
122 power with very clear syntax. It has interfaces to many system calls
123 and libraries, as well as to various window systems, and is extensible
124 in C or C++. It is also usable as an extension language for
125 applications that need a programmable interface. Finally, Python is
126 portable: it runs on many brands of UNIX, on the Mac, and on PCs under
127 MS-DOS, Windows, Windows NT, and OS/2.
129 This package contains the Python binary.
131 %description -l de.UTF-8
132 Python ist eine interpretierte, interaktive, objektorientierte
133 Programmiersprache, vergleichbar zu Tcl, Perl, Scheme oder Java.
134 Python enthält Module, Klassen, Exceptions, High-Level dynamische
135 Datentypen und dynamisches Typisieren. Python unterstützt Interfaces
136 zu vielen Systemaufrufen und Libraries, sowie verschiedene
137 Fenstersysteme (X11, Motif, Tk, Mac und MFC)
139 Programmierer können neue built-in-Module für Python in C oder C++
140 schreiben. Python kann auch als Erweiterungssprache für Applikationen
141 benutzt werden, die ein programmierbares Interface brauchen. Dieses
142 Paket enthält die meisten Standard-Python-Module, und Module zum
143 Ansprechen von Tix (Tk-widget set) und RPM.
145 %description -l es.UTF-8
146 Python es un lenguaje de scripts interpretado orientado a objetos.
147 Contiene soporte para carga dinámica de objetos, clases, módulos y
150 Es sencillo adicionar interfaces para nuevos sistemas de biblioteca a
151 través de código C, tornando Python fácil de usar en ambientes
152 particulares/personalizados. Este paquete Python incluye la mayoría de
153 los módulos padrón Python, junto con módulos para crear interfaces
154 para el conjunto de componentes Tix para Tk y RPM.
156 %description -l fr.UTF-8
157 Python est un langage de script interprété et orienté objet. Il gère
158 le chargement dynamique des objets, les classes, les modules et les
159 exceptions. L'ajout d'interfaces aux nouvelles bibliothèques systèmes
160 avec du code C est simple, ce qui rend Python facile à utiliser dans
161 des configs personnalisées.
163 Ce paquetage Python contient la plupart des modules Python standards,
164 ainsi que ceux permettant l'interfaçage avec les widgets Tix pour Tk
167 %description -l pl.UTF-8
168 Python jest interpretowanym, interaktywnym i zorientowanym obiektowo
169 językiem programowania. Jest modularny, obsługuje wyjątki, dynamiczne
170 typy, zaawansowane dynamiczne struktury danych i klasy. Python łączy w
171 sobie duże możliwości i przejrzystą składnię. Posiada interfejsy do
172 wielu wywołań systemowych i bibliotek, w tym również do różnych
173 bibliotek okienkowych. Możliwości jego można jeszcze rozszerzać
174 poprzez odpowiednie moduły pisane w C lub C++. Python może być również
175 użyty jako element aplikacji, którym potrzebny jest interpreter do
176 skryptów. I wreszcie, Python jest wieloplatformowy, działa na wielu
177 odmianach UNIX-a, Macu oraz PC pod DOS-em, Windows, WindowsNT oraz
180 Ten pakiet zawiera binarkę Pythona.
182 %description -l pt_BR.UTF-8
183 Python é uma linguagem de scripts interpretada orientada a objetos.
184 Contém suporte para carga dinâmica de objetos, classes, módulos e
185 exceções. Adicionar interfaces para novos sistemas de biblioteca
186 através de código C é simples, tornando Python fácil de usar em
187 ambientes particulares/personalizados.
189 Este pacote Python inclui a maioria do módulos padrão Python, junto
190 com módulos para interfaceamento para o conjunto de componentes Tix
193 %description -l ru.UTF-8
194 Python - это интерпретируемый, объектно-ориентированный язык
195 программирования. Он поддерживает динамическую загрузку объектов,
196 классы, модули и обработку исключительных ситуаций (exceptions).
197 Простота добавления интерфейсов к новым системным библиотекам через
198 код на языке C делает Python хорошим выбором для использования в
199 специальных конфигурациях.
201 %description -l tr.UTF-8
202 Python, nesneye yönelik bir kabuk yorumlayıcıdır. Nesnelerin,
203 sınıfların, modüllerin ve aykırı durumların dinamik yüklenmelerine
204 destek verir. C koduyla birlikte kullanımı son derece kolaydır. Bu
205 paket, standart Python birimlerinin çoğunun yanısıra Tk ve RPM için
206 arayüz birimlerini de içerir.
208 %description -l uk.UTF-8
209 Python - це інтерпретована, об'єктно-орієнтована мова програмування.
210 Він підтримує динамічну загрузку об'єктів, класи, модулі та обробку
211 виключних ситуацій (exceptions). Простота додавання інтерфейсів для
212 нових системних бібліотек через код на мові C робить Python добрим
213 вибором для використання в спеціальних конфігураціях.
216 Summary: Python library
217 Summary(pl.UTF-8): Biblioteka języka Python
218 Group: Libraries/Python
219 # broken detection in rpm/pythondeps.sh
220 Provides: python(abi) = %{py_ver}
221 # for compatibility with existing Ac packages
222 Provides: python(bytecode) = %{py_ver}
223 %{!?with_info:Obsoletes: python-doc-info}
224 Obsoletes: python-intl
227 Python shared library and very essental modules for Python binary.
229 %description libs -l pl.UTF-8
230 Biblioteka współdzielona języka Python oraz bardzo podstawowe moduły
234 Summary: Python modules
235 Summary(pl.UTF-8): Moduły języka Python
236 Group: Libraries/Python
237 Requires: %{name}-libs = %{epoch}:%{version}-%{release}
238 Provides: python-argparse = 1.1
239 Provides: python-cElementTree
240 Provides: python-elementtree
241 Provides: pythonegg(argparse) = 1.1
242 Obsoletes: python-argparse < 1.1.99
243 Obsoletes: python-cElementTree
244 Obsoletes: python-ctypes
245 Obsoletes: python-curses
246 Obsoletes: python-elementtree
247 Obsoletes: python-gdbm
248 Obsoletes: python-hashlib
249 Obsoletes: python-logging
250 Obsoletes: python-old
251 Obsoletes: python-optik
252 Obsoletes: python-ssl
253 Obsoletes: python-xml
254 Obsoletes: python-xmlrpc <= 1.0.1
255 Obsoletes: python-zlib
256 %requires_ge_to openssl openssl-devel
259 Python officially distributed modules.
261 %description modules -l pl.UTF-8
262 Oficjalnie rozprowadzane moduły języka Python.
264 %package modules-sqlite
265 Summary: Python SQLite modules
266 Summary(pl.UTF-8): Moduły SQLite języka Python
267 Group: Libraries/Python
268 Requires: %{name}-modules = %{epoch}:%{version}-%{release}
269 Provides: python(sqlite)
271 %description modules-sqlite
272 Python officially distributed sqlite module.
274 %description modules-sqlite -l pl.UTF-8
275 Oficjalnie rozprowadzany moduł sqlite języka Python.
278 Summary: Python interactive module documentation access support
279 Summary(pl.UTF-8): Interaktywne korzystanie z dokumentacji modułów języka Python
281 Requires: %{name}-modules = %{epoch}:%{version}-%{release}
282 Obsoletes: python-pydoc
284 %description -n pydoc
285 Python interactive module documentation access support.
287 %description -n pydoc -l pl.UTF-8
288 Interaktywne korzystanie z dokumentacji modułów języka Python.
291 Summary: IDE for Python language
292 Summary(pl.UTF-8): IDE dla języka Python
293 Group: Applications/Editors
294 Requires: %{name}-tkinter = %{epoch}:%{version}-%{release}
295 Obsoletes: python-idle
298 IDE for Python language.
300 %description -n idle -l pl.UTF-8
301 IDE dla języka Python.
304 Summary: Libraries and header files for building python code
305 Summary(de.UTF-8): Libraries und Header-Dateien zum Erstellen von Python-Code
306 Summary(es.UTF-8): Bibliotecas y archivos de inclusión para construir programas en python
307 Summary(fr.UTF-8): Bibliothèques et en-têtes pour construire du code python
308 Summary(pl.UTF-8): Pliki nagłówkowe i biblioteki Pythona
309 Summary(pt_BR.UTF-8): Bibliotecas e arquivos de inclusão para o Python
310 Summary(ru.UTF-8): Библиотеки и хедеры для построения кода на языке Python
311 Summary(tr.UTF-8): Python ile geliştirme yapmak için gerekli dosyalar
312 Summary(uk.UTF-8): Бібліотеки та хедери для програмування на мові Python
313 Group: Development/Languages/Python
314 Requires: %{name}-libs = %{epoch}:%{version}-%{release}
315 Requires: %{name}-modules = %{epoch}:%{version}-%{release}
316 Obsoletes: python2-devel
319 The Python interpreter is relatively easy to extend with dynamically
320 loaded extensions and to embed in other programs. This package
321 contains the header files and libraries which are needed to do both of
324 %description devel -l de.UTF-8
325 Der Python-Interpretierer ist relativ einfach anhand von dynamisch
326 ladbaren Erweiterungen auszubauen und läßt sich in andere Programme
327 integrieren. Dieses Paket enthält die Header-Dateien und Libraries,
328 die für beide Aufgaben erforderlich sind.
330 %description devel -l es.UTF-8
331 El interpretador Python permite incluir con facilidad extensiones
332 cargadas dinámicamente. Python es también fácil de ser empotrado en
333 otros programas. Este paquete contiene los archivos de inclusión y
334 bibliotecas necesarios para estas dos tareas.
336 %description devel -l fr.UTF-8
337 L'interpréteur Python est relativement facile à étendre avec des
338 extensions chargées dynamiquement et à insérer dans d'autres
339 programmes. Ce paquetage contient les en-têtes et les bibliothèques
340 nécessaires à ces deux tâches.
342 %description devel -l pl.UTF-8
343 Interpreter Pythona jest w miarę łatwy do rozszerzania przy pomocy
344 dynamicznie ładowanych rozszerzeń napisanych w C lub C++ oraz
345 osadzania w innych programach. Ten pakiet zawiera pliki nagłówkowe i
346 wszystko inne co potrzebne do tych celów.
348 %description devel -l pt_BR.UTF-8
349 O interpretador Python permite incluir com facilidade extensões
350 carregadas dinamicamente. Python é também fácil de ser embutido em
351 outros programas. Este pacote contém os arquivos de inclusão e
352 bibliotecas necessários para estas duas tarefas.
354 %description devel -l ru.UTF-8
355 Интерпретатор Python относительно легко расширяется при помощи
356 динамически загружаемых расширений и встраивается в другие программы.
357 Этот пакет содержит хедеры и библиотеки, необходимые для обеих этих
360 %description devel -l tr.UTF-8
361 Bu paket, Python ile geliştirme yapılabilmesi için gerekli başlık
362 dosyalarını ve kitaplıkları içerir.
364 %description devel -l uk.UTF-8
365 Інтерпретатор Python відносно легко розширюється за допомогою
366 розширень з динамічною загрузкою та вбудовується в інші програми. Цей
367 пакет містить хедери та бібліотеки, необхідні для обох цих задач.
370 Summary: Python module sources
371 Summary(pl.UTF-8): Pliki źródłowe modułów Pythona
372 Group: Development/Languages/Python
373 Requires: %{name}-modules = %{epoch}:%{version}-%{release}
375 %description devel-src
376 Python module sources.
378 %description devel-src -l pl.UTF-8
379 Pliki źródłowe modułów Pythona.
382 Summary: Python development tools
383 Summary(pl.UTF-8): Narzędzia programistyczne języka Python
384 Group: Development/Languages/Python
385 Requires: %{name}-modules = %{epoch}:%{version}-%{release}
387 %description devel-tools
388 Python development tools such as profilers and debugger.
390 %description devel-tools -l pl.UTF-8
391 Narzędzia programistyczne języka Python takie jak profiler oraz
395 Summary: Automated Python 2 to 3 code translation
396 Summary(pl.UTF-8): Automatyczne tłumaczenie kodu Pythona 2 na 3
397 Group: Development/Languages/Python
400 2to3 is a Python program that reads Python 2.x source code and applies
401 a series of fixers to transform it into valid Python 3.x code. The
402 standard library contains a rich set of fixers that will handle almost
403 all code. 2to3 supporting library lib2to3 is, however, a flexible and
404 generic library, so it is possible to write your own fixers for 2to3.
405 lib2to3 could also be adapted to custom applications in which Python
406 code needs to be edited automatically.
408 %description 2to3 -l pl.UTF-8
409 2to3 to program w Pythonie czytający od źródłowy w Pythonie 2.x i
410 aplikujący serię poprawek przekształcających go w poprawny kod w
411 Pythonie 3.x. Biblioteka standardowa zawiera duży zbiór poprawek
412 obsługujących większość kodu. Biblioteka wspierająca 2to3 (lib2to3)
413 jest jednak elastyczną i ogólną biblioteką, więc można pisać własne
414 poprawki dla 2to3. lib2to3 można także zaadaptować na potrzeby
415 własnych zastosowań, w których kod w Pythonie musi być modyfikowany
419 Summary: Static python library
420 Summary(pl.UTF-8): Statyczna biblioteka Pythona
421 Group: Development/Languages/Python
422 Requires: %{name}-devel = %{epoch}:%{version}-%{release}
425 Static python library.
427 %description static -l pl.UTF-8
428 Statyczna biblioteka Pythona.
431 Summary: Documentation on Python
432 Summary(de.UTF-8): Dokumentation zu Python
433 Summary(es.UTF-8): Documentación para Python
434 Summary(fr.UTF-8): Documentation sur Python
435 Summary(pl.UTF-8): Dokumentacja do Pythona
436 Summary(pt_BR.UTF-8): Documentação para a linguagem de programação Python
437 Summary(ru.UTF-8): Документация по языку Python
438 Summary(tr.UTF-8): Python belgeleri
439 Summary(uk.UTF-8): Документація по мові Python
441 Obsoletes: python-docs
444 This package contains documentation on the Python language and
445 interpretor as a mix of plain ASCII files and LaTeX sources.
447 %description doc -l de.UTF-8
448 Dieses Paket enthält Dokumentationen zu Python (Sprache und
449 Interpreter) in Form von einfachen ASCII-Dateien und LaTeX-Quellen.
451 %description doc -l es.UTF-8
452 Documentación para Python. Contiene archivos en texto y PostScript.
454 %description doc -l fr.UTF-8
455 Ce paquetage contient la documentation sur le langage python et sur
456 son interpréteur sous forme de fichiers ASCII et LaTeX.
458 %description doc -l pl.UTF-8
459 Oficjalna dokumentacja do Pythona. Zawiera przykładowe programy,
460 narzędzia i dokumentację. Strony podręcznika man znajdują się w
461 głównym pakiecie. Ten pakiet nie zawiera źródeł dokumentacji
462 napisanych w LaTeXu, tylko gotowe do wykorzystania pliki postscriptowe
465 %description doc -l pt_BR.UTF-8
466 O pacote python-doc contém documentação para a linguagem de
467 programação e para o interpretador Python. Fornecida em arquivos texto
470 %description doc -l ru.UTF-8
471 Этот пакет содержит документацию по собственно языку Python и по
472 исполняющему его интерпретатору в виде набора текстовых файлов и
473 исходных текстов в формате LaTeX.
475 %description doc -l tr.UTF-8
476 Bu paket, Python dili ile ilgili belgeleri ve düz ASCII dosyaları ve
477 LaTeX kaynaklarının bir karışımı olan yorumlayıcıyı içerir.
479 %description doc -l uk.UTF-8
480 Цей пакет містить документацію по власне мові Python та по виконуючому
481 її інтерпретатору у вигляді набора текстових файлів та вихідних
482 текстів у форматі LaTeX.
485 Summary: Documentation on Python in texinfo format
486 Summary(pl.UTF-8): Dokumentacja do Pythona w formacie texinfo
489 %description doc-info
490 Documentation on Python in texinfo format.
492 %description doc-info -l pl.UTF-8
493 Dokumentacja do Pythona w formacie texinfo.
496 Summary: Standard Python interface to the Tk GUI toolkit
497 Summary(de.UTF-8): Grafische Tk-Schnittstelle für Python
498 Summary(es.UTF-8): Interfaz de GUI Tk para Python
499 Summary(fr.UTF-8): Interface graphique Tk pour Python
500 Summary(pl.UTF-8): Standardowy interfejs Pythona do biblioteki Tk
501 Summary(pt_BR.UTF-8): Interface GUI Tk para Phyton
502 Summary(tr.UTF-8): Python için grafik kullanıcı arayüzü
503 Group: Libraries/Python
504 Requires: %{name}-modules = %{epoch}:%{version}-%{release}
505 Requires: tcl >= 8.4.3
506 Requires: tix >= 1:8.1.4-4
507 Requires: tk >= 8.4.3
511 Standard Python interface to the Tk GUI toolkit.
513 %description tkinter -l de.UTF-8
514 Eine grafische Schnittstelle für Python, basierend auf Tcl/Tk, und von
515 vielen Konfigurations-Tools genutzt.
517 %description tkinter -l es.UTF-8
518 Una interfaz gráfica para Python, basada en Tcl/Tk, y usada por muchas
519 herramientas de configuración.
521 %description tkinter -l fr.UTF-8
522 Interface graphique pour Python, basée sur Tcl/Tk et utilisée par
523 beaucoup des outils de configuration.
525 %description tkinter -l pl.UTF-8
526 Standardowy interfejs Pythona do biblioteki Tk.
528 %description tkinter -l pt_BR.UTF-8
529 Uma interface gráfica para Python, baseada em Tcl/Tk, e usada por
530 muitas ferramentas de configuração.
532 %description tkinter -l ru.UTF-8
533 Графический интерфейс (GUI) для Python, построенный на Tcl/Tk.
535 %description tkinter -l tr.UTF-8
536 Python için Tcl/Tk'ye dayalı ve pek çok ayarlama aracı tarafından
537 kullanılan grafik bir arayüzdür.
539 %description tkinter -l uk.UTF-8
540 Графічний інтерфейс (GUI) для Python, побудований на Tcl/Tk.
543 Summary: Example programs in Python
544 Summary(pl.UTF-8): Przykładowe programy w Pythonie
545 Group: Development/Languages/Python
546 Obsoletes: python-tools
548 %description examples
549 Example programs in Python.
551 These are for Python 2.3.4, not %{version}.
553 %description examples -l pl.UTF-8
554 Przykładowe programy w Pythonie.
556 Przykłady te są dla Pythona 2.3.4, nie %{version}.
559 Summary: Python test modules
560 Summary(pl.UTF-8): Moduły testowe Pythona
561 Group: Development/Languages/Python
562 Requires: %{name}-modules = %{epoch}:%{version}-%{release}
563 Suggests: %{name}-devel-src = %{epoch}:%{version}-%{release}
568 Unit tests for Python, some may be reused for testing other Python
571 %description test -l pl.UTF-8
572 Moduły testowe Pythona.
574 Niektóre z nich mogą być używane do testowania oprogramowania
575 napisanego w Pythonie.
578 %setup -q -n Python-%{version}
592 sed -i -e 's#db_setup_debug = False#db_setup_debug = True#g' setup.py
594 # remove if Lib/plat-linux3 exists
595 [ -d Lib/plat-linux3 ] && exit 1
596 cp -a Lib/plat-linux2 Lib/plat-linux3
598 %{__sed} -i -e '1s,/usr/bin/python$,%{__python},' Lib/cgi.py
599 %{__sed} -i -e '1s,/usr/bin/env python$,%{__python},' Lib/{UserString,base64,cProfile,keyword,mimify,pdb,platform,profile,pydoc,quopri,smtpd,smtplib,symbol,tabnanny,timeit,trace,uu,webbrowser}.py
600 %{__sed} -i -e '1s,/usr/bin/env python$,%{__python},' Lib/encodings/rot_13.py
601 %{__sed} -i -e '1s,/usr/bin/env python$,%{__python},' Lib/idlelib/PyShell.py
602 %{__sed} -i -e '1s,/usr/bin/env python$,%{__python},' Lib/lib2to3/pgen2/token.py
603 %{__sed} -i -e '1s,/usr/bin/env python$,%{__python},' Lib/lib2to3/tests/{pytree_idempotency,data/different_encoding,data/false_encoding}.py
604 %{__sed} -i -e '1s,/usr/bin/env python2,%{__python},' Lib/test/bisect_cmd.py
605 %{__sed} -i -e '1s,/usr/bin/env python$,%{__python},' Lib/test/{curses_tests,pystone,re_tests,regrtest}.py
606 %{__sed} -i -e '1s,@EXENAME@,%{__python},' Misc/python-config.in
607 %{__sed} -i -e '1s,/usr/bin/env python3,%{__python3},' Tools/ssl/make_ssl_data.py
608 %{__sed} -i -e '1s,/usr/bin/python\>,%{__python},' Tools/{gdb/libpython,pybench/pybench}.py
609 grep -l '/usr/bin/env python' -r Demo Tools | xargs %{__sed} -i -e '1s,/usr/bin/env python$,%{__python},'
617 CPPFLAGS="%{rpmcppflags}" \
618 LDFLAGS="%{rpmldflags}" \
619 ac_cv_posix_semaphores_enabled=yes \
620 ac_cv_broken_sem_getvalue=no \
621 %{?with_debug:--with-pydebug} \
625 --enable-unicode=ucs4 \
627 --with-dbmliborder=gdbm:bdb \
630 %{__make} 2>&1 | awk '
631 BEGIN { fail = 0; logmsg = ""; }
633 if ($0 ~ /\*\*\* WARNING:/) {
639 END { if (fail) { print "\nPROBLEMS FOUND:"; print logmsg; exit(1); } }'
643 WITHIN_PYTHON_RPM_BUILD=1 %{__make} -j1 test \
644 TESTOPTS="%{test_flags} %{test_list}" \
645 TESTPYTHON="LD_LIBRARY_PATH=`pwd` PYTHONHOME=`pwd` PYTHONPATH=`pwd`/Lib:`pwd`/Lib/lib-tk:`pwd`/build/lib.linux-`uname -m`-%{py_ver} ./python -tt"
649 rm -rf $RPM_BUILD_ROOT
650 install -d $RPM_BUILD_ROOT{%{_bindir},%{_libdir}} \
651 $RPM_BUILD_ROOT{%{py_sitedir},%{_mandir}/man1} \
652 $RPM_BUILD_ROOT%{_prefix}/local/%{_lib}/python%{py_ver}/site-packages \
653 $RPM_BUILD_ROOT%{py_sitescriptdir} \
654 $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version} \
655 $RPM_BUILD_ROOT%{_infodir} \
656 $RPM_BUILD_ROOT%{_docdir} \
657 $RPM_BUILD_ROOT/etc/shrc.d
660 DESTDIR=$RPM_BUILD_ROOT
662 # docs in constant location
663 ln -sf python-doc-%{version} $RPM_BUILD_ROOT%{_docdir}/python-doc
666 %{__make} -C Doc/info
667 cp -p Doc/info/python*info* $RPM_BUILD_ROOT%{_infodir}
670 cp -p Makefile.pre.in $RPM_BUILD_ROOT%{py_libdir}/config
672 mv $RPM_BUILD_ROOT{%{py_libdir}/config,%{_libdir}}/libpython%{py_ver}.a
673 ln -sf libpython%{py_ver}.a $RPM_BUILD_ROOT%{_libdir}/libpython.a
674 ln -sf libpython%{py_ver}.so.1.0 $RPM_BUILD_ROOT%{_libdir}/libpython.so
675 ln -sf libpython%{py_ver}.so.1.0 $RPM_BUILD_ROOT%{_libdir}/libpython%{py_ver}.so
677 install -d $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
678 cp -a Tools Demo $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
681 # create several useful aliases, such as timeit.py, profile.py, pdb.py, smtpd.py
684 # for python devel tools
685 for script in timeit profile pdb pstats; do
686 echo alias $script.py=\"python -m ${script}\"
687 done > $RPM_BUILD_ROOT/etc/shrc.d/python-devel.sh
690 < $RPM_BUILD_ROOT/etc/shrc.d/python-devel.sh \
691 > $RPM_BUILD_ROOT/etc/shrc.d/python-devel.csh
694 for script in smtpd webbrowser; do
695 echo alias $script.py=\"python -m ${script}\"
696 done > $RPM_BUILD_ROOT/etc/shrc.d/python-modules.sh
697 %{__rm} $RPM_BUILD_ROOT%{_bindir}/smtpd.py
700 < $RPM_BUILD_ROOT/etc/shrc.d/python-modules.sh \
701 > $RPM_BUILD_ROOT/etc/shrc.d/python-modules.csh
703 # just to cut the noise, as they are not packaged (now)
704 %{__rm} $RPM_BUILD_ROOT%{py_libdir}/ctypes/macholib/fetch_macholib
705 %{__rm} $RPM_BUILD_ROOT%{py_libdir}/distutils/command/command_template
706 %{__rm} $RPM_BUILD_ROOT%{py_libdir}/distutils/command/wininst-*.exe
707 %{__rm} -r $RPM_BUILD_ROOT%{py_libdir}/idlelib/idle_test
708 %{__rm} $RPM_BUILD_ROOT%{py_libdir}/idlelib/ChangeLog
709 %{__rm} $RPM_BUILD_ROOT%{py_libdir}/idlelib/help.html
710 %{__rm} $RPM_BUILD_ROOT%{py_libdir}/idlelib/idle.pyw
711 %{__rm} -r $RPM_BUILD_ROOT%{py_libdir}/plat-*/regen
713 %{__rm} $RPM_BUILD_ROOT%{py_libdir}/pdb.doc
715 find $RPM_BUILD_ROOT%{py_libdir} -name \*.bat -exec rm {} \;
716 find $RPM_BUILD_ROOT%{py_libdir} -name \*.txt -exec rm {} \;
717 find $RPM_BUILD_ROOT%{py_libdir} -name README\* -exec rm {} \;
719 %{__mv} $RPM_BUILD_ROOT%{py_incdir}/pyconfig.h $RPM_BUILD_ROOT%{py_libdir}/config/pyconfig.h
720 sed -e's#@PREFIX@#%{_prefix}#g;s#@PY_VER@#%{py_ver}#g' %{SOURCE2} > $RPM_BUILD_ROOT%{py_incdir}/pyconfig.h
723 rm -rf $RPM_BUILD_ROOT
725 %post libs -p /sbin/ldconfig
727 %postun libs -p /sbin/ldconfig
729 %post doc-info -p /sbin/postshell
730 -/usr/sbin/fix-info-dir -c %{_infodir}
732 %postun doc-info -p /sbin/postshell
733 -/usr/sbin/fix-info-dir -c %{_infodir}
736 %defattr(644,root,root,755)
737 %attr(755,root,root) %{_bindir}/python
738 %attr(755,root,root) %{_bindir}/python2
739 %attr(755,root,root) %{_bindir}/python%{py_ver}
740 %{_mandir}/man1/python.1*
741 %{_mandir}/man1/python2.1*
744 %defattr(644,root,root,755)
746 %config(noreplace) %verify(not md5 mtime size) /etc/shrc.d/python-modules*
747 %exclude %{py_libdir}/_abcoll.py[co]
748 %exclude %{py_libdir}/abc.py[co]
749 %exclude %{py_libdir}/UserDict.py[co]
750 %exclude %{py_libdir}/codecs.py[co]
751 %exclude %{py_libdir}/copy_reg.py[co]
752 %exclude %{py_libdir}/genericpath.py[co]
753 %exclude %{py_libdir}/linecache.py[co]
754 %exclude %{py_libdir}/locale.py[co]
755 %exclude %{py_libdir}/posixpath.py[co]
756 %exclude %{py_libdir}/profile.py[co]
757 %exclude %{py_libdir}/pstats.py[co]
758 %exclude %{py_libdir}/pydoc.py[co]
759 %exclude %{py_libdir}/re.py[co]
760 %exclude %{py_libdir}/site.py[co]
761 %exclude %{py_libdir}/sre_*.py[co]
762 %exclude %{py_libdir}/stat.py[co]
763 %exclude %{py_libdir}/sysconfig.py[co]
764 %exclude %{py_libdir}/timeit.py[co]
765 %exclude %{py_libdir}/os.py[co]
766 %exclude %{py_libdir}/_weakrefset.py[co]
767 %exclude %{py_libdir}/encodings/*.py[co]
768 %exclude %{py_libdir}/types.py[co]
769 %exclude %{py_libdir}/warnings.py[co]
771 %{py_libdir}/*.py[co]
773 %{py_dyndir}/Python-%{version}-py%{py_ver}.egg-info
776 # list .so modules to be sure that all of them are built
779 # three modules below do not work on 64-bit architectures
780 # see Python README file for explanation
781 %ifnarch alpha ia64 ppc64 sparc64 %{x8664} aarch64
782 %attr(755,root,root) %{py_dyndir}/imageop.so
783 # sizeof(long) != sizeof(int), so dl module will not be built on 64-bit
785 %attr(755,root,root) %{py_dyndir}/dl.so
788 %attr(755,root,root) %{py_dyndir}/audioop.so
789 %attr(755,root,root) %{py_dyndir}/array.so
790 %attr(755,root,root) %{py_dyndir}/binascii.so
791 %attr(755,root,root) %{py_dyndir}/_bisect.so
792 %attr(755,root,root) %{py_dyndir}/_bsddb.so
793 %attr(755,root,root) %{py_dyndir}/bz2.so
794 %attr(755,root,root) %{py_dyndir}/cmath.so
795 %attr(755,root,root) %{py_dyndir}/_codecs_cn.so
796 %attr(755,root,root) %{py_dyndir}/_codecs_hk.so
797 %attr(755,root,root) %{py_dyndir}/_codecs_iso2022.so
798 %attr(755,root,root) %{py_dyndir}/_codecs_jp.so
799 %attr(755,root,root) %{py_dyndir}/_codecs_kr.so
800 %attr(755,root,root) %{py_dyndir}/_codecs_tw.so
801 %attr(755,root,root) %{py_dyndir}/_collections.so
802 %attr(755,root,root) %{py_dyndir}/cPickle.so
803 %attr(755,root,root) %{py_dyndir}/crypt.so
804 %attr(755,root,root) %{py_dyndir}/cStringIO.so
805 %attr(755,root,root) %{py_dyndir}/_csv.so
806 %attr(755,root,root) %{py_dyndir}/_ctypes*.so
807 %attr(755,root,root) %{py_dyndir}/_curses_panel.so
808 %attr(755,root,root) %{py_dyndir}/_curses.so
809 %attr(755,root,root) %{py_dyndir}/datetime.so
810 %attr(755,root,root) %{py_dyndir}/_elementtree.so
811 %attr(755,root,root) %{py_dyndir}/_functools.so
812 %attr(755,root,root) %{py_dyndir}/_hashlib.so
813 %attr(755,root,root) %{py_dyndir}/_heapq.so
814 %attr(755,root,root) %{py_dyndir}/_io.so
815 %attr(755,root,root) %{py_dyndir}/_json.so
816 %attr(755,root,root) %{py_dyndir}/_locale.so
817 %attr(755,root,root) %{py_dyndir}/_lsprof.so
818 %attr(755,root,root) %{py_dyndir}/_multibytecodec.so
819 %attr(755,root,root) %{py_dyndir}/_multiprocessing.so
820 %attr(755,root,root) %{py_dyndir}/_random.so
821 %{?with_openssl097:%attr(755,root,root) %{py_dyndir}/_sha*.so}
822 %attr(755,root,root) %{py_dyndir}/_socket.so
823 %attr(755,root,root) %{py_dyndir}/_ssl.so
824 %attr(755,root,root) %{py_dyndir}/_testcapi.so
826 %attr(755,root,root) %{py_dyndir}/dbm.so
828 %attr(755,root,root) %{py_dyndir}/fcntl.so
829 %attr(755,root,root) %{py_dyndir}/future_builtins.so
830 %attr(755,root,root) %{py_dyndir}/gdbm.so
831 %attr(755,root,root) %{py_dyndir}/grp.so
832 %attr(755,root,root) %{py_dyndir}/itertools.so
833 %attr(755,root,root) %{py_dyndir}/linuxaudiodev.so
834 %attr(755,root,root) %{py_dyndir}/math.so
835 %attr(755,root,root) %{py_dyndir}/mmap.so
836 %attr(755,root,root) %{py_dyndir}/nis.so
837 %attr(755,root,root) %{py_dyndir}/operator.so
838 %attr(755,root,root) %{py_dyndir}/ossaudiodev.so
839 %attr(755,root,root) %{py_dyndir}/parser.so
840 %attr(755,root,root) %{py_dyndir}/pyexpat.so
841 %attr(755,root,root) %{py_dyndir}/readline.so
842 %attr(755,root,root) %{py_dyndir}/resource.so
843 %attr(755,root,root) %{py_dyndir}/select.so
844 %attr(755,root,root) %{py_dyndir}/strop.so
845 %attr(755,root,root) %{py_dyndir}/syslog.so
846 %attr(755,root,root) %{py_dyndir}/termios.so
847 %attr(755,root,root) %{py_dyndir}/time.so
848 %attr(755,root,root) %{py_dyndir}/spwd.so
849 %attr(755,root,root) %{py_dyndir}/unicodedata.so
850 %attr(755,root,root) %{py_dyndir}/zlib.so
852 %dir %{py_libdir}/plat-*
853 %{py_libdir}/plat-*/*.py[co]
855 %dir %{py_libdir}/bsddb
856 %{py_libdir}/bsddb/*.py[co]
858 %dir %{py_libdir}/compiler
859 %{py_libdir}/compiler/*.py[co]
861 %dir %{py_libdir}/ctypes
862 %dir %{py_libdir}/ctypes/macholib
863 %{py_libdir}/ctypes/*.py[co]
864 %{py_libdir}/ctypes/macholib/*.py[co]
866 %dir %{py_libdir}/curses
867 %{py_libdir}/curses/*.py[co]
869 %dir %{py_libdir}/distutils
870 %dir %{py_libdir}/distutils/command
871 %{py_libdir}/distutils/*.py[co]
872 %{py_libdir}/distutils/command/*.py[co]
874 %dir %{py_libdir}/email
875 %dir %{py_libdir}/email/mime
876 %{py_libdir}/email/*.py[co]
877 %{py_libdir}/email/mime/*.py[co]
879 %dir %{py_libdir}/ensurepip
880 %{py_libdir}/ensurepip/*.py[co]
881 %{py_libdir}/ensurepip/_bundled
883 %dir %{py_libdir}/idlelib
885 %dir %{py_libdir}/importlib
886 %{py_libdir}/importlib/*.py[co]
888 %dir %{py_libdir}/json
889 %{py_libdir}/json/*.py[co]
891 %dir %{py_libdir}/logging
892 %{py_libdir}/logging/*.py[co]
894 %dir %{py_libdir}/multiprocessing
895 %dir %{py_libdir}/multiprocessing/dummy
896 %{py_libdir}/multiprocessing/*.py[co]
897 %{py_libdir}/multiprocessing/dummy/*.py[co]
899 %dir %{py_libdir}/unittest
900 %{py_libdir}/unittest/*.py[co]
901 %dir %{py_libdir}/unittest/test
902 %{py_libdir}/unittest/test/*.py[co]
904 %dir %{py_libdir}/wsgiref
905 %{py_libdir}/wsgiref/*.py[co]
906 %{py_libdir}/wsgiref.egg-info
908 %dir %{py_libdir}/xml
909 %dir %{py_libdir}/xml/dom
910 %dir %{py_libdir}/xml/etree
911 %dir %{py_libdir}/xml/parsers
912 %dir %{py_libdir}/xml/sax
913 %{py_libdir}/xml/*.py[co]
914 %{py_libdir}/xml/dom/*.py[co]
915 %{py_libdir}/xml/etree/*.py[co]
916 %{py_libdir}/xml/parsers/*.py[co]
917 %{py_libdir}/xml/sax/*.py[co]
919 %files modules-sqlite
920 %defattr(644,root,root,755)
921 %attr(755,root,root) %{py_dyndir}/_sqlite3.so
922 %dir %{py_libdir}/sqlite3
923 %{py_libdir}/sqlite3/*.py[co]
926 %defattr(644,root,root,755)
927 %attr(755,root,root) %{_libdir}/libpython%{py_ver}.so.*
931 %dir %{_datadir}/python%{py_ver}
932 %dir %{py_sitescriptdir}
935 # for locally installed packages
936 %dir %{_prefix}/local/%{_lib}/python%{py_ver}
937 %dir %{_prefix}/local/%{_lib}/python%{py_ver}/site-packages
939 # shared modules required by python library
940 %attr(755,root,root) %{py_dyndir}/_struct.so
942 # modules required by python library
943 %{py_libdir}/_abcoll.py[co]
944 %{py_libdir}/abc.py[co]
945 %{py_libdir}/UserDict.py[co]
946 %{py_libdir}/codecs.py[co]
947 %{py_libdir}/copy_reg.py[co]
948 %{py_libdir}/genericpath.py[co]
949 %{py_libdir}/linecache.py[co]
950 %{py_libdir}/locale.py[co]
951 %{py_libdir}/posixpath.py[co]
952 %{py_libdir}/re.py[co]
953 %{py_libdir}/site.py[co]
954 %{py_libdir}/sre_*.py[co]
955 %{py_libdir}/stat.py[co]
956 %{py_libdir}/sysconfig.py[co]
957 %{py_libdir}/os.py[co]
958 %{py_libdir}/_weakrefset.py[co]
959 # needed by the dynamic sys.lib patch
960 %{py_libdir}/types.py[co]
961 %{py_libdir}/warnings.py[co]
963 # encodings required by python library
964 %dir %{py_libdir}/encodings
965 %{py_libdir}/encodings/*.py[co]
967 # required by sysconfig.py
968 %dir %{py_libdir}/config
969 %{py_libdir}/config/Makefile
970 %{py_libdir}/config/pyconfig.h
972 %{py_incdir}/pyconfig.h
975 %defattr(644,root,root,755)
976 %attr(755,root,root) %{_bindir}/pydoc
977 %{py_libdir}/pydoc.py[co]
978 %dir %{py_libdir}/pydoc_data
979 %{py_libdir}/pydoc_data/*.py[co]
982 %defattr(644,root,root,755)
983 %attr(755,root,root) %{_bindir}/idle
984 %dir %{py_libdir}/idlelib/Icons
985 %{py_libdir}/idlelib/*.py[co]
986 %{py_libdir}/idlelib/Icons/*
987 %{py_libdir}/idlelib/*.def
990 %defattr(644,root,root,755)
991 %doc Misc/{ACKS,NEWS,README,README.valgrind,valgrind-python.supp}
992 %attr(755,root,root) %{_bindir}/python-config
993 %attr(755,root,root) %{_bindir}/python2-config
994 %attr(755,root,root) %{_bindir}/python%{py_ver}-config
995 %attr(755,root,root) %{_libdir}/libpython%{py_ver}.so
996 %attr(755,root,root) %{_libdir}/libpython.so
998 %exclude %{py_incdir}/pyconfig.h
999 %{_pkgconfigdir}/python.pc
1000 %{_pkgconfigdir}/python2.pc
1001 %{_pkgconfigdir}/python-%{py_ver}.pc
1003 %attr(755,root,root) %{py_libdir}/config/makesetup
1004 %attr(755,root,root) %{py_libdir}/config/install-sh
1005 %{py_libdir}/config/Makefile.pre.in
1006 %{py_libdir}/config/Setup
1007 %{py_libdir}/config/Setup.config
1008 %{py_libdir}/config/Setup.local
1009 %{py_libdir}/config/config.c
1010 %{py_libdir}/config/config.c.in
1011 %{py_libdir}/config/python.o
1014 %defattr(644,root,root,755)
1015 %attr(-,root,root) %{py_libdir}/*.py
1016 %{py_libdir}/plat-*/*.py
1017 %{py_libdir}/bsddb/*.py
1018 %{py_libdir}/ctypes/*.py
1019 %{py_libdir}/ctypes/macholib/*.py
1020 %{py_libdir}/compiler/*.py
1021 %{py_libdir}/curses/*.py
1022 %{py_libdir}/distutils/*.py
1023 %{py_libdir}/distutils/command/*.py
1024 %{py_libdir}/email/*.py
1025 %{py_libdir}/email/mime/*.py
1026 %{py_libdir}/encodings/*.py
1027 %{py_libdir}/hotshot/*.py
1028 %{py_libdir}/ensurepip/*.py
1029 %{py_libdir}/idlelib/*.py
1030 %{py_libdir}/importlib/*.py
1031 %{py_libdir}/json/*.py
1032 %{py_libdir}/lib2to3/*.py
1033 %{py_libdir}/lib2to3/fixes/*.py
1034 %{py_libdir}/lib2to3/pgen2/*.py
1035 %{py_libdir}/logging/*.py
1036 %{py_libdir}/multiprocessing/*.py
1037 %{py_libdir}/multiprocessing/dummy/*.py
1038 %{py_libdir}/pydoc_data/*.py
1039 %{py_libdir}/sqlite3/*.py
1040 %{py_libdir}/unittest/*.py
1041 %{py_libdir}/unittest/test/*.py
1042 %{py_libdir}/wsgiref/*.py
1043 %{py_libdir}/xml/*.py
1044 %{py_libdir}/xml/dom/*.py
1045 %{py_libdir}/xml/etree/*.py
1046 %{py_libdir}/xml/parsers/*.py
1047 %{py_libdir}/xml/sax/*.py
1050 %defattr(644,root,root,755)
1051 %config(noreplace) %verify(not md5 mtime size) /etc/shrc.d/python-devel*
1053 %attr(755,root,root) %{py_dyndir}/_hotshot.so
1054 %dir %{py_libdir}/hotshot
1055 %{py_libdir}/hotshot/*.py[co]
1056 %{py_libdir}/profile.py[co]
1057 %{py_libdir}/pstats.py[co]
1058 %{py_libdir}/timeit.py[co]
1061 %defattr(644,root,root,755)
1062 %attr(755,root,root) %{_bindir}/2to3
1063 %dir %{py_libdir}/lib2to3
1064 %dir %{py_libdir}/lib2to3/fixes
1065 %dir %{py_libdir}/lib2to3/pgen2
1066 %{py_libdir}/lib2to3/*.py[co]
1067 %{py_libdir}/lib2to3/*.pickle
1068 %{py_libdir}/lib2to3/fixes/*.py[co]
1069 %{py_libdir}/lib2to3/pgen2/*.py[co]
1072 %defattr(644,root,root,755)
1073 %{_libdir}/libpython%{py_ver}.a
1074 %{_libdir}/libpython.a
1077 %defattr(644,root,root,755)
1078 %{_examplesdir}/%{name}-%{version}
1081 %defattr(644,root,root,755)
1083 %{py_libdir}/bsddb/test
1084 %{py_libdir}/ctypes/test
1085 %{py_libdir}/distutils/tests
1086 %{py_libdir}/email/test
1087 %{py_libdir}/sqlite3/test
1088 %{py_libdir}/json/tests
1089 %{py_libdir}/lib2to3/tests
1092 %defattr(644,root,root,755)
1093 %doc python-%{version}-docs-html/*
1094 %{_docdir}/python-doc
1098 %defattr(644,root,root,755)
1104 %defattr(644,root,root,755)
1106 %attr(755,root,root) %{py_dyndir}/_tkinter.so