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