3 # - test_distutils fails for unknown reason: (does it still do with new lib64 patch?)
4 # AssertionError: '/tmp/tmpaomC0l/installation/share/python' != '/tmp/tmpaomC0l/installation/lib/python'
5 # - test_pydoc fails because of PYTHONPATH override
6 # - change searchpath order so /usr/lib* is before /usr/share
7 # - kill lib-tk from searchpath
8 # - kill BR: file requirement from lib64 patch
9 # - security(CVE-2008-4108)
10 # http://securitytracker.com/alerts/2008/Sep/1020904.html
13 %bcond_with info # build info pages (requires emacs, fails in python-2.5.0)
14 %bcond_without tkinter # disables tkinter module building
15 %bcond_without tests # disables Python testing
16 %bcond_with verbose_tests # runs tests in verbose mode
17 %bcond_with openssl097
19 # tests which will not work on 64-bit platforms
20 %define no64bit_tests test_audioop test_rgbimg test_imageop
21 # tests which may fail because of builder environment limitations (no /proc or /dev/pts)
22 %define nobuilder_tests test_resource test_openpty test_socket test_nis test_posix test_locale test_pty test_urllib2
23 # tests which fail because of some unknown/unresolved reason (this list should be empty)
24 %define broken_tests test_anydbm test_bsddb test_re test_shelve test_whichdb test_zipimport test_distutils test_pydoc test_file test_file2k test_gdb test_ioctl
29 %define py_prefix %{_prefix}
30 %define py_libdir %{py_prefix}/%{_lib}/python%{py_ver}
31 %define py_incdir %{_includedir}/python%{py_ver}
32 %define py_sitedir %{py_libdir}/site-packages
33 %define py_sitescriptdir %{_datadir}/python%{py_ver}/site-packages
34 %define py_dyndir %{py_libdir}/lib-dynload
36 %define dver %{version}
37 Summary: Very high level scripting language with X interface
38 Summary(es.UTF-8): Lenguaje script de alto nivel con interfaz X
39 Summary(fr.UTF-8): Langage de script de très haut niveau avec interface X
40 Summary(pl.UTF-8): Python - język obiektowy wysokiego poziomu
41 Summary(pt_BR.UTF-8): Linguagem de programação interpretada de alto nível
42 Summary(ru.UTF-8): Язык программирования очень высокого уровня с X-интерфейсом
43 Summary(tr.UTF-8): X arayüzlü, yüksek düzeyli, kabuk yorumlayıcı dili
44 Summary(uk.UTF-8): Мова програмування дуже високого рівня з X-інтерфейсом
50 Group: Development/Languages/Python
51 Source0: http://www.python.org/ftp/python/%{version}/Python-%{version}%{beta}.tar.xz
52 # Source0-md5: c685ef0b8e9f27b5e3db5db12b268ac6
53 Source1: http://www.python.org/ftp/python/doc/%{dver}/%{name}-%{dver}-docs-html.tar.bz2
54 # Source1-md5: 545fef39b52b15641f6936c623150c63
55 Source2: pyconfig.h.in
56 Patch0: %{name}-db.patch
57 Patch1: %{name}-pythonpath.patch
58 Patch2: %{name}-ac_fixes.patch
59 Patch3: %{name}-multilib.patch
60 Patch4: %{name}-verbose.patch
61 Patch5: %{name}-distro.patch
62 Patch6: %{name}-DNStests.patch
63 Patch7: %{name}-install_prefix.patch
64 URL: http://www.python.org/
65 BuildRequires: autoconf >= 2.65
66 BuildRequires: automake
67 BuildRequires: bluez-libs-devel
68 BuildRequires: bzip2-devel
69 BuildRequires: db-devel >= 4
70 %{?with_info:BuildRequires: emacs >= 21}
71 BuildRequires: expat-devel >= 1:1.95.7
73 BuildRequires: gdbm-devel >= 1.8.3
74 BuildRequires: gmp-devel >= 4.0
75 BuildRequires: libstdc++-devel
76 BuildRequires: ncurses-ext-devel >= 5.2
77 BuildRequires: pkgconfig
78 %if %{with openssl097}
79 BuildRequires: openssl-devel < 0.9.8
81 BuildRequires: openssl-devel >= 0.9.8
83 BuildRequires: readline-devel >= 5.0
84 BuildRequires: rpm-pythonprov
85 BuildRequires: sed >= 4.0
86 BuildRequires: sqlite3-devel >= 3.3.5
87 %{?with_info:BuildRequires: tetex-makeindex}
88 #%{?with_tkinter:BuildRequires: tix-devel >= 1:8.1.4-4}
89 %{?with_tkinter:BuildRequires: tk-devel >= 8.4.3}
90 BuildRequires: zlib-devel
91 Requires: %{name}-libs = %{epoch}:%{version}-%{release}
95 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
97 %if %{with verbose_tests}
98 %define test_flags -v -l -x
100 %define test_flags -w -l -x
103 %ifarch alpha ia64 ppc64 ppc64 %{x8664}
104 %define test_list %{nobuilder_tests} %{broken_tests} %{no64bit_tests}
106 %define test_list %{nobuilder_tests} %{broken_tests}
109 %ifarch sparc sparcv9
110 %define test_list %{nobuilder_tests} %{broken_tests} test_fcntl test_ioctl
114 %define test_list %{nobuilder_tests} %{broken_tests} %{no64bit_tests} test_fcntl test_ioctl
118 Python is an interpreted, interactive, object-oriented programming
119 language. It incorporates modules, exceptions, dynamic typing, very
120 high level dynamic data types, and classes. Python combines remarkable
121 power with very clear syntax. It has interfaces to many system calls
122 and libraries, as well as to various window systems, and is extensible
123 in C or C++. It is also usable as an extension language for
124 applications that need a programmable interface. Finally, Python is
125 portable: it runs on many brands of UNIX, on the Mac, and on PCs under
126 MS-DOS, Windows, Windows NT, and OS/2.
128 This package contains the Python binary.
130 %description -l de.UTF-8
131 Python ist eine interpretierte, interaktive, objektorientierte
132 Programmiersprache, vergleichbar zu Tcl, Perl, Scheme oder Java.
133 Python enthält Module, Klassen, Exceptions, High-Level dynamische
134 Datentypen und dynamisches Typisieren. Python unterstützt Interfaces
135 zu vielen Systemaufrufen und Libraries, sowie verschiedene
136 Fenstersysteme (X11, Motif, Tk, Mac und MFC)
138 Programmierer können neue built-in-Module für Python in C oder C++
139 schreiben. Python kann auch als Erweiterungssprache für Applikationen
140 benutzt werden, die ein programmierbares Interface brauchen. Dieses
141 Paket enthält die meisten Standard-Python-Module, und Module zum
142 Ansprechen von Tix (Tk-widget set) und RPM.
144 %description -l es.UTF-8
145 Python es un lenguaje de scripts interpretado orientado a objetos.
146 Contiene soporte para carga dinámica de objetos, clases, módulos y
149 Es sencillo adicionar interfaces para nuevos sistemas de biblioteca a
150 través de código C, tornando Python fácil de usar en ambientes
151 particulares/personalizados. Este paquete Python incluye la mayoría de
152 los módulos padrón Python, junto con módulos para crear interfaces
153 para el conjunto de componentes Tix para Tk y RPM.
155 %description -l fr.UTF-8
156 Python est un langage de script interprété et orienté objet. Il gère
157 le chargement dynamique des objets, les classes, les modules et les
158 exceptions. L'ajout d'interfaces aux nouvelles bibliothèques systèmes
159 avec du code C est simple, ce qui rend Python facile à utiliser dans
160 des configs personnalisées.
162 Ce paquetage Python contient la plupart des modules Python standards,
163 ainsi que ceux permettant l'interfaçage avec les widgets Tix pour Tk
166 %description -l pl.UTF-8
167 Python jest interpretowanym, interaktywnym i zorientowanym obiektowo
168 językiem programowania. Jest modularny, obsługuje wyjątki, dynamiczne
169 typy, zaawansowane dynamiczne struktury danych i klasy. Python łączy w
170 sobie duże możliwości i przejrzystą składnię. Posiada interfejsy do
171 wielu wywołań systemowych i bibliotek, w tym również do różnych
172 bibliotek okienkowych. Możliwości jego można jeszcze rozszerzać
173 poprzez odpowiednie moduły pisane w C lub C++. Python może być również
174 użyty jako element aplikacji, którym potrzebny jest interpreter do
175 skryptów. I wreszcie, Python jest wieloplatformowy, działa na wielu
176 odmianach UNIX-a, Macu oraz PC pod DOS-em, Windows, WindowsNT oraz
179 Ten pakiet zawiera binarkę Pythona.
181 %description -l pt_BR.UTF-8
182 Python é uma linguagem de scripts interpretada orientada a objetos.
183 Contém suporte para carga dinâmica de objetos, classes, módulos e
184 exceções. Adicionar interfaces para novos sistemas de biblioteca
185 através de código C é simples, tornando Python fácil de usar em
186 ambientes particulares/personalizados.
188 Este pacote Python inclui a maioria do módulos padrão Python, junto
189 com módulos para interfaceamento para o conjunto de componentes Tix
192 %description -l ru.UTF-8
193 Python - это интерпретируемый, объектно-ориентированный язык
194 программирования. Он поддерживает динамическую загрузку объектов,
195 классы, модули и обработку исключительных ситуаций (exceptions).
196 Простота добавления интерфейсов к новым системным библиотекам через
197 код на языке C делает Python хорошим выбором для использования в
198 специальных конфигурациях.
200 %description -l tr.UTF-8
201 Python, nesneye yönelik bir kabuk yorumlayıcıdır. Nesnelerin,
202 sınıfların, modüllerin ve aykırı durumların dinamik yüklenmelerine
203 destek verir. C koduyla birlikte kullanımı son derece kolaydır. Bu
204 paket, standart Python birimlerinin çoğunun yanısıra Tk ve RPM için
205 arayüz birimlerini de içerir.
207 %description -l uk.UTF-8
208 Python - це інтерпретована, об'єктно-орієнтована мова програмування.
209 Він підтримує динамічну загрузку об'єктів, класи, модулі та обробку
210 виключних ситуацій (exceptions). Простота додавання інтерфейсів для
211 нових системних бібліотек через код на мові C робить Python добрим
212 вибором для використання в спеціальних конфігураціях.
215 Summary: Python library
216 Summary(pl.UTF-8): Biblioteka języka Python
217 Group: Libraries/Python
218 # broken detection in rpm/pythondeps.sh
219 Provides: python(abi) = %{py_ver}
220 # for compatibility with existing Ac packages
221 Provides: python(bytecode) = %{py_ver}
222 %{!?with_info:Obsoletes: python-doc-info}
223 Obsoletes: python-intl
226 Python shared library and very essental modules for Python binary.
228 %description libs -l pl.UTF-8
229 Biblioteka współdzielona języka Python oraz bardzo podstawowe moduły
233 Summary: Python modules
234 Summary(pl.UTF-8): Moduły języka Python
235 Group: Libraries/Python
236 Requires: %{name}-libs = %{epoch}:%{version}-%{release}
237 Provides: python-argparse = 1.1
238 Provides: python-cElementTree
239 Provides: python-elementtree
240 Provides: pythonegg(argparse) = 1.1
241 Obsoletes: python-argparse < 1.1.99
242 Obsoletes: python-cElementTree
243 Obsoletes: python-ctypes
244 Obsoletes: python-curses
245 Obsoletes: python-elementtree
246 Obsoletes: python-gdbm
247 Obsoletes: python-hashlib
248 Obsoletes: python-logging
249 Obsoletes: python-old
250 Obsoletes: python-optik
251 Obsoletes: python-ssl
252 Obsoletes: python-xml
253 Obsoletes: python-xmlrpc <= 1.0.1
254 Obsoletes: python-zlib
255 %requires_ge_to openssl openssl-devel
258 Python officially distributed modules.
260 %description modules -l pl.UTF-8
261 Oficjalnie rozprowadzane moduły języka Python.
263 %package modules-sqlite
264 Summary: Python SQLite modules
265 Summary(pl.UTF-8): Moduły SQLite języka Python
266 Group: Libraries/Python
267 Requires: %{name}-modules = %{epoch}:%{version}-%{release}
268 Provides: python(sqlite)
270 %description modules-sqlite
271 Python officially distributed sqlite module.
273 %description modules-sqlite -l pl.UTF-8
274 Oficjalnie rozprowadzany moduł sqlite języka Python.
277 Summary: Python interactive module documentation access support
278 Summary(pl.UTF-8): Interaktywne korzystanie z dokumentacji modułów języka Python
280 Requires: %{name}-modules = %{epoch}:%{version}-%{release}
281 Obsoletes: python-pydoc
283 %description -n pydoc
284 Python interactive module documentation access support.
286 %description -n pydoc -l pl.UTF-8
287 Interaktywne korzystanie z dokumentacji modułów języka Python.
290 Summary: IDE for Python language
291 Summary(pl.UTF-8): IDE dla języka Python
292 Group: Applications/Editors
293 Requires: %{name}-tkinter = %{epoch}:%{version}-%{release}
294 Obsoletes: python-idle
297 IDE for Python language.
299 %description -n idle -l pl.UTF-8
300 IDE dla języka Python.
303 Summary: Libraries and header files for building python code
304 Summary(de.UTF-8): Libraries und Header-Dateien zum Erstellen von Python-Code
305 Summary(es.UTF-8): Bibliotecas y archivos de inclusión para construir programas en python
306 Summary(fr.UTF-8): Bibliothèques et en-têtes pour construire du code python
307 Summary(pl.UTF-8): Pliki nagłówkowe i biblioteki Pythona
308 Summary(pt_BR.UTF-8): Bibliotecas e arquivos de inclusão para o Python
309 Summary(ru.UTF-8): Библиотеки и хедеры для построения кода на языке Python
310 Summary(tr.UTF-8): Python ile geliştirme yapmak için gerekli dosyalar
311 Summary(uk.UTF-8): Бібліотеки та хедери для програмування на мові Python
312 Group: Development/Languages/Python
313 Requires: %{name}-libs = %{epoch}:%{version}-%{release}
314 Requires: %{name}-modules = %{epoch}:%{version}-%{release}
315 Obsoletes: python2-devel
318 The Python interpreter is relatively easy to extend with dynamically
319 loaded extensions and to embed in other programs. This package
320 contains the header files and libraries which are needed to do both of
323 %description devel -l de.UTF-8
324 Der Python-Interpretierer ist relativ einfach anhand von dynamisch
325 ladbaren Erweiterungen auszubauen und läßt sich in andere Programme
326 integrieren. Dieses Paket enthält die Header-Dateien und Libraries,
327 die für beide Aufgaben erforderlich sind.
329 %description devel -l es.UTF-8
330 El interpretador Python permite incluir con facilidad extensiones
331 cargadas dinámicamente. Python es también fácil de ser empotrado en
332 otros programas. Este paquete contiene los archivos de inclusión y
333 bibliotecas necesarios para estas dos tareas.
335 %description devel -l fr.UTF-8
336 L'interpréteur Python est relativement facile à étendre avec des
337 extensions chargées dynamiquement et à insérer dans d'autres
338 programmes. Ce paquetage contient les en-têtes et les bibliothèques
339 nécessaires à ces deux tâches.
341 %description devel -l pl.UTF-8
342 Interpreter Pythona jest w miarę łatwy do rozszerzania przy pomocy
343 dynamicznie ładowanych rozszerzeń napisanych w C lub C++ oraz
344 osadzania w innych programach. Ten pakiet zawiera pliki nagłówkowe i
345 wszystko inne co potrzebne do tych celów.
347 %description devel -l pt_BR.UTF-8
348 O interpretador Python permite incluir com facilidade extensões
349 carregadas dinamicamente. Python é também fácil de ser embutido em
350 outros programas. Este pacote contém os arquivos de inclusão e
351 bibliotecas necessários para estas duas tarefas.
353 %description devel -l ru.UTF-8
354 Интерпретатор Python относительно легко расширяется при помощи
355 динамически загружаемых расширений и встраивается в другие программы.
356 Этот пакет содержит хедеры и библиотеки, необходимые для обеих этих
359 %description devel -l tr.UTF-8
360 Bu paket, Python ile geliştirme yapılabilmesi için gerekli başlık
361 dosyalarını ve kitaplıkları içerir.
363 %description devel -l uk.UTF-8
364 Інтерпретатор Python відносно легко розширюється за допомогою
365 розширень з динамічною загрузкою та вбудовується в інші програми. Цей
366 пакет містить хедери та бібліотеки, необхідні для обох цих задач.
369 Summary: Python module sources
370 Summary(pl.UTF-8): Pliki źródłowe modułów Pythona
371 Group: Development/Languages/Python
372 Requires: %{name}-modules = %{epoch}:%{version}-%{release}
374 %description devel-src
375 Python module sources.
377 %description devel-src -l pl.UTF-8
378 Pliki źródłowe modułów Pythona.
381 Summary: Python development tools
382 Summary(pl.UTF-8): Narzędzia programistyczne języka Python
383 Group: Development/Languages/Python
384 Requires: %{name}-modules = %{epoch}:%{version}-%{release}
386 %description devel-tools
387 Python development tools such as profilers and debugger.
389 %description devel-tools -l pl.UTF-8
390 Narzędzia programistyczne języka Python takie jak profiler oraz
394 Summary: Automated Python 2 to 3 code translation
395 Summary(pl.UTF-8): Automatyczne tłumaczenie kodu Pythona 2 na 3
396 Group: Development/Languages/Python
399 2to3 is a Python program that reads Python 2.x source code and applies
400 a series of fixers to transform it into valid Python 3.x code. The
401 standard library contains a rich set of fixers that will handle almost
402 all code. 2to3 supporting library lib2to3 is, however, a flexible and
403 generic library, so it is possible to write your own fixers for 2to3.
404 lib2to3 could also be adapted to custom applications in which Python
405 code needs to be edited automatically.
407 %description 2to3 -l pl.UTF-8
408 2to3 to program w Pythonie czytający od źródłowy w Pythonie 2.x i
409 aplikujący serię poprawek przekształcających go w poprawny kod w
410 Pythonie 3.x. Biblioteka standardowa zawiera duży zbiór poprawek
411 obsługujących większość kodu. Biblioteka wspierająca 2to3 (lib2to3)
412 jest jednak elastyczną i ogólną biblioteką, więc można pisać własne
413 poprawki dla 2to3. lib2to3 można także zaadaptować na potrzeby
414 własnych zastosowań, w których kod w Pythonie musi być modyfikowany
418 Summary: Static python library
419 Summary(pl.UTF-8): Statyczna biblioteka Pythona
420 Group: Development/Languages/Python
421 Requires: %{name}-devel = %{epoch}:%{version}-%{release}
424 Static python library.
426 %description static -l pl.UTF-8
427 Statyczna biblioteka Pythona.
430 Summary: Documentation on Python
431 Summary(de.UTF-8): Dokumentation zu Python
432 Summary(es.UTF-8): Documentación para Python
433 Summary(fr.UTF-8): Documentation sur Python
434 Summary(pl.UTF-8): Dokumentacja do Pythona
435 Summary(pt_BR.UTF-8): Documentação para a linguagem de programação Python
436 Summary(ru.UTF-8): Документация по языку Python
437 Summary(tr.UTF-8): Python belgeleri
438 Summary(uk.UTF-8): Документація по мові Python
440 Obsoletes: python-docs
443 This package contains documentation on the Python language and
444 interpretor as a mix of plain ASCII files and LaTeX sources.
446 %description doc -l de.UTF-8
447 Dieses Paket enthält Dokumentationen zu Python (Sprache und
448 Interpreter) in Form von einfachen ASCII-Dateien und LaTeX-Quellen.
450 %description doc -l es.UTF-8
451 Documentación para Python. Contiene archivos en texto y PostScript.
453 %description doc -l fr.UTF-8
454 Ce paquetage contient la documentation sur le langage python et sur
455 son interpréteur sous forme de fichiers ASCII et LaTeX.
457 %description doc -l pl.UTF-8
458 Oficjalna dokumentacja do Pythona. Zawiera przykładowe programy,
459 narzędzia i dokumentację. Strony podręcznika man znajdują się w
460 głównym pakiecie. Ten pakiet nie zawiera źródeł dokumentacji
461 napisanych w LaTeXu, tylko gotowe do wykorzystania pliki postscriptowe
464 %description doc -l pt_BR.UTF-8
465 O pacote python-doc contém documentação para a linguagem de
466 programação e para o interpretador Python. Fornecida em arquivos texto
469 %description doc -l ru.UTF-8
470 Этот пакет содержит документацию по собственно языку Python и по
471 исполняющему его интерпретатору в виде набора текстовых файлов и
472 исходных текстов в формате LaTeX.
474 %description doc -l tr.UTF-8
475 Bu paket, Python dili ile ilgili belgeleri ve düz ASCII dosyaları ve
476 LaTeX kaynaklarının bir karışımı olan yorumlayıcıyı içerir.
478 %description doc -l uk.UTF-8
479 Цей пакет містить документацію по власне мові Python та по виконуючому
480 її інтерпретатору у вигляді набора текстових файлів та вихідних
481 текстів у форматі LaTeX.
484 Summary: Documentation on Python in texinfo format
485 Summary(pl.UTF-8): Dokumentacja do Pythona w formacie texinfo
488 %description doc-info
489 Documentation on Python in texinfo format.
491 %description doc-info -l pl.UTF-8
492 Dokumentacja do Pythona w formacie texinfo.
495 Summary: Standard Python interface to the Tk GUI toolkit
496 Summary(de.UTF-8): Grafische Tk-Schnittstelle für Python
497 Summary(es.UTF-8): Interfaz de GUI Tk para Python
498 Summary(fr.UTF-8): Interface graphique Tk pour Python
499 Summary(pl.UTF-8): Standardowy interfejs Pythona do biblioteki Tk
500 Summary(pt_BR.UTF-8): Interface GUI Tk para Phyton
501 Summary(tr.UTF-8): Python için grafik kullanıcı arayüzü
502 Group: Libraries/Python
503 Requires: %{name}-modules = %{epoch}:%{version}-%{release}
504 Requires: tcl >= 8.4.3
505 Requires: tix >= 1:8.1.4-4
506 Requires: tk >= 8.4.3
510 Standard Python interface to the Tk GUI toolkit.
512 %description tkinter -l de.UTF-8
513 Eine grafische Schnittstelle für Python, basierend auf Tcl/Tk, und von
514 vielen Konfigurations-Tools genutzt.
516 %description tkinter -l es.UTF-8
517 Una interfaz gráfica para Python, basada en Tcl/Tk, y usada por muchas
518 herramientas de configuración.
520 %description tkinter -l fr.UTF-8
521 Interface graphique pour Python, basée sur Tcl/Tk et utilisée par
522 beaucoup des outils de configuration.
524 %description tkinter -l pl.UTF-8
525 Standardowy interfejs Pythona do biblioteki Tk.
527 %description tkinter -l pt_BR.UTF-8
528 Uma interface gráfica para Python, baseada em Tcl/Tk, e usada por
529 muitas ferramentas de configuração.
531 %description tkinter -l ru.UTF-8
532 Графический интерфейс (GUI) для Python, построенный на Tcl/Tk.
534 %description tkinter -l tr.UTF-8
535 Python için Tcl/Tk'ye dayalı ve pek çok ayarlama aracı tarafından
536 kullanılan grafik bir arayüzdür.
538 %description tkinter -l uk.UTF-8
539 Графічний інтерфейс (GUI) для Python, побудований на Tcl/Tk.
542 Summary: Example programs in Python
543 Summary(pl.UTF-8): Przykładowe programy w Pythonie
544 Group: Development/Languages/Python
545 Obsoletes: python-tools
547 %description examples
548 Example programs in Python.
550 These are for Python 2.3.4, not %{version}.
552 %description examples -l pl.UTF-8
553 Przykładowe programy w Pythonie.
555 Przykłady te są dla Pythona 2.3.4, nie %{version}.
558 Summary: Python test modules
559 Summary(pl.UTF-8): Moduły testowe Pythona
560 Group: Development/Languages/Python
561 Requires: %{name}-modules = %{epoch}:%{version}-%{release}
562 Suggests: %{name}-devel-src = %{epoch}:%{version}-%{release}
567 Unit tests for Python, some may be reused for testing other Python
570 %description test -l pl.UTF-8
571 Moduły testowe Pythona.
573 Niektóre z nich mogą być używane do testowania oprogramowania
574 napisanego w Pythonie.
577 %setup -q -n Python-%{version}%{beta}
589 sed -i -e 's#db_setup_debug = False#db_setup_debug = True#g' setup.py
591 # remove if Lib/plat-linux3 exists
592 [ -d Lib/plat-linux3 ] && exit 1
593 cp -a Lib/plat-linux2 Lib/plat-linux3
601 CPPFLAGS="%{rpmcppflags}" \
602 LDFLAGS="%{rpmldflags}" \
603 ac_cv_posix_semaphores_enabled=yes \
604 ac_cv_broken_sem_getvalue=no \
605 %{?with_debug:--with-pydebug} \
609 --enable-unicode=ucs4 \
611 --with-dbmliborder=gdbm:bdb \
614 %{__make} 2>&1 | awk '
615 BEGIN { fail = 0; logmsg = ""; }
617 if ($0 ~ /\*\*\* WARNING:/) {
623 END { if (fail) { print "\nPROBLEMS FOUND:"; print logmsg; exit(1); } }'
628 WITHIN_PYTHON_RPM_BUILD=1 %{__make} -j1 test \
629 TESTOPTS="%{test_flags} %{test_list}" \
630 TESTPYTHON="LD_LIBRARY_PATH=`pwd` PYTHONHOME=`pwd` PYTHONPATH=`pwd`/Lib:`pwd`/Lib/lib-tk:`pwd`/build/lib.linux-`uname -m`-%{py_ver} ./python -tt"
634 rm -rf $RPM_BUILD_ROOT
635 install -d $RPM_BUILD_ROOT{%{_bindir},%{_libdir}} \
636 $RPM_BUILD_ROOT{%{py_sitedir},%{_mandir}/man1} \
637 $RPM_BUILD_ROOT%{py_sitescriptdir} \
638 $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version} \
639 $RPM_BUILD_ROOT%{_infodir} \
640 $RPM_BUILD_ROOT%{_docdir} \
641 $RPM_BUILD_ROOT/etc/shrc.d
644 DESTDIR=$RPM_BUILD_ROOT
646 # docs in constant location
647 ln -sf python-doc-%{version} $RPM_BUILD_ROOT%{_docdir}/python-doc
650 %{__make} -C Doc/info
651 cp -p Doc/info/python*info* $RPM_BUILD_ROOT%{_infodir}
654 cp -p Makefile.pre.in $RPM_BUILD_ROOT%{py_libdir}/config
656 mv $RPM_BUILD_ROOT{%{py_libdir}/config,%{_libdir}}/libpython%{py_ver}.a
657 ln -sf libpython%{py_ver}.a $RPM_BUILD_ROOT%{_libdir}/libpython.a
658 ln -sf libpython%{py_ver}.so.1.0 $RPM_BUILD_ROOT%{_libdir}/libpython.so
659 ln -sf libpython%{py_ver}.so.1.0 $RPM_BUILD_ROOT%{_libdir}/libpython%{py_ver}.so
661 install -d $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
662 cp -a Tools Demo $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
665 # create several useful aliases, such as timeit.py, profile.py, pdb.py, smtpd.py
668 # for python devel tools
669 for script in timeit profile pdb pstats; do
670 echo alias $script.py=\"python -m ${script}\"
671 done > $RPM_BUILD_ROOT/etc/shrc.d/python-devel.sh
674 < $RPM_BUILD_ROOT/etc/shrc.d/python-devel.sh \
675 > $RPM_BUILD_ROOT/etc/shrc.d/python-devel.csh
678 for script in smtpd webbrowser; do
679 echo alias $script.py=\"python -m ${script}\"
680 done > $RPM_BUILD_ROOT/etc/shrc.d/python-modules.sh
683 < $RPM_BUILD_ROOT/etc/shrc.d/python-modules.sh \
684 > $RPM_BUILD_ROOT/etc/shrc.d/python-modules.csh
686 # just to cut the noise, as they are not packaged (now)
687 %{__rm} -r $RPM_BUILD_ROOT%{py_libdir}/plat-*/regen
688 %{__rm} -r $RPM_BUILD_ROOT%{py_libdir}/idlelib/idle_test
690 find $RPM_BUILD_ROOT%{py_libdir} -name \*.bat -exec rm {} \;
691 find $RPM_BUILD_ROOT%{py_libdir} -name \*.txt -exec rm {} \;
692 find $RPM_BUILD_ROOT%{py_libdir} -name README\* -exec rm {} \;
694 mv $RPM_BUILD_ROOT%{py_incdir}/pyconfig.h $RPM_BUILD_ROOT%{py_libdir}/config/pyconfig.h
695 sed -e's#@PREFIX@#%{_prefix}#g;s#@PY_VER@#%{py_ver}#g' %{SOURCE2} > $RPM_BUILD_ROOT%{py_incdir}/pyconfig.h
698 rm -rf $RPM_BUILD_ROOT
700 %post libs -p /sbin/ldconfig
702 %postun libs -p /sbin/ldconfig
704 %post doc-info -p /sbin/postshell
705 -/usr/sbin/fix-info-dir -c %{_infodir}
707 %postun doc-info -p /sbin/postshell
708 -/usr/sbin/fix-info-dir -c %{_infodir}
711 %defattr(644,root,root,755)
712 %attr(755,root,root) %{_bindir}/python
713 %attr(755,root,root) %{_bindir}/python2
714 %attr(755,root,root) %{_bindir}/python%{py_ver}
715 %{_mandir}/man1/python.1*
716 %{_mandir}/man1/python2.1*
719 %defattr(644,root,root,755)
721 /etc/shrc.d/python-modules*
722 %exclude %{py_libdir}/_abcoll.py[co]
723 %exclude %{py_libdir}/abc.py[co]
724 %exclude %{py_libdir}/UserDict.py[co]
725 %exclude %{py_libdir}/codecs.py[co]
726 %exclude %{py_libdir}/copy_reg.py[co]
727 %exclude %{py_libdir}/genericpath.py[co]
728 %exclude %{py_libdir}/linecache.py[co]
729 %exclude %{py_libdir}/locale.py[co]
730 %exclude %{py_libdir}/posixpath.py[co]
731 %exclude %{py_libdir}/profile.py[co]
732 %exclude %{py_libdir}/pstats.py[co]
733 %exclude %{py_libdir}/pydoc.py[co]
734 %exclude %{py_libdir}/re.py[co]
735 %exclude %{py_libdir}/site.py[co]
736 %exclude %{py_libdir}/sre_*.py[co]
737 %exclude %{py_libdir}/stat.py[co]
738 %exclude %{py_libdir}/sysconfig.py[co]
739 %exclude %{py_libdir}/timeit.py[co]
740 %exclude %{py_libdir}/os.py[co]
741 %exclude %{py_libdir}/_weakrefset.py[co]
742 %exclude %{py_libdir}/encodings/*.py[co]
743 %exclude %{py_libdir}/types.py[co]
744 %exclude %{py_libdir}/warnings.py[co]
746 %{py_libdir}/*.py[co]
748 %{py_dyndir}/Python-%{version}-py%{py_ver}.egg-info
751 # list .so modules to be sure that all of them are built
754 # three modules below do not work on 64-bit architectures
755 # see Python README file for explanation
756 %ifnarch alpha ia64 ppc64 sparc64 %{x8664}
757 %attr(755,root,root) %{py_dyndir}/imageop.so
758 # sizeof(long) != sizeof(int), so dl module will not be built on 64-bit
760 %attr(755,root,root) %{py_dyndir}/dl.so
763 %attr(755,root,root) %{py_dyndir}/audioop.so
764 %attr(755,root,root) %{py_dyndir}/array.so
765 %attr(755,root,root) %{py_dyndir}/binascii.so
766 %attr(755,root,root) %{py_dyndir}/_bisect.so
767 %attr(755,root,root) %{py_dyndir}/_bsddb.so
768 %attr(755,root,root) %{py_dyndir}/bz2.so
769 %attr(755,root,root) %{py_dyndir}/cmath.so
770 %attr(755,root,root) %{py_dyndir}/_codecs_cn.so
771 %attr(755,root,root) %{py_dyndir}/_codecs_hk.so
772 %attr(755,root,root) %{py_dyndir}/_codecs_iso2022.so
773 %attr(755,root,root) %{py_dyndir}/_codecs_jp.so
774 %attr(755,root,root) %{py_dyndir}/_codecs_kr.so
775 %attr(755,root,root) %{py_dyndir}/_codecs_tw.so
776 %attr(755,root,root) %{py_dyndir}/_collections.so
777 %attr(755,root,root) %{py_dyndir}/cPickle.so
778 %attr(755,root,root) %{py_dyndir}/crypt.so
779 %attr(755,root,root) %{py_dyndir}/cStringIO.so
780 %attr(755,root,root) %{py_dyndir}/_csv.so
781 %attr(755,root,root) %{py_dyndir}/_ctypes*.so
782 %attr(755,root,root) %{py_dyndir}/_curses_panel.so
783 %attr(755,root,root) %{py_dyndir}/_curses.so
784 %attr(755,root,root) %{py_dyndir}/datetime.so
785 %attr(755,root,root) %{py_dyndir}/_elementtree.so
786 %attr(755,root,root) %{py_dyndir}/_functools.so
787 %attr(755,root,root) %{py_dyndir}/_hashlib.so
788 %attr(755,root,root) %{py_dyndir}/_heapq.so
789 %attr(755,root,root) %{py_dyndir}/_io.so
790 %attr(755,root,root) %{py_dyndir}/_json.so
791 %attr(755,root,root) %{py_dyndir}/_locale.so
792 %attr(755,root,root) %{py_dyndir}/_lsprof.so
793 %attr(755,root,root) %{py_dyndir}/_multibytecodec.so
794 %attr(755,root,root) %{py_dyndir}/_multiprocessing.so
795 %attr(755,root,root) %{py_dyndir}/_random.so
796 %{?with_openssl097:%attr(755,root,root) %{py_dyndir}/_sha*.so}
797 %attr(755,root,root) %{py_dyndir}/_socket.so
798 %attr(755,root,root) %{py_dyndir}/_ssl.so
799 %attr(755,root,root) %{py_dyndir}/_testcapi.so
801 %attr(755,root,root) %{py_dyndir}/dbm.so
803 %attr(755,root,root) %{py_dyndir}/fcntl.so
804 %attr(755,root,root) %{py_dyndir}/future_builtins.so
805 %attr(755,root,root) %{py_dyndir}/gdbm.so
806 %attr(755,root,root) %{py_dyndir}/grp.so
807 %attr(755,root,root) %{py_dyndir}/itertools.so
808 %attr(755,root,root) %{py_dyndir}/linuxaudiodev.so
809 %attr(755,root,root) %{py_dyndir}/math.so
810 %attr(755,root,root) %{py_dyndir}/mmap.so
811 %attr(755,root,root) %{py_dyndir}/nis.so
812 %attr(755,root,root) %{py_dyndir}/operator.so
813 %attr(755,root,root) %{py_dyndir}/ossaudiodev.so
814 %attr(755,root,root) %{py_dyndir}/parser.so
815 %attr(755,root,root) %{py_dyndir}/pyexpat.so
816 %attr(755,root,root) %{py_dyndir}/readline.so
817 %attr(755,root,root) %{py_dyndir}/resource.so
818 %attr(755,root,root) %{py_dyndir}/select.so
819 %attr(755,root,root) %{py_dyndir}/strop.so
820 %attr(755,root,root) %{py_dyndir}/syslog.so
821 %attr(755,root,root) %{py_dyndir}/termios.so
822 %attr(755,root,root) %{py_dyndir}/time.so
823 %attr(755,root,root) %{py_dyndir}/spwd.so
824 %attr(755,root,root) %{py_dyndir}/unicodedata.so
825 %attr(755,root,root) %{py_dyndir}/zlib.so
827 %dir %{py_libdir}/plat-*
828 %{py_libdir}/plat-*/*.py[co]
830 %dir %{py_libdir}/bsddb
831 %{py_libdir}/bsddb/*.py[co]
833 %dir %{py_libdir}/compiler
834 %{py_libdir}/compiler/*.py[co]
836 %dir %{py_libdir}/ctypes
837 %dir %{py_libdir}/ctypes/macholib
838 %{py_libdir}/ctypes/*.py[co]
839 %{py_libdir}/ctypes/macholib/*.py[co]
841 %dir %{py_libdir}/curses
842 %{py_libdir}/curses/*.py[co]
844 %dir %{py_libdir}/distutils
845 %dir %{py_libdir}/distutils/command
846 %{py_libdir}/distutils/*.py[co]
847 %{py_libdir}/distutils/command/*.py[co]
849 %dir %{py_libdir}/email
850 %dir %{py_libdir}/email/mime
851 %{py_libdir}/email/*.py[co]
852 %{py_libdir}/email/mime/*.py[co]
854 %dir %{py_libdir}/ensurepip
855 %{py_libdir}/ensurepip/*.py[co]
856 %{py_libdir}/ensurepip/_bundled
858 %dir %{py_libdir}/idlelib
860 %dir %{py_libdir}/importlib
861 %{py_libdir}/importlib/*.py[co]
863 %dir %{py_libdir}/json
864 %{py_libdir}/json/*.py[co]
866 %dir %{py_libdir}/logging
867 %{py_libdir}/logging/*.py[co]
869 %dir %{py_libdir}/multiprocessing
870 %dir %{py_libdir}/multiprocessing/dummy
871 %{py_libdir}/multiprocessing/*.py[co]
872 %{py_libdir}/multiprocessing/dummy/*.py[co]
874 %dir %{py_libdir}/unittest
875 %{py_libdir}/unittest/*.py[co]
876 %dir %{py_libdir}/unittest/test
877 %{py_libdir}/unittest/test/*.py[co]
879 %dir %{py_libdir}/wsgiref
880 %{py_libdir}/wsgiref/*.py[co]
881 %{py_libdir}/wsgiref.egg-info
883 %dir %{py_libdir}/xml
884 %dir %{py_libdir}/xml/dom
885 %dir %{py_libdir}/xml/etree
886 %dir %{py_libdir}/xml/parsers
887 %dir %{py_libdir}/xml/sax
888 %{py_libdir}/xml/*.py[co]
889 %{py_libdir}/xml/dom/*.py[co]
890 %{py_libdir}/xml/etree/*.py[co]
891 %{py_libdir}/xml/parsers/*.py[co]
892 %{py_libdir}/xml/sax/*.py[co]
894 %files modules-sqlite
895 %defattr(644,root,root,755)
896 %attr(755,root,root) %{py_dyndir}/_sqlite3.so
897 %dir %{py_libdir}/sqlite3
898 %{py_libdir}/sqlite3/*.py[co]
901 %defattr(644,root,root,755)
902 %attr(755,root,root) %{_libdir}/libpython%{py_ver}.so.*
906 %dir %{_datadir}/python%{py_ver}
907 %dir %{py_sitescriptdir}
910 # shared modules required by python library
911 %attr(755,root,root) %{py_dyndir}/_struct.so
913 # modules required by python library
914 %{py_libdir}/_abcoll.py[co]
915 %{py_libdir}/abc.py[co]
916 %{py_libdir}/UserDict.py[co]
917 %{py_libdir}/codecs.py[co]
918 %{py_libdir}/copy_reg.py[co]
919 %{py_libdir}/genericpath.py[co]
920 %{py_libdir}/linecache.py[co]
921 %{py_libdir}/locale.py[co]
922 %{py_libdir}/posixpath.py[co]
923 %{py_libdir}/re.py[co]
924 %{py_libdir}/site.py[co]
925 %{py_libdir}/sre_*.py[co]
926 %{py_libdir}/stat.py[co]
927 %{py_libdir}/sysconfig.py[co]
928 %{py_libdir}/os.py[co]
929 %{py_libdir}/_weakrefset.py[co]
930 # needed by the dynamic sys.lib patch
931 %{py_libdir}/types.py[co]
932 %{py_libdir}/warnings.py[co]
934 # encodings required by python library
935 %dir %{py_libdir}/encodings
936 %{py_libdir}/encodings/*.py[co]
938 # required by sysconfig.py
939 %dir %{py_libdir}/config
940 %{py_libdir}/config/Makefile
941 %{py_libdir}/config/pyconfig.h
943 %{py_incdir}/pyconfig.h
946 %defattr(644,root,root,755)
947 %attr(755,root,root) %{_bindir}/pydoc
948 %{py_libdir}/pydoc.py[co]
949 %dir %{py_libdir}/pydoc_data
950 %{py_libdir}/pydoc_data/*.py[co]
953 %defattr(644,root,root,755)
954 %attr(755,root,root) %{_bindir}/idle
955 %dir %{py_libdir}/idlelib/Icons
956 %{py_libdir}/idlelib/*.py[co]
957 %{py_libdir}/idlelib/Icons/*
958 %{py_libdir}/idlelib/*.def
961 %defattr(644,root,root,755)
962 %doc Misc/{ACKS,NEWS,README,README.valgrind,valgrind-python.supp}
963 %attr(755,root,root) %{_bindir}/python-config
964 %attr(755,root,root) %{_bindir}/python2-config
965 %attr(755,root,root) %{_bindir}/python%{py_ver}-config
966 %attr(755,root,root) %{_libdir}/libpython%{py_ver}.so
967 %attr(755,root,root) %{_libdir}/libpython.so
969 %exclude %{py_incdir}/pyconfig.h
970 %{_pkgconfigdir}/python.pc
971 %{_pkgconfigdir}/python2.pc
972 %{_pkgconfigdir}/python-%{py_ver}.pc
974 %attr(755,root,root) %{py_libdir}/config/makesetup
975 %attr(755,root,root) %{py_libdir}/config/install-sh
976 %{py_libdir}/config/Makefile.pre.in
977 %{py_libdir}/config/Setup
978 %{py_libdir}/config/Setup.config
979 %{py_libdir}/config/Setup.local
980 %{py_libdir}/config/config.c
981 %{py_libdir}/config/config.c.in
982 %{py_libdir}/config/python.o
985 %defattr(644,root,root,755)
986 %attr(-,root,root) %{py_libdir}/*.py
987 %{py_libdir}/plat-*/*.py
988 %{py_libdir}/bsddb/*.py
989 %{py_libdir}/ctypes/*.py
990 %{py_libdir}/ctypes/macholib/*.py
991 %{py_libdir}/compiler/*.py
992 %{py_libdir}/curses/*.py
993 %{py_libdir}/distutils/*.py
994 %{py_libdir}/distutils/command/*.py
995 %{py_libdir}/email/*.py
996 %{py_libdir}/email/mime/*.py
997 %{py_libdir}/encodings/*.py
998 %{py_libdir}/hotshot/*.py
999 %{py_libdir}/ensurepip/*.py
1000 %{py_libdir}/idlelib/*.py
1001 %{py_libdir}/importlib/*.py
1002 %{py_libdir}/json/*.py
1003 %{py_libdir}/lib2to3/*.py
1004 %{py_libdir}/lib2to3/fixes/*.py
1005 %{py_libdir}/lib2to3/pgen2/*.py
1006 %{py_libdir}/logging/*.py
1007 %{py_libdir}/multiprocessing/*.py
1008 %{py_libdir}/multiprocessing/dummy/*.py
1009 %{py_libdir}/pydoc_data/*.py
1010 %{py_libdir}/sqlite3/*.py
1011 %{py_libdir}/unittest/*.py
1012 %{py_libdir}/unittest/test/*.py
1013 %{py_libdir}/wsgiref/*.py
1014 %{py_libdir}/xml/*.py
1015 %{py_libdir}/xml/dom/*.py
1016 %{py_libdir}/xml/etree/*.py
1017 %{py_libdir}/xml/parsers/*.py
1018 %{py_libdir}/xml/sax/*.py
1021 %defattr(644,root,root,755)
1022 /etc/shrc.d/python-devel*
1024 %attr(755,root,root) %{py_dyndir}/_hotshot.so
1025 %dir %{py_libdir}/hotshot
1026 %{py_libdir}/hotshot/*.py[co]
1027 %{py_libdir}/profile.py[co]
1028 %{py_libdir}/pstats.py[co]
1029 %{py_libdir}/timeit.py[co]
1032 %defattr(644,root,root,755)
1033 %attr(755,root,root) %{_bindir}/2to3
1034 %dir %{py_libdir}/lib2to3
1035 %dir %{py_libdir}/lib2to3/fixes
1036 %dir %{py_libdir}/lib2to3/pgen2
1037 %{py_libdir}/lib2to3/*.py[co]
1038 %{py_libdir}/lib2to3/*.pickle
1039 %{py_libdir}/lib2to3/fixes/*.py[co]
1040 %{py_libdir}/lib2to3/pgen2/*.py[co]
1043 %defattr(644,root,root,755)
1044 %{_libdir}/libpython%{py_ver}.a
1045 %{_libdir}/libpython.a
1048 %defattr(644,root,root,755)
1049 %{_examplesdir}/%{name}-%{version}
1052 %defattr(644,root,root,755)
1054 %{py_libdir}/bsddb/test
1055 %{py_libdir}/ctypes/test
1056 %{py_libdir}/distutils/tests
1057 %{py_libdir}/email/test
1058 %{py_libdir}/sqlite3/test
1059 %{py_libdir}/json/tests
1060 %{py_libdir}/lib2to3/tests
1063 %defattr(644,root,root,755)
1064 %doc python-%{dver}-docs-html/*
1065 %{_docdir}/python-doc
1069 %defattr(644,root,root,755)
1075 %defattr(644,root,root,755)
1077 %attr(755,root,root) %{py_dyndir}/_tkinter.so