]> git.pld-linux.org Git - packages/python3.git/blame_incremental - python3.spec
Up to 3.9.11 (fixes: CVE-2021-28363)
[packages/python3.git] / python3.spec
... / ...
CommitLineData
1# NOTE: tests require processes limit >128 (256 is sufficient)
2#
3# Conditional build:
4%bcond_with info # info pages (requires emacs)
5%bcond_without system_mpdecimal # system libmpdec library
6%bcond_without tkinter # disables tkinter module building
7%bcond_without tests # disables Python testing
8%bcond_with verbose_tests # runs tests in verbose mode
9%bcond_without optimizations # expensive, stable optimizations (PGO etc.) + LTO
10%bcond_with semantic_interposition # build without \-fno-semantic-interposition
11#
12# tests which will not work on 64-bit platforms
13%define no64bit_tests -x test_audioop -x test_rgbimg -x test_imageop
14# tests which may fail because of builder environment limitations (no /proc or /dev/pts)
15%define nobuilder_tests -u-network -x test_resource -x test_openpty -x test_socket -x test_nis -x test_posix -x test_locale -x test_pty -x test_asyncio -x test_os -x test_readline -x test_normalization
16
17# tests which fail because of some unknown/unresolved reason (this list should be %{nil})
18# test_site: fails because our site.py is patched to include both /usr/share/... and /usr/lib...
19# test_gdb: fails, as the gdb uses old python version
20# test_time: test_AsTimeval (test.test_time.TestCPyTime), rounding error
21%ifarch x32
22%define broken_tests_x32 -x test_time
23%undefine with_optimizations
24%endif
25%define broken_tests -x test_embed -x test_nntplib -x test_gdb -x test_site -x test_distutils -x test_bdist_rpm -x test_ssl %{?broken_tests_x32}
26
27%ifarch armv6hl armv7hl armv7hnl
28%define _python_target_abi %{?_gnu}hf
29%else
30%define _python_target_abi %{?_gnu}
31%endif
32
33%define py_ver 3.9
34%define py_abi %{py_ver}
35%define py_platform %{py_abi}-%{_target_base_arch}-%{_target_os}%{?_python_target_abi}
36%define py_prefix %{_prefix}
37%define py_libdir %{py_prefix}/%{_lib}/python%{py_ver}
38%define py_incdir %{_includedir}/python%{py_abi}
39%define py_sitedir %{py_libdir}/site-packages
40%define py_dyndir %{py_libdir}/lib-dynload
41
42Summary: Very high level scripting language with X interface
43Summary(es.UTF-8): Lenguaje script de alto nivel con interfaz X
44Summary(fr.UTF-8): Langage de script de très haut niveau avec interface X
45Summary(pl.UTF-8): Python - język obiektowy wysokiego poziomu
46Summary(pt_BR.UTF-8): Linguagem de programação interpretada de alto nível
47Summary(ru.UTF-8): Язык программирования очень высокого уровня с X-интерфейсом
48Summary(tr.UTF-8): X arayüzlü, yüksek düzeyli, kabuk yorumlayıcı dili
49Summary(uk.UTF-8): Мова програмування дуже високого рівня з X-інтерфейсом
50Name: python3
51Version: %{py_ver}.11
52Release: 1
53Epoch: 1
54License: PSF
55Group: Development/Languages/Python
56Source0: https://www.python.org/ftp/python/%{version}/Python-%{version}.tar.xz
57# Source0-md5: 3c8dde3ebd6da005e969b83b5f0c1886
58Source1: pyconfig.h.in
59Patch0: %{name}-pythonpath.patch
60Patch1: %{name}-ac_fixes.patch
61Patch2: %{name}-multilib.patch
62Patch3: %{name}-no_cmdline_tests.patch
63Patch4: %{name}-makefile-location.patch
64Patch5: %{name}-config.patch
65Patch6: %{name}-BLDLIBRARY.patch
66Patch7: %{name}-db.patch
67Patch8: %{name}-install_prefix.patch
68Patch9: %{name}-tests_with_pythonpath.patch
69Patch10: %{name}-bdist_rpm.patch
70Patch11: %{name}-installcompile.patch
71
72Patch13: %{name}-no-randomize-tests.patch
73Patch14: python3-profile-tests.patch
74Patch15: python3-tests.patch
75URL: https://www.python.org/
76BuildRequires: autoconf >= 2.65
77BuildRequires: autoconf-archive
78BuildRequires: automake
79BuildRequires: bluez-libs-devel
80BuildRequires: bzip2-devel
81BuildRequires: db-devel >= 4
82%{?with_info:BuildRequires: emacs >= 21}
83BuildRequires: expat-devel >= 1:1.95.7
84BuildRequires: file
85BuildRequires: gdbm-devel >= 1.8.3
86%if %(locale -a | grep -q '^C\.utf8$'; echo $?)
87BuildRequires: glibc-localedb-all
88%endif
89BuildRequires: gmp-devel >= 4.0
90BuildRequires: libffi-devel
91BuildRequires: libnsl-devel
92BuildRequires: libstdc++-devel
93BuildRequires: libtirpc-devel
94%{?with_system_mpdecimal:BuildRequires: mpdecimal-devel >= 2.5.0}
95BuildRequires: ncurses-ext-devel >= 5.2
96BuildRequires: openssl-devel >= 0.9.7
97BuildRequires: pkgconfig
98BuildRequires: readline-devel >= 5.0
99BuildRequires: rpm-pythonprov
100BuildRequires: sed >= 4.0
101BuildRequires: sqlite3-devel >= 3.3.5
102BuildRequires: tar >= 1:1.22
103%{?with_info:BuildRequires: tetex-makeindex}
104%{?with_tkinter:BuildRequires: tix-devel >= 1:8.1.4-4}
105%{?with_tkinter:BuildRequires: tk-devel >= 8.4.3}
106BuildRequires: xz-devel
107BuildRequires: zlib-devel
108Requires: %{name}-libs = %{epoch}:%{version}-%{release}
109Suggests: pip
110BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
111
112%define specflags_ppc -D__ppc__=1
113%define specflags_ppc64 -D__ppc64__=1
114
115%if %{with verbose_tests}
116%define test_flags -v
117%else
118%define test_flags -wW
119%endif
120
121%ifarch alpha ia64 ppc64 sparc64 ppc64 %{x8664}
122%define test_list %{nobuilder_tests} %{broken_tests} %{no64bit_tests}
123%else
124%define test_list %{nobuilder_tests} %{broken_tests}
125%endif
126
127%ifarch sparc
128%define test_list %{nobuilder_tests} %{broken_tests} -x test_fcntl -x test_ioctl
129%endif
130
131%description
132Python is an interpreted, interactive, object-oriented programming
133language. It incorporates modules, exceptions, dynamic typing, very
134high level dynamic data types, and classes. Python combines remarkable
135power with very clear syntax. It has interfaces to many system calls
136and libraries, as well as to various window systems, and is extensible
137in C or C++. It is also usable as an extension language for
138applications that need a programmable interface. Finally, Python is
139portable: it runs on many brands of UNIX, on the Mac, and on PCs under
140MS-DOS, Windows, Windows NT, and OS/2.
141
142This package contains the Python binary.
143
144%description -l de.UTF-8
145Python ist eine interpretierte, interaktive, objektorientierte
146Programmiersprache, vergleichbar zu Tcl, Perl, Scheme oder Java.
147Python enthält Module, Klassen, Exceptions, High-Level dynamische
148Datentypen und dynamisches Typisieren. Python unterstützt Interfaces
149zu vielen Systemaufrufen und Libraries, sowie verschiedene
150Fenstersysteme (X11, Motif, Tk, Mac und MFC)
151
152Programmierer können neue built-in-Module für Python in C oder C++
153schreiben. Python kann auch als Erweiterungssprache für Applikationen
154benutzt werden, die ein programmierbares Interface brauchen. Dieses
155Paket enthält die meisten Standard-Python-Module, und Module zum
156Ansprechen von Tix (Tk-widget set) und RPM.
157
158%description -l es.UTF-8
159Python es un lenguaje de scripts interpretado orientado a objetos.
160Contiene soporte para carga dinámica de objetos, clases, módulos y
161excepciones.
162
163Es sencillo adicionar interfaces para nuevos sistemas de biblioteca a
164través de código C, tornando Python fácil de usar en ambientes
165particulares/personalizados. Este paquete Python incluye la mayoría de
166los módulos padrón Python, junto con módulos para crear interfaces
167para el conjunto de componentes Tix para Tk y RPM.
168
169%description -l fr.UTF-8
170Python est un langage de script interprété et orienté objet. Il gère
171le chargement dynamique des objets, les classes, les modules et les
172exceptions. L'ajout d'interfaces aux nouvelles bibliothèques systèmes
173avec du code C est simple, ce qui rend Python facile à utiliser dans
174des configs personnalisées.
175
176Ce paquetage Python contient la plupart des modules Python standards,
177ainsi que ceux permettant l'interfaçage avec les widgets Tix pour Tk
178et RPM.
179
180%description -l pl.UTF-8
181Python jest interpretowanym, interaktywnym i zorientowanym obiektowo
182językiem programowania. Jest modularny, obsługuje wyjątki, dynamiczne
183typy, zaawansowane dynamiczne struktury danych i klasy. Python łączy w
184sobie duże możliwości i przejrzystą składnię. Posiada interfejsy do
185wielu wywołań systemowych i bibliotek, w tym również do różnych
186bibliotek okienkowych. Możliwości jego można jeszcze rozszerzać
187poprzez odpowiednie moduły pisane w C lub C++. Python może być również
188użyty jako element aplikacji, którym potrzebny jest interpreter do
189skryptów. I wreszcie, Python jest wieloplatformowy, działa na wielu
190odmianach UNIX-a, Macu oraz PC pod DOS-em, Windows, WindowsNT oraz
191OS/2.
192
193Ten pakiet zawiera binarkę Pythona.
194
195%description -l pt_BR.UTF-8
196Python é uma linguagem de scripts interpretada orientada a objetos.
197Contém suporte para carga dinâmica de objetos, classes, módulos e
198exceções. Adicionar interfaces para novos sistemas de biblioteca
199através de código C é simples, tornando Python fácil de usar em
200ambientes particulares/personalizados.
201
202Este pacote Python inclui a maioria do módulos padrão Python, junto
203com módulos para interfaceamento para o conjunto de componentes Tix
204para Tk e RPM.
205
206%description -l ru.UTF-8
207Python - это интерпретируемый, объектно-ориентированный язык
208программирования. Он поддерживает динамическую загрузку объектов,
209классы, модули и обработку исключительных ситуаций (exceptions).
210Простота добавления интерфейсов к новым системным библиотекам через
211код на языке C делает Python хорошим выбором для использования в
212специальных конфигурациях.
213
214%description -l tr.UTF-8
215Python, nesneye yönelik bir kabuk yorumlayıcıdır. Nesnelerin,
216sınıfların, modüllerin ve aykırı durumların dinamik yüklenmelerine
217destek verir. C koduyla birlikte kullanımı son derece kolaydır. Bu
218paket, standart Python birimlerinin çoğunun yanısıra Tk ve RPM için
219arayüz birimlerini de içerir.
220
221%description -l uk.UTF-8
222Python - це інтерпретована, об'єктно-орієнтована мова програмування.
223Він підтримує динамічну загрузку об'єктів, класи, модулі та обробку
224виключних ситуацій (exceptions). Простота додавання інтерфейсів для
225нових системних бібліотек через код на мові C робить Python добрим
226вибором для використання в спеціальних конфігураціях.
227
228%package libs
229Summary: Python library
230Summary(pl.UTF-8): Biblioteka języka Python
231Group: Libraries/Python
232# broken detection in rpm/pythondeps.sh
233Provides: python(abi) = %{py_ver}
234# for compatibility with existing Ac packages
235Provides: python(bytecode) = %{py_ver}
236Provides: python3-enum
237Obsoletes: python3-enum < 0.5
238%{!?with_info:Obsoletes: python3-doc-info < %{epoch}:%{version}-%{release}}
239
240%description libs
241Python shared library and very essental modules for Python binary.
242
243%description libs -l pl.UTF-8
244Biblioteka współdzielona języka Python oraz bardzo podstawowe moduły
245dla Pythona.
246
247%package modules
248Summary: Python modules
249Summary(pl.UTF-8): Moduły języka Python
250Group: Libraries/Python
251Requires: %{name}-libs = %{epoch}:%{version}-%{release}
252%{?with_system_mpdecimal:Requires: mpdecimal >= 2.4.2-2}
253Obsoletes: python3-modules-sqlite < 1:3.1-2
254%requires_ge_to openssl openssl-devel
255
256%description modules
257Python officially distributed modules.
258
259%description modules -l pl.UTF-8
260Oficjalnie rozprowadzane moduły języka Python.
261
262%package -n pydoc3
263Summary: Python interactive module documentation access support
264Summary(pl.UTF-8): Interaktywne korzystanie z dokumentacji modułów języka Python
265Group: Applications
266Requires: %{name}-modules = %{epoch}:%{version}-%{release}
267
268%description -n pydoc3
269Python interactive module documentation access support.
270
271%description -n pydoc3 -l pl.UTF-8
272Interaktywne korzystanie z dokumentacji modułów języka Python.
273
274%package -n idle3
275Summary: IDE for Python language
276Summary(pl.UTF-8): IDE dla języka Python
277Group: Applications
278Requires: %{name}-tkinter = %{epoch}:%{version}-%{release}
279
280%description -n idle3
281IDE for Python language.
282
283%description -n idle3 -l pl.UTF-8
284IDE dla języka Python.
285
286%package devel
287Summary: Libraries and header files for building python code
288Summary(de.UTF-8): Libraries und Header-Dateien zum Erstellen von Python-Code
289Summary(es.UTF-8): Bibliotecas y archivos de inclusión para construir programas en python
290Summary(fr.UTF-8): Bibliothèques et en-têtes pour construire du code python
291Summary(pl.UTF-8): Pliki nagłówkowe i biblioteki Pythona
292Summary(pt_BR.UTF-8): Bibliotecas e arquivos de inclusão para o Python
293Summary(ru.UTF-8): Библиотеки и хедеры для построения кода на языке Python
294Summary(tr.UTF-8): Python ile geliştirme yapmak için gerekli dosyalar
295Summary(uk.UTF-8): Бібліотеки та хедери для програмування на мові Python
296Group: Development/Languages/Python
297Requires: %{name}-libs = %{epoch}:%{version}-%{release}
298Obsoletes: python3-devel-src < 1:3.2-1
299
300%description devel
301The Python interpreter is relatively easy to extend with dynamically
302loaded extensions and to embed in other programs. This package
303contains the header files and libraries which are needed to do both of
304these tasks.
305
306%description devel -l de.UTF-8
307Der Python-Interpretierer ist relativ einfach anhand von dynamisch
308ladbaren Erweiterungen auszubauen und läßt sich in andere Programme
309integrieren. Dieses Paket enthält die Header-Dateien und Libraries,
310die für beide Aufgaben erforderlich sind.
311
312%description devel -l es.UTF-8
313El interpretador Python permite incluir con facilidad extensiones
314cargadas dinámicamente. Python es también fácil de ser empotrado en
315otros programas. Este paquete contiene los archivos de inclusión y
316bibliotecas necesarios para estas dos tareas.
317
318%description devel -l fr.UTF-8
319L'interpréteur Python est relativement facile à étendre avec des
320extensions chargées dynamiquement et à insérer dans d'autres
321programmes. Ce paquetage contient les en-têtes et les bibliothèques
322nécessaires à ces deux tâches.
323
324%description devel -l pl.UTF-8
325Interpreter Pythona jest w miarę łatwy do rozszerzania przy pomocy
326dynamicznie ładowanych rozszerzeń napisanych w C lub C++ oraz
327osadzania w innych programach. Ten pakiet zawiera pliki nagłówkowe i
328wszystko inne co potrzebne do tych celów.
329
330%description devel -l pt_BR.UTF-8
331O interpretador Python permite incluir com facilidade extensões
332carregadas dinamicamente. Python é também fácil de ser embutido em
333outros programas. Este pacote contém os arquivos de inclusão e
334bibliotecas necessários para estas duas tarefas.
335
336%description devel -l ru.UTF-8
337Интерпретатор Python относительно легко расширяется при помощи
338динамически загружаемых расширений и встраивается в другие программы.
339Этот пакет содержит хедеры и библиотеки, необходимые для обеих этих
340задач.
341
342%description devel -l tr.UTF-8
343Bu paket, Python ile geliştirme yapılabilmesi için gerekli başlık
344dosyalarını ve kitaplıkları içerir.
345
346%description devel -l uk.UTF-8
347Інтерпретатор Python відносно легко розширюється за допомогою
348розширень з динамічною загрузкою та вбудовується в інші програми. Цей
349пакет містить хедери та бібліотеки, необхідні для обох цих задач.
350
351%package devel-tools
352Summary: Python development tools
353Summary(pl.UTF-8): Narzędzia programistyczne języka Python
354Group: Development/Languages/Python
355Requires: %{name}-modules = %{epoch}:%{version}-%{release}
356
357%description devel-tools
358Python development tools such as profilers and debugger.
359
360%description devel-tools -l pl.UTF-8
361Narzędzia programistyczne języka Python takie jak profiler oraz
362debugger.
363
364%package 2to3
365Summary: Automated Python 2 to 3 code translation
366Summary(pl.UTF-8): Automatyczne tłumaczenie kodu Pythona 2 do 3
367Group: Development/Languages/Python
368
369%description 2to3
3702to3 is a Python program that reads Python 2.x source code and applies
371a series of fixers to transform it into valid Python 3.x code. The
372standard library contains a rich set of fixers that will handle almost
373all code. 2to3 supporting library lib2to3 is, however, a flexible and
374generic library, so it is possible to write your own fixers for 2to3.
375lib2to3 could also be adapted to custom applications in which Python
376code needs to be edited automatically.
377
378%description 2to3 -l pl.UTF-8
3792to3 to program w Pythonie czytający od źródłowy w Pythonie 2.x i
380aplikujący serię poprawek przekształcających go w poprawny kod w
381Pythonie 3.x. Biblioteka standardowa zawiera duży zbiór poprawek
382obsługujących większość kodu. Biblioteka wspierająca 2to3 (lib2to3)
383jest jednak elastyczną i ogólną biblioteką, więc można pisać własne
384poprawki dla 2to3. lib2to3 można także zaadaptować na potrzeby
385własnych zastosowań, w których kod w Pythonie musi być modyfikowany
386automatycznie.
387
388%package static
389Summary: Static python library
390Summary(pl.UTF-8): Statyczna biblioteka Pythona
391Group: Development/Languages/Python
392Requires: %{name}-devel = %{epoch}:%{version}-%{release}
393
394%description static
395Static python library.
396
397%description static -l pl.UTF-8
398Statyczna biblioteka Pythona.
399
400%package doc-info
401Summary: Documentation on Python in texinfo format
402Summary(pl.UTF-8): Dokumentacja do Pythona w formacie texinfo
403Group: Documentation
404
405%description doc-info
406Documentation on Python in texinfo format.
407
408%description doc-info -l pl.UTF-8
409Dokumentacja do Pythona w formacie texinfo.
410
411%package tkinter
412Summary: Standard Python interface to the Tk GUI toolkit
413Summary(de.UTF-8): Grafische Tk-Schnittstelle für Python
414Summary(es.UTF-8): Interfaz de GUI Tk para Python
415Summary(fr.UTF-8): Interface graphique Tk pour Python
416Summary(pl.UTF-8): Standardowy interfejs Pythona do biblioteki Tk
417Summary(pt_BR.UTF-8): Interface GUI Tk para Phyton
418Summary(tr.UTF-8): Python için grafik kullanıcı arayüzü
419Group: Libraries/Python
420Requires: %{name}-modules = %{epoch}:%{version}-%{release}
421Requires: tcl >= 8.4.3
422Requires: tix >= 1:8.1.4-4
423Requires: tk >= 8.4.3
424
425%description tkinter
426Standard Python interface to the Tk GUI toolkit.
427
428%description tkinter -l de.UTF-8
429Eine grafische Schnittstelle für Python, basierend auf Tcl/Tk, und von
430vielen Konfigurations-Tools genutzt.
431
432%description tkinter -l es.UTF-8
433Una interfaz gráfica para Python, basada en Tcl/Tk, y usada por muchas
434herramientas de configuración.
435
436%description tkinter -l fr.UTF-8
437Interface graphique pour Python, basée sur Tcl/Tk et utilisée par
438beaucoup des outils de configuration.
439
440%description tkinter -l pl.UTF-8
441Standardowy interfejs Pythona do biblioteki Tk.
442
443%description tkinter -l pt_BR.UTF-8
444Uma interface gráfica para Python, baseada em Tcl/Tk, e usada por
445muitas ferramentas de configuração.
446
447%description tkinter -l ru.UTF-8
448Графический интерфейс (GUI) для Python, построенный на Tcl/Tk.
449
450%description tkinter -l tr.UTF-8
451Python için Tcl/Tk'ye dayalı ve pek çok ayarlama aracı tarafından
452kullanılan grafik bir arayüzdür.
453
454%description tkinter -l uk.UTF-8
455Графічний інтерфейс (GUI) для Python, побудований на Tcl/Tk.
456
457%package examples
458Summary: Example programs in Python
459Summary(pl.UTF-8): Przykładowe programy w Pythonie
460Group: Development/Languages/Python
461BuildArch: noarch
462
463%description examples
464Example programs in Python.
465
466These are for Python 2.3.4, not %{version}.
467
468%description examples -l pl.UTF-8
469Przykładowe programy w Pythonie.
470
471Przykłady te są dla Pythona 2.3.4, nie %{version}.
472
473%package test
474Summary: Test modules for Python
475Summary(pl.UTF-8): Moduły testowe dla Pythona
476Group: Development/Languages/Python
477
478%description test
479Test modules for Python.
480
481%description test -l pl.UTF-8
482Moduły testowe dla Pythona.
483
484%prep
485%setup -q -n Python-%{version}
486%patch0 -p1
487%patch1 -p1
488%patch2 -p1
489%patch3 -p1
490%patch4 -p1
491%patch5 -p1
492%patch6 -p1
493%patch7 -p1
494%patch8 -p1
495%patch9 -p1
496%patch10 -p1
497%patch11 -p1
498
499%patch13 -p1
500%patch14 -p1
501%patch15 -p1
502
503%{__rm} -r Modules/expat
504
505for SUBDIR in darwin libffi_osx; do
506 %{__rm} -r Modules/_ctypes/$SUBDIR/*
507done
508
509%if "%{pld_release}" == "ac"
510files="md5module.c sha1module.c"
511files="$files sha256module.c sha512module.c"
512for f in $files; do
513 %{__rm} Modules/$f
514done
515%endif
516
517sed -E -i -e '1s,#!\s*/usr/bin/env\s+python2(\s|$),#!%{__python}\1,' -e '1s,#!\s*/usr/bin/env\s+python(\s|$),#!%{__python}\1,' -e '1s,#!\s*/usr/bin/python(\s|$),#!%{__python}\1,' \
518 Tools/gdb/libpython.py \
519 Tools/pynche/pynche \
520 Tools/pynche/pynche.pyw \
521 Tools/scripts/2to3
522
523sed -E -i -e '1s,#!\s*/usr/bin/env\s+python3(\s|$),#!%{__python3}\1,' \
524 Tools/scripts/idle3 \
525 Tools/scripts/pydoc3
526
527find . -name '*.py' | xargs -r grep -El '^#! */usr/bin/env python3?' | xargs %{__sed} -i -e '1s,^#! */usr/bin/env python3\?,#!/usr/bin/python3,'
528
529%build
530if ! grep -q "tmpfs" /proc/self/mounts; then
531 echo "You need to have /dev/shm mounted in order to build this package!" >&2
532 echo "(Or any other tmpfs mounted and accessible to the rpmbuild process)" >&2
533 exit 1
534fi
535
536%{__aclocal}
537%{__autoconf}
538%configure \
539 CC="%{__cc}" \
540 OPT="%{rpmcflags}" \
541 CFLAGS_NODIST="%{!?with_semantic_interposition: -fno-semantic-interposition}" \
542 CPPFLAGS="%{rpmcppflags}" \
543 LDFLAGS="%{rpmldflags}" \
544 LDFLAGS_NODIST="%{debuginfocflags}%{!?with_semantic_interposition: -fno-semantic-interposition}" \
545 ac_cv_posix_semaphores_enabled=yes \
546 ac_cv_broken_sem_getvalue=no \
547 --enable-ipv6 \
548 --enable-shared \
549 --with-computed-gotos \
550 --with-dbmliborder=gdbm:ndbm:bdb \
551 --with-doc-strings \
552 --without-ensurepip \
553 --with-platlibdir="%{_lib}" \
554 %{?with_debug:--with-pydebug} \
555 --with-ssl-default-suites=openssl \
556 --with-system-expat \
557 --with-system-ffi \
558 %{?with_system_mpdecimal:--with-system-libmpdec} \
559%if %{with optimizations}
560 --enable-optimizations \
561 --with-lto
562%endif
563
564if grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then
565 echo "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777." >&2
566 exit 1
567fi
568
569%{__make} \
570 TESTOPTS="%{_smp_mflags} %{test_list}" \
571 2>&1 | awk '
572BEGIN { fail = 0; logmsg = ""; }
573{
574 if ($0 ~ /\*\*\* WARNING:/) {
575 fail = 1;
576 logmsg = logmsg $0;
577 }
578 print $0;
579}
580END { if (fail) { print "\nPROBLEMS FOUND:"; print logmsg; exit(1); } }'
581
582LC_ALL=C.UTF-8
583export LC_ALL
584%if %{with tests}
585WITHIN_PYTHON_RPM_BUILD=1 %{__make} test \
586 TESTOPTS="%{test_flags} %{test_list}"
587%endif
588
589%if %{with info}
590%{__make} -C Doc texinfo
591%{__make} -C Doc/build/texinfo info
592%endif
593
594%install
595rm -rf $RPM_BUILD_ROOT
596install -d $RPM_BUILD_ROOT{%{_bindir},%{_libdir},%{_pkgconfigdir}} \
597 $RPM_BUILD_ROOT{%{py_sitedir},%{py_sitescriptdir}}/__pycache__ \
598 $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version} \
599 $RPM_BUILD_ROOT{%{_infodir},%{_mandir}/man1} \
600 $RPM_BUILD_ROOT/etc/shrc.d \
601 $RPM_BUILD_ROOT%{_prefix}/lib/debug/%{_libdir}
602
603%{__make} install \
604 DESTDIR=$RPM_BUILD_ROOT
605
606%if %{with info}
607cp -p Doc/build/texinfo/python*info* $RPM_BUILD_ROOT%{_infodir}
608%endif
609
610install -d $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
611cp -a Tools $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
612
613# make libpython3.so simply symlink to real lib
614%{__rm} $RPM_BUILD_ROOT%{_libdir}/libpython3.so
615ln -s libpython%{py_abi}.so $RPM_BUILD_ROOT%{_libdir}/libpython3.so
616
617# gdb helper that will end up in -debuginfo package
618soname=$(ls -1d $RPM_BUILD_ROOT%{_libdir}/libpython%{py_abi}.so.*.* | sed -e "s#^$RPM_BUILD_ROOT##g")
619cp -a Tools/gdb/libpython.py "$RPM_BUILD_ROOT%{_prefix}/lib/debug/$soname-gdb.py"
620
621#
622# create several useful aliases, such as timeit.py, profile.py, pdb.py, smtpd.py
623#
624
625# for python devel tools
626for script in timeit profile pdb pstats; do
627 echo "#alias ${script}%{py_ver}.py='python%{py_ver} -m ${script}'"
628done > $RPM_BUILD_ROOT/etc/shrc.d/python%{py_ver}-devel.sh
629
630echo "#alias pygettext%{py_ver}.py='pygettext%{py_ver}'" \
631 >> $RPM_BUILD_ROOT/etc/shrc.d/python%{py_ver}-devel.sh
632
633sed 's/=/ /' \
634 < $RPM_BUILD_ROOT/etc/shrc.d/python%{py_ver}-devel.sh \
635 > $RPM_BUILD_ROOT/etc/shrc.d/python%{py_ver}-devel.csh
636
637# for python modules
638for script in smtpd webbrowser; do
639 echo "#alias ${script}%{py_ver}.py='python%{py_ver} -m ${script}'"
640done > $RPM_BUILD_ROOT/etc/shrc.d/python%{py_ver}-modules.sh
641
642sed 's/=/ /' \
643 < $RPM_BUILD_ROOT/etc/shrc.d/python%{py_ver}-modules.sh \
644 > $RPM_BUILD_ROOT/etc/shrc.d/python%{py_ver}-modules.csh
645
646# xgettext specific for Python code
647#
648# we will have two commands: pygettext.py (an alias) and pygettext;
649# this way there are no import (which is impossible now) conflicts and
650# pygettext.py is provided for compatibility
651install -p Tools/i18n/pygettext.py $RPM_BUILD_ROOT%{_bindir}/pygettext%{py_ver}
652
653# reindent python code
654install -p Tools/scripts/reindent.py $RPM_BUILD_ROOT%{_bindir}/pyreindent%{py_ver}
655
656# just to cut the noise, as they are not packaged (now)
657%{__rm} $RPM_BUILD_ROOT%{py_libdir}/ctypes/macholib/fetch_macholib*
658%{__rm} $RPM_BUILD_ROOT%{py_libdir}/idlelib/*.bat
659%{__rm} $RPM_BUILD_ROOT%{py_libdir}/idlelib/*.pyw
660%{__rm} $RPM_BUILD_ROOT%{py_libdir}/idlelib/help.html
661%{__rm} $RPM_BUILD_ROOT%{py_libdir}/site-packages/README.txt
662
663# currently provided by python-2to3, consider switching to this one
664%{__rm} $RPM_BUILD_ROOT%{_bindir}/2to3
665
666# that seems to be only an empty extension template,
667# which seems to be built only {with tests}
668%{__rm} -f $RPM_BUILD_ROOT%{py_dyndir}/xxlimited.*.so
669
670# already in %%doc
671%{__rm} $RPM_BUILD_ROOT%{py_libdir}/LICENSE.txt
672
673%{__mv} $RPM_BUILD_ROOT%{py_incdir}/pyconfig.h $RPM_BUILD_ROOT%{py_libdir}/config-%{py_platform}/pyconfig.h
674%{__sed} -e's#@PREFIX@#%{_prefix}#g;s#@PY_VER@#%{py_ver}#g;s#@PY_ABI@#%{py_platform}#g' %{SOURCE1} > $RPM_BUILD_ROOT%{py_incdir}/pyconfig.h
675
676%clean
677rm -rf $RPM_BUILD_ROOT
678
679%post libs -p /sbin/ldconfig
680%postun libs -p /sbin/ldconfig
681
682%post doc-info -p /sbin/postshell
683-/usr/sbin/fix-info-dir -c %{_infodir}
684
685%postun doc-info -p /sbin/postshell
686-/usr/sbin/fix-info-dir -c %{_infodir}
687
688%files
689%defattr(644,root,root,755)
690%attr(755,root,root) %{_bindir}/python%{py_ver}
691%if "%{py_ver}" != "%{py_abi}"
692%attr(755,root,root) %{_bindir}/python%{py_abi}
693%endif
694%attr(755,root,root) %{_bindir}/python3
695%{_mandir}/man1/python%{py_ver}.1*
696%{_mandir}/man1/python3.1*
697
698%files libs
699%defattr(644,root,root,755)
700%doc LICENSE
701%attr(755,root,root) %{_libdir}/libpython%{py_abi}.so.*.*
702
703%dir %{py_incdir}
704%{py_incdir}/pyconfig.h
705
706%dir %{py_libdir}
707%dir %{py_dyndir}
708%dir %{py_sitedir}
709%dir %{py_sitedir}/__pycache__
710%dir %{py_libdir}/__pycache__
711%dir %{py_scriptdir}
712%dir %{py_sitescriptdir}
713%dir %{py_sitescriptdir}/__pycache__
714
715# shared modules required by python library
716%attr(755,root,root) %{py_dyndir}/_struct.cpython-*.so
717
718# modules required by python library
719%{py_libdir}/_collections_abc.py
720%{py_libdir}/_sitebuiltins.py
721%{py_libdir}/_sysconfigdata_*.py
722%{py_libdir}/_weakrefset.py
723%{py_libdir}/abc.py
724%{py_libdir}/bisect.py
725%{py_libdir}/codecs.py
726%{py_libdir}/copyreg.py
727%{py_libdir}/enum.py
728%{py_libdir}/functools.py
729%{py_libdir}/genericpath.py
730%{py_libdir}/heapq.py
731%{py_libdir}/keyword.py
732%{py_libdir}/linecache.py
733%{py_libdir}/locale.py
734%{py_libdir}/io.py
735%{py_libdir}/operator.py
736%{py_libdir}/posixpath.py
737%{py_libdir}/re.py
738%{py_libdir}/reprlib.py
739%{py_libdir}/site.py
740%{py_libdir}/sre_*.py
741%{py_libdir}/stat.py
742%{py_libdir}/sysconfig.py
743%{py_libdir}/token.py
744%{py_libdir}/tokenize.py
745%{py_libdir}/traceback.py
746%{py_libdir}/weakref.py
747%{py_libdir}/os.py
748# needed by the dynamic sys.lib patch
749%{py_libdir}/types.py
750%{py_libdir}/__pycache__/_sitebuiltins.cpython-*.py[co]
751%{py_libdir}/__pycache__/_sysconfigdata_*.cpython-*.py[co]
752%{py_libdir}/__pycache__/_weakrefset.cpython-*.py[co]
753%{py_libdir}/__pycache__/abc.cpython-*.py[co]
754%{py_libdir}/__pycache__/bisect.cpython-*.py[co]
755%{py_libdir}/__pycache__/codecs.cpython-*.py[co]
756%{py_libdir}/__pycache__/_collections_abc.cpython-*.py[co]
757%{py_libdir}/__pycache__/copyreg.cpython-*.py[co]
758%{py_libdir}/__pycache__/enum.cpython-*.py[co]
759%{py_libdir}/__pycache__/functools.cpython-*.py[co]
760%{py_libdir}/__pycache__/genericpath.cpython-*.py[co]
761%{py_libdir}/__pycache__/heapq.cpython-*.py[co]
762%{py_libdir}/__pycache__/keyword.cpython-*.py[co]
763%{py_libdir}/__pycache__/linecache.cpython-*.py[co]
764%{py_libdir}/__pycache__/locale.cpython-*.py[co]
765%{py_libdir}/__pycache__/io.cpython-*.py[co]
766%{py_libdir}/__pycache__/operator.cpython-*.py[co]
767%{py_libdir}/__pycache__/posixpath.cpython-*.py[co]
768%{py_libdir}/__pycache__/re.cpython-*.py[co]
769%{py_libdir}/__pycache__/reprlib.cpython-*.py[co]
770%{py_libdir}/__pycache__/site.cpython-*.py[co]
771%{py_libdir}/__pycache__/sre_*.cpython-*.py[co]
772%{py_libdir}/__pycache__/stat.cpython-*.py[co]
773%{py_libdir}/__pycache__/sysconfig.cpython-*.py[co]
774%{py_libdir}/__pycache__/token.cpython-*.py[co]
775%{py_libdir}/__pycache__/tokenize.cpython-*.py[co]
776%{py_libdir}/__pycache__/traceback.cpython-*.py[co]
777%{py_libdir}/__pycache__/weakref.cpython-*.py[co]
778%{py_libdir}/__pycache__/os.cpython-*.py[co]
779%{py_libdir}/__pycache__/types.cpython-*.py[co]
780
781%{py_libdir}/collections
782
783# encodings required by python library
784%dir %{py_libdir}/encodings
785%{py_libdir}/encodings/__pycache__
786%{py_libdir}/encodings/*.py
787
788%dir %{py_libdir}/config-%{py_platform}
789%{py_libdir}/config-%{py_platform}/Makefile
790%{py_libdir}/config-%{py_platform}/Setup
791%{py_libdir}/config-%{py_platform}/Setup.local
792%{py_libdir}/config-%{py_platform}/pyconfig.h
793
794%files modules
795%defattr(644,root,root,755)
796%config(noreplace) %verify(not md5 mtime size) /etc/shrc.d/python*-modules*
797%{py_libdir}/__future__.py
798%{py_libdir}/__phello__.foo.py
799%{py_libdir}/_aix_support.py
800%{py_libdir}/_bootlocale.py
801%{py_libdir}/_bootsubprocess.py
802%{py_libdir}/_compat_pickle.py
803%{py_libdir}/_compression.py
804%{py_libdir}/_markupbase.py
805%{py_libdir}/_osx_support.py
806%{py_libdir}/_pydecimal.py
807%{py_libdir}/_py_abc.py
808%{py_libdir}/_pyio.py
809%{py_libdir}/_strptime.py
810%{py_libdir}/_threading_local.py
811%{py_libdir}/aifc.py
812%{py_libdir}/antigravity.py
813%{py_libdir}/argparse.py
814%{py_libdir}/ast.py
815%{py_libdir}/asynchat.py
816%{py_libdir}/asyncore.py
817%{py_libdir}/base64.py
818%{py_libdir}/bdb.py
819%{py_libdir}/binhex.py
820%{py_libdir}/bz2.py
821%{py_libdir}/cProfile.py
822%{py_libdir}/calendar.py
823%{py_libdir}/cgi.py
824%{py_libdir}/cgitb.py
825%{py_libdir}/chunk.py
826%{py_libdir}/cmd.py
827%{py_libdir}/code.py
828%{py_libdir}/codeop.py
829%{py_libdir}/colorsys.py
830%{py_libdir}/compileall.py
831%{py_libdir}/configparser.py
832%{py_libdir}/contextlib.py
833%{py_libdir}/contextvars.py
834%{py_libdir}/copy.py
835%{py_libdir}/crypt.py
836%{py_libdir}/csv.py
837%{py_libdir}/dataclasses.py
838%{py_libdir}/datetime.py
839%{py_libdir}/decimal.py
840%{py_libdir}/difflib.py
841%{py_libdir}/dis.py
842%{py_libdir}/doctest.py
843%{py_libdir}/filecmp.py
844%{py_libdir}/fileinput.py
845%{py_libdir}/fnmatch.py
846%{py_libdir}/formatter.py
847%{py_libdir}/fractions.py
848%{py_libdir}/ftplib.py
849%{py_libdir}/getopt.py
850%{py_libdir}/getpass.py
851%{py_libdir}/gettext.py
852%{py_libdir}/glob.py
853%{py_libdir}/graphlib.py
854%{py_libdir}/gzip.py
855%{py_libdir}/hashlib.py
856%{py_libdir}/hmac.py
857%{py_libdir}/imaplib.py
858%{py_libdir}/imghdr.py
859%{py_libdir}/imp.py
860%{py_libdir}/inspect.py
861%{py_libdir}/ipaddress.py
862%{py_libdir}/lzma.py
863%{py_libdir}/mailbox.py
864%{py_libdir}/mailcap.py
865%{py_libdir}/mimetypes.py
866%{py_libdir}/modulefinder.py
867%{py_libdir}/netrc.py
868%{py_libdir}/nntplib.py
869%{py_libdir}/ntpath.py
870%{py_libdir}/nturl2path.py
871%{py_libdir}/numbers.py
872%{py_libdir}/opcode.py
873%{py_libdir}/optparse.py
874%{py_libdir}/pathlib.py
875%{py_libdir}/pickle.py
876%{py_libdir}/pickletools.py
877%{py_libdir}/pipes.py
878%{py_libdir}/pkgutil.py
879%{py_libdir}/platform.py
880%{py_libdir}/plistlib.py
881%{py_libdir}/poplib.py
882%{py_libdir}/pprint.py
883%{py_libdir}/pty.py
884%{py_libdir}/py_compile.py
885%{py_libdir}/pyclbr.py
886%{py_libdir}/queue.py
887%{py_libdir}/quopri.py
888%{py_libdir}/random.py
889%{py_libdir}/rlcompleter.py
890%{py_libdir}/runpy.py
891%{py_libdir}/secrets.py
892%{py_libdir}/signal.py
893%{py_libdir}/sched.py
894%{py_libdir}/selectors.py
895%{py_libdir}/shelve.py
896%{py_libdir}/shlex.py
897%{py_libdir}/shutil.py
898%{py_libdir}/smtpd.py
899%{py_libdir}/smtplib.py
900%{py_libdir}/sndhdr.py
901%{py_libdir}/socket.py
902%{py_libdir}/socketserver.py
903%{py_libdir}/ssl.py
904%{py_libdir}/statistics.py
905%{py_libdir}/string.py
906%{py_libdir}/stringprep.py
907%{py_libdir}/struct.py
908%{py_libdir}/subprocess.py
909%{py_libdir}/sunau.py
910%{py_libdir}/symbol.py
911%{py_libdir}/symtable.py
912%{py_libdir}/tabnanny.py
913%{py_libdir}/tarfile.py
914%{py_libdir}/telnetlib.py
915%{py_libdir}/tempfile.py
916%{py_libdir}/textwrap.py
917%{py_libdir}/this.py
918%{py_libdir}/threading.py
919%{py_libdir}/trace.py
920%{py_libdir}/tracemalloc.py
921%{py_libdir}/tty.py
922%{py_libdir}/turtle.py
923%{py_libdir}/typing.py
924%{py_libdir}/uu.py
925%{py_libdir}/uuid.py
926%{py_libdir}/warnings.py
927%{py_libdir}/wave.py
928%{py_libdir}/webbrowser.py
929%{py_libdir}/xdrlib.py
930%{py_libdir}/zipapp.py
931%{py_libdir}/zipfile.py
932%{py_libdir}/zipimport.py
933%{py_libdir}/__pycache__/__future__.cpython-*.py[co]
934%{py_libdir}/__pycache__/__phello__.foo.cpython-*.py[co]
935%{py_libdir}/__pycache__/_aix_support.cpython-*.py[co]
936%{py_libdir}/__pycache__/_bootlocale.cpython-*.py[co]
937%{py_libdir}/__pycache__/_bootsubprocess.cpython-*.py[co]
938%{py_libdir}/__pycache__/_compat_pickle.cpython-*.py[co]
939%{py_libdir}/__pycache__/_compression.cpython-*.py[co]
940%{py_libdir}/__pycache__/_markupbase.cpython-*.py[co]
941%{py_libdir}/__pycache__/_osx_support.cpython-*.py[co]
942%{py_libdir}/__pycache__/_pydecimal.cpython-*.py[co]
943%{py_libdir}/__pycache__/_py_abc.cpython-*.py[co]
944%{py_libdir}/__pycache__/_pyio.cpython-*.py[co]
945%{py_libdir}/__pycache__/_strptime.cpython-*.py[co]
946%{py_libdir}/__pycache__/_threading_local.cpython-*.py[co]
947%{py_libdir}/__pycache__/aifc.cpython-*.py[co]
948%{py_libdir}/__pycache__/antigravity.cpython-*.py[co]
949%{py_libdir}/__pycache__/argparse.cpython-*.py[co]
950%{py_libdir}/__pycache__/ast.cpython-*.py[co]
951%{py_libdir}/__pycache__/asynchat.cpython-*.py[co]
952%{py_libdir}/__pycache__/asyncore.cpython-*.py[co]
953%{py_libdir}/__pycache__/base64.cpython-*.py[co]
954%{py_libdir}/__pycache__/bdb.cpython-*.py[co]
955%{py_libdir}/__pycache__/binhex.cpython-*.py[co]
956%{py_libdir}/__pycache__/bz2.cpython-*.py[co]
957%{py_libdir}/__pycache__/cProfile.cpython-*.py[co]
958%{py_libdir}/__pycache__/calendar.cpython-*.py[co]
959%{py_libdir}/__pycache__/cgi.cpython-*.py[co]
960%{py_libdir}/__pycache__/cgitb.cpython-*.py[co]
961%{py_libdir}/__pycache__/chunk.cpython-*.py[co]
962%{py_libdir}/__pycache__/cmd.cpython-*.py[co]
963%{py_libdir}/__pycache__/contextvars.cpython-*.py[co]
964%{py_libdir}/__pycache__/code.cpython-*.py[co]
965%{py_libdir}/__pycache__/codeop.cpython-*.py[co]
966%{py_libdir}/__pycache__/colorsys.cpython-*.py[co]
967%{py_libdir}/__pycache__/compileall.cpython-*.py[co]
968%{py_libdir}/__pycache__/configparser.cpython-*.py[co]
969%{py_libdir}/__pycache__/contextlib.cpython-*.py[co]
970%{py_libdir}/__pycache__/copy.cpython-*.py[co]
971%{py_libdir}/__pycache__/crypt.cpython-*.py[co]
972%{py_libdir}/__pycache__/csv.cpython-*.py[co]
973%{py_libdir}/__pycache__/dataclasses.cpython-*.py[co]
974%{py_libdir}/__pycache__/datetime.cpython-*.py[co]
975%{py_libdir}/__pycache__/decimal.cpython-*.py[co]
976%{py_libdir}/__pycache__/difflib.cpython-*.py[co]
977%{py_libdir}/__pycache__/dis.cpython-*.py[co]
978%{py_libdir}/__pycache__/doctest.cpython-*.py[co]
979%{py_libdir}/__pycache__/filecmp.cpython-*.py[co]
980%{py_libdir}/__pycache__/fileinput.cpython-*.py[co]
981%{py_libdir}/__pycache__/fnmatch.cpython-*.py[co]
982%{py_libdir}/__pycache__/formatter.cpython-*.py[co]
983%{py_libdir}/__pycache__/fractions.cpython-*.py[co]
984%{py_libdir}/__pycache__/ftplib.cpython-*.py[co]
985%{py_libdir}/__pycache__/getopt.cpython-*.py[co]
986%{py_libdir}/__pycache__/getpass.cpython-*.py[co]
987%{py_libdir}/__pycache__/gettext.cpython-*.py[co]
988%{py_libdir}/__pycache__/glob.cpython-*.py[co]
989%{py_libdir}/__pycache__/graphlib.cpython-*.py[co]
990%{py_libdir}/__pycache__/gzip.cpython-*.py[co]
991%{py_libdir}/__pycache__/hashlib.cpython-*.py[co]
992%{py_libdir}/__pycache__/hmac.cpython-*.py[co]
993%{py_libdir}/__pycache__/imaplib.cpython-*.py[co]
994%{py_libdir}/__pycache__/imghdr.cpython-*.py[co]
995%{py_libdir}/__pycache__/imp.cpython-*.py[co]
996%{py_libdir}/__pycache__/inspect.cpython-*.py[co]
997%{py_libdir}/__pycache__/ipaddress.cpython-*.py[co]
998%{py_libdir}/__pycache__/lzma.cpython-*.py[co]
999%{py_libdir}/__pycache__/mailbox.cpython-*.py[co]
1000%{py_libdir}/__pycache__/mailcap.cpython-*.py[co]
1001%{py_libdir}/__pycache__/mimetypes.cpython-*.py[co]
1002%{py_libdir}/__pycache__/modulefinder.cpython-*.py[co]
1003%{py_libdir}/__pycache__/netrc.cpython-*.py[co]
1004%{py_libdir}/__pycache__/nntplib.cpython-*.py[co]
1005%{py_libdir}/__pycache__/ntpath.cpython-*.py[co]
1006%{py_libdir}/__pycache__/nturl2path.cpython-*.py[co]
1007%{py_libdir}/__pycache__/numbers.cpython-*.py[co]
1008%{py_libdir}/__pycache__/opcode.cpython-*.py[co]
1009%{py_libdir}/__pycache__/optparse.cpython-*.py[co]
1010%{py_libdir}/__pycache__/pathlib.cpython-*.py[co]
1011%{py_libdir}/__pycache__/pickle.cpython-*.py[co]
1012%{py_libdir}/__pycache__/pickletools.cpython-*.py[co]
1013%{py_libdir}/__pycache__/pipes.cpython-*.py[co]
1014%{py_libdir}/__pycache__/pkgutil.cpython-*.py[co]
1015%{py_libdir}/__pycache__/platform.cpython-*.py[co]
1016%{py_libdir}/__pycache__/plistlib.cpython-*.py[co]
1017%{py_libdir}/__pycache__/poplib.cpython-*.py[co]
1018%{py_libdir}/__pycache__/pprint.cpython-*.py[co]
1019%{py_libdir}/__pycache__/pty.cpython-*.py[co]
1020%{py_libdir}/__pycache__/py_compile.cpython-*.py[co]
1021%{py_libdir}/__pycache__/pyclbr.cpython-*.py[co]
1022%{py_libdir}/__pycache__/queue.cpython-*.py[co]
1023%{py_libdir}/__pycache__/quopri.cpython-*.py[co]
1024%{py_libdir}/__pycache__/random.cpython-*.py[co]
1025%{py_libdir}/__pycache__/rlcompleter.cpython-*.py[co]
1026%{py_libdir}/__pycache__/runpy.cpython-*.py[co]
1027%{py_libdir}/__pycache__/sched.cpython-*.py[co]
1028%{py_libdir}/__pycache__/secrets.cpython-*.py[co]
1029%{py_libdir}/__pycache__/selectors.cpython-*.py[co]
1030%{py_libdir}/__pycache__/shelve.cpython-*.py[co]
1031%{py_libdir}/__pycache__/shlex.cpython-*.py[co]
1032%{py_libdir}/__pycache__/shutil.cpython-*.py[co]
1033%{py_libdir}/__pycache__/signal.cpython-*.py[co]
1034%{py_libdir}/__pycache__/smtpd.cpython-*.py[co]
1035%{py_libdir}/__pycache__/smtplib.cpython-*.py[co]
1036%{py_libdir}/__pycache__/sndhdr.cpython-*.py[co]
1037%{py_libdir}/__pycache__/socket.cpython-*.py[co]
1038%{py_libdir}/__pycache__/socketserver.cpython-*.py[co]
1039%{py_libdir}/__pycache__/ssl.cpython-*.py[co]
1040%{py_libdir}/__pycache__/statistics.cpython-*.py[co]
1041%{py_libdir}/__pycache__/string.cpython-*.py[co]
1042%{py_libdir}/__pycache__/stringprep.cpython-*.py[co]
1043%{py_libdir}/__pycache__/struct.cpython-*.py[co]
1044%{py_libdir}/__pycache__/subprocess.cpython-*.py[co]
1045%{py_libdir}/__pycache__/sunau.cpython-*.py[co]
1046%{py_libdir}/__pycache__/symbol.cpython-*.py[co]
1047%{py_libdir}/__pycache__/symtable.cpython-*.py[co]
1048%{py_libdir}/__pycache__/tabnanny.cpython-*.py[co]
1049%{py_libdir}/__pycache__/tarfile.cpython-*.py[co]
1050%{py_libdir}/__pycache__/telnetlib.cpython-*.py[co]
1051%{py_libdir}/__pycache__/tempfile.cpython-*.py[co]
1052%{py_libdir}/__pycache__/textwrap.cpython-*.py[co]
1053%{py_libdir}/__pycache__/this.cpython-*.py[co]
1054%{py_libdir}/__pycache__/threading.cpython-*.py[co]
1055%{py_libdir}/__pycache__/trace.cpython-*.py[co]
1056%{py_libdir}/__pycache__/tracemalloc.cpython-*.py[co]
1057%{py_libdir}/__pycache__/tty.cpython-*.py[co]
1058%{py_libdir}/__pycache__/turtle.cpython-*.py[co]
1059%{py_libdir}/__pycache__/typing.cpython-*.py[co]
1060%{py_libdir}/__pycache__/uu.cpython-*.py[co]
1061%{py_libdir}/__pycache__/uuid.cpython-*.py[co]
1062%{py_libdir}/__pycache__/warnings.cpython-*.py[co]
1063%{py_libdir}/__pycache__/wave.cpython-*.py[co]
1064%{py_libdir}/__pycache__/webbrowser.cpython-*.py[co]
1065%{py_libdir}/__pycache__/xdrlib.cpython-*.py[co]
1066%{py_libdir}/__pycache__/zipapp.cpython-*.py[co]
1067%{py_libdir}/__pycache__/zipfile.cpython-*.py[co]
1068%{py_libdir}/__pycache__/zipimport.cpython-*.py[co]
1069
1070#
1071# list .so modules to be sure that all of them are built
1072#
1073
1074%attr(755,root,root) %{py_dyndir}/_asyncio.cpython-*.so
1075%attr(755,root,root) %{py_dyndir}/_bisect.cpython-*.so
1076%attr(755,root,root) %{py_dyndir}/_blake2.cpython-*.so
1077%attr(755,root,root) %{py_dyndir}/_bz2.cpython-*.so
1078%attr(755,root,root) %{py_dyndir}/_codecs_cn.cpython-*.so
1079%attr(755,root,root) %{py_dyndir}/_codecs_hk.cpython-*.so
1080%attr(755,root,root) %{py_dyndir}/_codecs_iso2022.cpython-*.so
1081%attr(755,root,root) %{py_dyndir}/_codecs_jp.cpython-*.so
1082%attr(755,root,root) %{py_dyndir}/_codecs_kr.cpython-*.so
1083%attr(755,root,root) %{py_dyndir}/_codecs_tw.cpython-*.so
1084%attr(755,root,root) %{py_dyndir}/_contextvars.cpython-*.so
1085%attr(755,root,root) %{py_dyndir}/_crypt.cpython-*.so
1086%attr(755,root,root) %{py_dyndir}/_csv.cpython-*.so
1087%attr(755,root,root) %{py_dyndir}/_ctypes*.cpython-*.so
1088%attr(755,root,root) %{py_dyndir}/_curses_panel.cpython-*.so
1089%attr(755,root,root) %{py_dyndir}/_curses.cpython-*.so
1090%attr(755,root,root) %{py_dyndir}/_datetime.cpython-*.so
1091%ifnarch sparc64
1092%attr(755,root,root) %{py_dyndir}/_dbm.cpython-*.so
1093%endif
1094%attr(755,root,root) %{py_dyndir}/_decimal.cpython-*.so
1095%attr(755,root,root) %{py_dyndir}/_elementtree.cpython-*.so
1096%attr(755,root,root) %{py_dyndir}/_gdbm.cpython-*.so
1097%attr(755,root,root) %{py_dyndir}/_hashlib.cpython-*.so
1098%attr(755,root,root) %{py_dyndir}/_heapq.cpython-*.so
1099%attr(755,root,root) %{py_dyndir}/_json.cpython-*.so
1100%attr(755,root,root) %{py_dyndir}/_lsprof.cpython-*.so
1101%attr(755,root,root) %{py_dyndir}/_lzma.cpython-*.so
1102%attr(755,root,root) %{py_dyndir}/_md5.cpython-*.so
1103%attr(755,root,root) %{py_dyndir}/_multibytecodec.cpython-*.so
1104%attr(755,root,root) %{py_dyndir}/_multiprocessing.cpython-*.so
1105%attr(755,root,root) %{py_dyndir}/_opcode.cpython-*.so
1106%attr(755,root,root) %{py_dyndir}/_pickle.cpython-*.so
1107%attr(755,root,root) %{py_dyndir}/_posixshmem.cpython-*.so
1108%attr(755,root,root) %{py_dyndir}/_posixsubprocess.cpython-*.so
1109%attr(755,root,root) %{py_dyndir}/_queue.cpython-*.so
1110%attr(755,root,root) %{py_dyndir}/_random.cpython-*.so
1111%attr(755,root,root) %{py_dyndir}/_sha1.cpython-*.so
1112%attr(755,root,root) %{py_dyndir}/_sha3.cpython-*.so
1113%attr(755,root,root) %{py_dyndir}/_socket.cpython-*.so
1114%attr(755,root,root) %{py_dyndir}/_ssl.cpython-*.so
1115%attr(755,root,root) %{py_dyndir}/_statistics.cpython-*.so
1116%attr(755,root,root) %{py_dyndir}/_testbuffer.cpython-*.so
1117%attr(755,root,root) %{py_dyndir}/_testcapi.cpython-*.so
1118%attr(755,root,root) %{py_dyndir}/_testinternalcapi.cpython-*.so
1119%attr(755,root,root) %{py_dyndir}/_testimportmultiple.cpython-*.so
1120%attr(755,root,root) %{py_dyndir}/_testmultiphase.cpython-*.so
1121%attr(755,root,root) %{py_dyndir}/_uuid.cpython-*.so
1122%attr(755,root,root) %{py_dyndir}/_xxsubinterpreters.cpython-*.so
1123%attr(755,root,root) %{py_dyndir}/_xxtestfuzz.cpython-*.so
1124
1125# for openssl < 0.9.8 package sha256 and sha512 modules
1126%if "%{pld_release}" != "ac"
1127%attr(755,root,root) %{py_dyndir}/_sha256.cpython-*.so
1128%attr(755,root,root) %{py_dyndir}/_sha512.cpython-*.so
1129%endif
1130
1131%attr(755,root,root) %{py_dyndir}/array.cpython-*.so
1132%attr(755,root,root) %{py_dyndir}/audioop.cpython-*.so
1133%attr(755,root,root) %{py_dyndir}/binascii.cpython-*.so
1134%attr(755,root,root) %{py_dyndir}/cmath.cpython-*.so
1135%attr(755,root,root) %{py_dyndir}/fcntl.cpython-*.so
1136%attr(755,root,root) %{py_dyndir}/grp.cpython-*.so
1137%attr(755,root,root) %{py_dyndir}/math.cpython-*.so
1138%attr(755,root,root) %{py_dyndir}/mmap.cpython-*.so
1139%attr(755,root,root) %{py_dyndir}/nis.cpython-*.so
1140%attr(755,root,root) %{py_dyndir}/ossaudiodev.cpython-*.so
1141%attr(755,root,root) %{py_dyndir}/parser.cpython-*.so
1142%attr(755,root,root) %{py_dyndir}/pyexpat.cpython-*.so
1143%attr(755,root,root) %{py_dyndir}/readline.cpython-*.so
1144%attr(755,root,root) %{py_dyndir}/resource.cpython-*.so
1145%attr(755,root,root) %{py_dyndir}/select.cpython-*.so
1146%attr(755,root,root) %{py_dyndir}/syslog.cpython-*.so
1147%attr(755,root,root) %{py_dyndir}/termios.cpython-*.so
1148%attr(755,root,root) %{py_dyndir}/spwd.cpython-*.so
1149%attr(755,root,root) %{py_dyndir}/unicodedata.cpython-*.so
1150%attr(755,root,root) %{py_dyndir}/zlib.cpython-*.so
1151
1152%dir %{py_libdir}/asyncio
1153%{py_libdir}/asyncio/__pycache__
1154%{py_libdir}/asyncio/*.py
1155
1156%{py_libdir}/concurrent
1157
1158%dir %{py_libdir}/ctypes
1159%dir %{py_libdir}/ctypes/macholib
1160%{py_libdir}/ctypes/__pycache__
1161%{py_libdir}/ctypes/macholib/__pycache__
1162
1163%{py_libdir}/ctypes/*.py
1164%{py_libdir}/ctypes/macholib/*.py
1165%doc %{py_libdir}/ctypes/macholib/README.ctypes
1166
1167%dir %{py_libdir}/curses
1168%{py_libdir}/curses/__pycache__
1169%{py_libdir}/curses/*.py
1170
1171%dir %{py_libdir}/dbm
1172%{py_libdir}/dbm/__pycache__
1173%{py_libdir}/dbm/*.py
1174
1175%dir %{py_libdir}/distutils
1176%dir %{py_libdir}/distutils/command
1177%doc %{py_libdir}/distutils/README
1178%{py_libdir}/distutils/__pycache__
1179%{py_libdir}/distutils/command/__pycache__
1180%{py_libdir}/distutils/*.py
1181%{py_libdir}/distutils/command/*.py
1182%{py_libdir}/distutils/command/command_template
1183
1184%dir %{py_libdir}/email
1185%dir %{py_libdir}/email/mime
1186%{py_libdir}/email/__pycache__
1187%{py_libdir}/email/mime/__pycache__
1188%{py_libdir}/email/architecture.rst
1189%{py_libdir}/email/*.py
1190%{py_libdir}/email/mime/*.py
1191
1192%dir %{py_libdir}/ensurepip
1193%{py_libdir}/ensurepip/__pycache__
1194%{py_libdir}/ensurepip/*.py
1195%{py_libdir}/ensurepip/_bundled
1196
1197%dir %{py_libdir}/html
1198%{py_libdir}/html/*.py
1199%{py_libdir}/html/__pycache__
1200
1201%dir %{py_libdir}/http
1202%{py_libdir}/http/__pycache__
1203%{py_libdir}/http/*.py
1204
1205%dir %{py_libdir}/idlelib
1206
1207%dir %{py_libdir}/importlib
1208%{py_libdir}/importlib/__pycache__
1209%{py_libdir}/importlib/*.py
1210
1211%dir %{py_libdir}/json
1212%{py_libdir}/json/__pycache__
1213%{py_libdir}/json/*.py
1214
1215%dir %{py_libdir}/logging
1216%{py_libdir}/logging/__pycache__
1217%{py_libdir}/logging/*.py
1218
1219%dir %{py_libdir}/multiprocessing
1220%{py_libdir}/multiprocessing/__pycache__
1221%{py_libdir}/multiprocessing/*.py
1222%dir %{py_libdir}/multiprocessing/dummy
1223%{py_libdir}/multiprocessing/dummy/__pycache__
1224%{py_libdir}/multiprocessing/dummy/*.py
1225
1226%{py_libdir}/turtledemo
1227
1228%dir %{py_libdir}/unittest
1229%{py_libdir}/unittest/__pycache__
1230%{py_libdir}/unittest/*.py
1231
1232%dir %{py_libdir}/urllib
1233%{py_libdir}/urllib/__pycache__
1234%{py_libdir}/urllib/*.py
1235
1236%dir %{py_libdir}/venv
1237%{py_libdir}/venv/__pycache__
1238%{py_libdir}/venv/*.py
1239%dir %{py_libdir}/venv/scripts
1240%dir %{py_libdir}/venv/scripts/common
1241%{py_libdir}/venv/scripts/common/Activate.ps1
1242%{py_libdir}/venv/scripts/common/activate
1243%dir %{py_libdir}/venv/scripts/posix
1244%{py_libdir}/venv/scripts/posix/activate.csh
1245%{py_libdir}/venv/scripts/posix/activate.fish
1246
1247%dir %{py_libdir}/wsgiref
1248%{py_libdir}/wsgiref/__pycache__
1249%{py_libdir}/wsgiref/*.py
1250
1251%dir %{py_libdir}/xml
1252%dir %{py_libdir}/xml/dom
1253%dir %{py_libdir}/xml/etree
1254%dir %{py_libdir}/xml/parsers
1255%dir %{py_libdir}/xml/sax
1256%{py_libdir}/xml/__pycache__
1257%{py_libdir}/xml/dom/__pycache__
1258%{py_libdir}/xml/etree/__pycache__
1259%{py_libdir}/xml/parsers/__pycache__
1260%{py_libdir}/xml/sax/__pycache__
1261%{py_libdir}/xml/*.py
1262%{py_libdir}/xml/dom/*.py
1263%{py_libdir}/xml/etree/*.py
1264%{py_libdir}/xml/parsers/*.py
1265%{py_libdir}/xml/sax/*.py
1266
1267%dir %{py_libdir}/xmlrpc
1268%{py_libdir}/xmlrpc/__pycache__
1269%{py_libdir}/xmlrpc/*.py
1270
1271%attr(755,root,root) %{py_dyndir}/_sqlite3.cpython-*.so
1272%dir %{py_libdir}/sqlite3
1273%{py_libdir}/sqlite3/__pycache__
1274%{py_libdir}/sqlite3/*.py
1275
1276%attr(755,root,root) %{py_dyndir}/_zoneinfo.cpython-*.so
1277%dir %{py_libdir}/zoneinfo
1278%{py_libdir}/zoneinfo/__pycache__
1279%{py_libdir}/zoneinfo/*.py
1280
1281%files -n pydoc3
1282%defattr(644,root,root,755)
1283%attr(755,root,root) %{_bindir}/pydoc3
1284%attr(755,root,root) %{_bindir}/pydoc%{py_ver}
1285%{py_libdir}/pydoc.py
1286%{py_libdir}/__pycache__/pydoc.cpython-*.py[co]
1287%dir %{py_libdir}/pydoc_data
1288%{py_libdir}/pydoc_data/__pycache__
1289%{py_libdir}/pydoc_data/*.py
1290%{py_libdir}/pydoc_data/*.css
1291
1292%files -n idle3
1293%defattr(644,root,root,755)
1294%attr(755,root,root) %{_bindir}/idle3
1295%attr(755,root,root) %{_bindir}/idle%{py_ver}
1296%dir %{py_libdir}/idlelib/Icons
1297%{py_libdir}/idlelib/__pycache__
1298%{py_libdir}/idlelib/*.py
1299%doc %{py_libdir}/idlelib/*.txt
1300%doc %{py_libdir}/idlelib/ChangeLog
1301%{py_libdir}/idlelib/Icons/*
1302%{py_libdir}/idlelib/*.def
1303
1304%files devel
1305%defattr(644,root,root,755)
1306%doc Misc/{ACKS,NEWS,README,README.valgrind,valgrind-python.supp}
1307%attr(755,root,root) %{_bindir}/python%{py_ver}-config
1308%if "%{py_ver}" != "%{py_abi}"
1309%attr(755,root,root) %{_bindir}/python%{py_abi}-config
1310%endif
1311%attr(755,root,root) %{_bindir}/python3-config
1312%attr(755,root,root) %{_libdir}/libpython%{py_abi}.so
1313%attr(755,root,root) %{_libdir}/libpython3.so
1314%{py_incdir}/*.h
1315%exclude %{py_incdir}/pyconfig.h
1316%{py_incdir}/cpython
1317%{py_incdir}/internal
1318%attr(755,root,root) %{py_libdir}/config-%{py_platform}/makesetup
1319%attr(755,root,root) %{py_libdir}/config-%{py_platform}/install-sh
1320%{py_libdir}/config-%{py_platform}/config.c
1321%{py_libdir}/config-%{py_platform}/config.c.in
1322%{py_libdir}/config-%{py_platform}/python.o
1323%{py_libdir}/config-%{py_platform}/python-config.py
1324%dir %{py_libdir}/config-%{py_platform}/__pycache__
1325%{py_libdir}/config-%{py_platform}/__pycache__/python-config.*
1326%{_pkgconfigdir}/python-%{py_ver}.pc
1327%{_pkgconfigdir}/python-%{py_ver}-embed.pc
1328%{_pkgconfigdir}/python3-embed.pc
1329%if "%{py_ver}" != "%{py_abi}"
1330%{_pkgconfigdir}/python-%{py_abi}.pc
1331%endif
1332%{_pkgconfigdir}/python3.pc
1333
1334%files devel-tools
1335%defattr(644,root,root,755)
1336%config(noreplace) %verify(not md5 mtime size) /etc/shrc.d/python*-devel*
1337%attr(755,root,root) %{_bindir}/pygettext%{py_ver}
1338%attr(755,root,root) %{_bindir}/pyreindent%{py_ver}
1339%{py_libdir}/pdb.py
1340%{py_libdir}/profile.py
1341%{py_libdir}/pstats.py
1342%{py_libdir}/timeit.py
1343%{py_libdir}/__pycache__/pdb.cpython-*.py[co]
1344%{py_libdir}/__pycache__/profile.cpython-*.py[co]
1345%{py_libdir}/__pycache__/pstats.cpython-*.py[co]
1346%{py_libdir}/__pycache__/timeit.cpython-*.py[co]
1347
1348%files 2to3
1349%defattr(644,root,root,755)
1350%attr(755,root,root) %{_bindir}/2to3-%{py_ver}
1351%dir %{py_libdir}/lib2to3
1352%{py_libdir}/lib2to3/__pycache__
1353%{py_libdir}/lib2to3/*.txt
1354%{py_libdir}/lib2to3/*.pickle
1355%{py_libdir}/lib2to3/*.py
1356%dir %{py_libdir}/lib2to3/fixes
1357%{py_libdir}/lib2to3/fixes/__pycache__
1358%{py_libdir}/lib2to3/fixes/*.py
1359%dir %{py_libdir}/lib2to3/pgen2
1360%{py_libdir}/lib2to3/pgen2/__pycache__
1361%{py_libdir}/lib2to3/pgen2/*.py
1362
1363%files static
1364%defattr(644,root,root,755)
1365%{_libdir}/libpython%{py_abi}.a
1366
1367%files examples
1368%defattr(644,root,root,755)
1369%{_examplesdir}/%{name}-%{version}
1370
1371%files test
1372%defattr(644,root,root,755)
1373%{py_libdir}/idlelib/idle_test
1374%{py_libdir}/test
1375%{py_libdir}/ctypes/test
1376%{py_libdir}/distutils/tests
1377%{py_libdir}/lib2to3/tests
1378%{py_libdir}/sqlite3/test
1379%{py_libdir}/tkinter/test
1380%{py_libdir}/unittest/test
1381
1382%if %{with info}
1383%files doc-info
1384%defattr(644,root,root,755)
1385%{_infodir}/python.info*
1386%endif
1387
1388%if %{with tkinter}
1389%files tkinter
1390%defattr(644,root,root,755)
1391%dir %{py_libdir}/tkinter
1392%{py_libdir}/tkinter/__pycache__
1393%{py_libdir}/tkinter/*.py
1394%attr(755,root,root) %{py_dyndir}/_tkinter.cpython-*.so
1395%endif
This page took 0.0489 seconds and 4 git commands to generate.