+# NOTE: tests require processes limit >128 (256 is sufficient)
#
# Conditional build:
%bcond_with info # info pages (requires emacs)
%bcond_without tkinter # disables tkinter module building
%bcond_without tests # disables Python testing
%bcond_with verbose_tests # runs tests in verbose mode
+%bcond_without optimizations # expensive, stable optimizations (PGO etc.) + LTO
#
# tests which will not work on 64-bit platforms
-%define no64bit_tests test_audioop test_rgbimg test_imageop
+%define no64bit_tests -x test_audioop -x test_rgbimg -x test_imageop
# tests which may fail because of builder environment limitations (no /proc or /dev/pts)
-%define nobuilder_tests test_resource test_openpty test_socket test_nis test_posix test_locale test_pty test_asyncio test_os test_readline
+%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
# tests which fail because of some unknown/unresolved reason (this list should be %{nil})
# test_site: fails because our site.py is patched to include both /usr/share/... and /usr/lib...
# test_gdb: fails, as the gdb uses old python version
# test_time: test_AsTimeval (test.test_time.TestCPyTime), rounding error
%ifarch x32
-%define broken_tests_x32 test_time
+%define broken_tests_x32 -x test_time
+%undefine with_optimizations
%endif
-%define broken_tests test_nntplib test_gdb test_site test_ssl %{?broken_tests_x32}
+%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}
-%define py_ver 3.6
-%define py_abi %{py_ver}m
-%define py_platform %{py_abi}-%{_target_base_arch}-%{_target_os}%{?_gnu}
+%ifarch armv6hl armv7hl armv7hnl
+%define _python_target_abi %{?_gnu}hf
+%else
+%define _python_target_abi %{?_gnu}
+%endif
+
+%define py_ver 3.10
+%define py_abi %{py_ver}
+%define py_platform %{py_abi}-%{_target_base_arch}-%{_target_os}%{?_python_target_abi}
%define py_prefix %{_prefix}
%define py_libdir %{py_prefix}/%{_lib}/python%{py_ver}
%define py_incdir %{_includedir}/python%{py_abi}
Summary(tr.UTF-8): X arayüzlü, yüksek düzeyli, kabuk yorumlayıcı dili
Summary(uk.UTF-8): Мова програмування дуже високого рівня з X-інтерфейсом
Name: python3
-Version: %{py_ver}.1
+Version: %{py_ver}.7
Release: 1
Epoch: 1
License: PSF
Group: Development/Languages/Python
Source0: https://www.python.org/ftp/python/%{version}/Python-%{version}.tar.xz
-# Source0-md5: 692b4fc3a2ba0d54d1495d4ead5b0b5c
+# Source0-md5: b8094f007b3a835ca3be6bdf8116cccc
Source1: pyconfig.h.in
Patch0: %{name}-pythonpath.patch
Patch1: %{name}-ac_fixes.patch
Patch2: %{name}-multilib.patch
Patch3: %{name}-no_cmdline_tests.patch
-Patch4: %{name}-makefile-location.patch
-Patch6: python-distro.patch
+Patch4: %{name}-BLDLIBRARY.patch
+Patch5: %{name}-config.patch
Patch7: %{name}-db.patch
-Patch8: %{name}-install_prefix.patch
Patch9: %{name}-tests_with_pythonpath.patch
Patch10: %{name}-bdist_rpm.patch
Patch11: %{name}-installcompile.patch
-Patch12: https://bugs.python.org/file21896/nonexistent_user.patch
-# Patch12-md5: db706fbe6de467c6e4c97c675eddf29a
+
+Patch13: %{name}-no-randomize-tests.patch
+Patch14: python3-profile-tests.patch
+Patch15: python3-tests.patch
URL: https://www.python.org/
BuildRequires: autoconf >= 2.65
+BuildRequires: autoconf-archive
BuildRequires: automake
BuildRequires: bluez-libs-devel
BuildRequires: bzip2-devel
BuildRequires: expat-devel >= 1:1.95.7
BuildRequires: file
BuildRequires: gdbm-devel >= 1.8.3
+%if %(locale -a | grep -q '^C\.utf8$'; echo $?)
+BuildRequires: glibc-localedb-all
+%endif
BuildRequires: gmp-devel >= 4.0
BuildRequires: libffi-devel
+BuildRequires: libnsl-devel
BuildRequires: libstdc++-devel
-%{?with_system_mpdecimal:BuildRequires: mpdecimal-devel >= 2.4.1}
+BuildRequires: libtirpc-devel
+%{?with_system_mpdecimal:BuildRequires: mpdecimal-devel >= 2.5.0}
BuildRequires: ncurses-ext-devel >= 5.2
BuildRequires: openssl-devel >= 0.9.7
BuildRequires: pkgconfig
%define specflags_ppc64 -D__ppc64__=1
%if %{with verbose_tests}
-%define test_flags -v -x
+%define test_flags -v
%else
-%define test_flags -w -x
+%define test_flags -wW
%endif
%ifarch alpha ia64 ppc64 sparc64 ppc64 %{x8664}
%endif
%ifarch sparc
-%define test_list %{nobuilder_tests} %{broken_tests} test_fcntl test_ioctl
+%define test_list %{nobuilder_tests} %{broken_tests} -x test_fcntl -x test_ioctl
%endif
%description
Provides: python(abi) = %{py_ver}
# for compatibility with existing Ac packages
Provides: python(bytecode) = %{py_ver}
-%{!?with_info:Obsoletes: python3-doc-info}
+Provides: python3-enum
+Obsoletes: python3-enum < 0.5
+%{!?with_info:Obsoletes: python3-doc-info < %{epoch}:%{version}-%{release}}
%description libs
Python shared library and very essental modules for Python binary.
Summary(pl.UTF-8): Moduły języka Python
Group: Libraries/Python
Requires: %{name}-libs = %{epoch}:%{version}-%{release}
-%{?with_system_mpdecimal:Requires: mpdecimal >= 2.4.1}
-Provides: python3-enum
-Obsoletes: python3-enum
-Obsoletes: python3-modules-sqlite
+%{?with_system_mpdecimal:Requires: mpdecimal >= 2.4.2-2}
+Obsoletes: python3-modules-sqlite < 1:3.1-2
%requires_ge_to openssl openssl-devel
%description modules
Summary(uk.UTF-8): Бібліотеки та хедери для програмування на мові Python
Group: Development/Languages/Python
Requires: %{name}-libs = %{epoch}:%{version}-%{release}
+Obsoletes: python3-devel-src < 1:3.2-1
%description devel
The Python interpreter is relatively easy to extend with dynamically
розширень з динамічною загрузкою та вбудовується в інші програми. Цей
пакет містить хедери та бібліотеки, необхідні для обох цих задач.
-%package devel-src
-Summary: Python module sources
-Summary(pl.UTF-8): Pliki źródłowe modułów Pythona
-Group: Development/Languages/Python
-Requires: %{name}-modules = %{epoch}:%{version}-%{release}
-
-%description devel-src
-Python module sources.
-
-%description devel-src -l pl.UTF-8
-Pliki źródłowe modułów Pythona.
-
%package devel-tools
Summary: Python development tools
Summary(pl.UTF-8): Narzędzia programistyczne języka Python
Summary: Example programs in Python
Summary(pl.UTF-8): Przykładowe programy w Pythonie
Group: Development/Languages/Python
+BuildArch: noarch
%description examples
Example programs in Python.
%patch2 -p1
%patch3 -p1
%patch4 -p1
-%patch6 -p1
+%patch5 -p1
%patch7 -p1
-%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
-%patch12 -p1
-%{__rm} -r Modules/zlib
+%patch13 -p1
+%patch14 -p1
+%patch15 -p1
+
%{__rm} -r Modules/expat
-for SUBDIR in darwin libffi libffi_msvc libffi_osx; do
+for SUBDIR in darwin libffi_osx; do
%{__rm} -r Modules/_ctypes/$SUBDIR/*
done
done
%endif
+sed -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,' \
+ Tools/gdb/libpython.py \
+ Tools/pynche/pynche \
+ Tools/pynche/pynche.pyw \
+ Tools/scripts/2to3
+
+sed -E -i -e '1s,#!\s*/usr/bin/env\s+python3(\s|$),#!%{__python3}\1,' \
+ Tools/scripts/idle3 \
+ Tools/scripts/pydoc3
+
find . -name '*.py' | xargs -r grep -El '^#! */usr/bin/env python3?' | xargs %{__sed} -i -e '1s,^#! */usr/bin/env python3\?,#!/usr/bin/python3,'
+sed -E -i -e '1s,#!\s*/usr/bin/env\s+bash(\s|$),#!/bin/bash\1,' \
+ Tools/c-analyzer/must-resolve.sh
+
%build
if ! grep -q "tmpfs" /proc/self/mounts; then
echo "You need to have /dev/shm mounted in order to build this package!" >&2
%{__autoconf}
%configure \
CC="%{__cc}" \
- OPT="%{rpmcflags} -fno-caller-saves" \
+ OPT="%{rpmcflags}" \
CPPFLAGS="%{rpmcppflags}" \
LDFLAGS="%{rpmldflags}" \
+ LDFLAGS_NODIST="%{debuginfocflags}" \
ac_cv_posix_semaphores_enabled=yes \
ac_cv_broken_sem_getvalue=no \
--enable-ipv6 \
--with-dbmliborder=gdbm:ndbm:bdb \
--with-doc-strings \
--without-ensurepip \
- --with-fpectl \
+ --with-platlibdir="%{_lib}" \
%{?with_debug:--with-pydebug} \
+ --with-ssl-default-suites=openssl \
--with-system-expat \
--with-system-ffi \
%{?with_system_mpdecimal:--with-system-libmpdec} \
- --with-threads
+%if %{with optimizations}
+ --enable-optimizations \
+ --with-lto
+%endif
+
+if grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then
+ echo "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777." >&2
+ exit 1
+fi
-%{__make} 2>&1 | awk '
+%{__make} \
+ TESTOPTS="%{_smp_mflags} %{test_list}" \
+ 2>&1 | awk '
BEGIN { fail = 0; logmsg = ""; }
{
if ($0 ~ /\*\*\* WARNING:/) {
}
END { if (fail) { print "\nPROBLEMS FOUND:"; print logmsg; exit(1); } }'
-LC_ALL=C
+LC_ALL=C.UTF-8
export LC_ALL
%if %{with tests}
-binlibdir=`echo build/lib.*`
-# -l and -j don't go together! and -j is brought up by Tools/scripts/run_tests.py
WITHIN_PYTHON_RPM_BUILD=1 %{__make} test \
- TESTOPTS="%{test_flags} %{test_list}" \
- TESTPYTHON="LD_LIBRARY_PATH=`pwd` PYTHONHOME=`pwd` PYTHONPATH=`pwd`/Lib:`pwd`/$binlibdir ./python -tt"
+ TESTOPTS="%{test_flags} %{test_list}"
+%endif
+
+%if %{with info}
+%{__make} -C Doc texinfo
+%{__make} -C Doc/build/texinfo info
%endif
%install
$RPM_BUILD_ROOT{%{py_sitedir},%{py_sitescriptdir}}/__pycache__ \
$RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version} \
$RPM_BUILD_ROOT{%{_infodir},%{_mandir}/man1} \
- $RPM_BUILD_ROOT/etc/shrc.d
+ $RPM_BUILD_ROOT/etc/shrc.d \
+ $RPM_BUILD_ROOT%{_prefix}/lib/debug/%{_libdir}
%{__make} install \
DESTDIR=$RPM_BUILD_ROOT
%if %{with info}
-%{__make} -C Doc/info
-cp -p Doc/info/python*info* $RPM_BUILD_ROOT%{_infodir}
+cp -p Doc/build/texinfo/python*info* $RPM_BUILD_ROOT%{_infodir}
%endif
install -d $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
%{__rm} $RPM_BUILD_ROOT%{_libdir}/libpython3.so
ln -s libpython%{py_abi}.so $RPM_BUILD_ROOT%{_libdir}/libpython3.so
+# gdb helper that will end up in -debuginfo package
+soname=$(ls -1d $RPM_BUILD_ROOT%{_libdir}/libpython%{py_abi}.so.*.* | sed -e "s#^$RPM_BUILD_ROOT##g")
+cp -a Tools/gdb/libpython.py "$RPM_BUILD_ROOT%{_prefix}/lib/debug/$soname-gdb.py"
+
#
# create several useful aliases, such as timeit.py, profile.py, pdb.py, smtpd.py
#
# for python devel tools
for script in timeit profile pdb pstats; do
- echo "alias ${script}%{py_ver}.py='python%{py_ver} -m ${script}'"
+ echo "#alias ${script}%{py_ver}.py='python%{py_ver} -m ${script}'"
done > $RPM_BUILD_ROOT/etc/shrc.d/python%{py_ver}-devel.sh
-echo "alias pygettext%{py_ver}.py='pygettext%{py_ver}'" \
+echo "#alias pygettext%{py_ver}.py='pygettext%{py_ver}'" \
>> $RPM_BUILD_ROOT/etc/shrc.d/python%{py_ver}-devel.sh
sed 's/=/ /' \
# for python modules
for script in smtpd webbrowser; do
- echo "alias ${script}%{py_ver}.py='python%{py_ver} -m ${script}'"
+ echo "#alias ${script}%{py_ver}.py='python%{py_ver} -m ${script}'"
done > $RPM_BUILD_ROOT/etc/shrc.d/python%{py_ver}-modules.sh
sed 's/=/ /' \
# just to cut the noise, as they are not packaged (now)
%{__rm} $RPM_BUILD_ROOT%{py_libdir}/ctypes/macholib/fetch_macholib*
-%{__rm} $RPM_BUILD_ROOT%{py_libdir}/distutils/command/wininst*.exe
%{__rm} $RPM_BUILD_ROOT%{py_libdir}/idlelib/*.bat
%{__rm} $RPM_BUILD_ROOT%{py_libdir}/idlelib/*.pyw
%{__rm} $RPM_BUILD_ROOT%{py_libdir}/idlelib/help.html
# that seems to be only an empty extension template,
# which seems to be built only {with tests}
-%{__rm} -f $RPM_BUILD_ROOT%{py_dyndir}/xxlimited.*.so
+%{__rm} $RPM_BUILD_ROOT%{py_dyndir}/xxlimited*.*.so
# already in %%doc
%{__rm} $RPM_BUILD_ROOT%{py_libdir}/LICENSE.txt
%files
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/python%{py_ver}
+%if "%{py_ver}" != "%{py_abi}"
%attr(755,root,root) %{_bindir}/python%{py_abi}
+%endif
%attr(755,root,root) %{_bindir}/python3
-%{_mandir}/man1/python%{py_ver}.1*
-%{_mandir}/man1/python3.1*
+%{_mandir}/man1/python3*.1*
%files libs
%defattr(644,root,root,755)
%{py_libdir}/bisect.py
%{py_libdir}/codecs.py
%{py_libdir}/copyreg.py
+%{py_libdir}/enum.py
%{py_libdir}/functools.py
%{py_libdir}/genericpath.py
%{py_libdir}/heapq.py
%{py_libdir}/__pycache__/codecs.cpython-*.py[co]
%{py_libdir}/__pycache__/_collections_abc.cpython-*.py[co]
%{py_libdir}/__pycache__/copyreg.cpython-*.py[co]
+%{py_libdir}/__pycache__/enum.cpython-*.py[co]
%{py_libdir}/__pycache__/functools.cpython-*.py[co]
%{py_libdir}/__pycache__/genericpath.cpython-*.py[co]
%{py_libdir}/__pycache__/heapq.cpython-*.py[co]
%dir %{py_libdir}/config-%{py_platform}
%{py_libdir}/config-%{py_platform}/Makefile
%{py_libdir}/config-%{py_platform}/Setup
-%{py_libdir}/config-%{py_platform}/Setup.config
%{py_libdir}/config-%{py_platform}/Setup.local
%{py_libdir}/config-%{py_platform}/pyconfig.h
%files modules
%defattr(644,root,root,755)
-/etc/shrc.d/python*-modules*
-%attr(755,root,root) %{_bindir}/pyvenv
-%attr(755,root,root) %{_bindir}/pyvenv-%{py_ver}
+%config(noreplace) %verify(not md5 mtime size) /etc/shrc.d/python*-modules*
%{py_libdir}/__future__.py
%{py_libdir}/__phello__.foo.py
-%{py_libdir}/_bootlocale.py
+%{py_libdir}/_aix_support.py
+%{py_libdir}/_bootsubprocess.py
%{py_libdir}/_compat_pickle.py
%{py_libdir}/_compression.py
-%{py_libdir}/_dummy_thread.py
%{py_libdir}/_markupbase.py
%{py_libdir}/_osx_support.py
%{py_libdir}/_pydecimal.py
+%{py_libdir}/_py_abc.py
%{py_libdir}/_pyio.py
%{py_libdir}/_strptime.py
%{py_libdir}/_threading_local.py
%{py_libdir}/compileall.py
%{py_libdir}/configparser.py
%{py_libdir}/contextlib.py
+%{py_libdir}/contextvars.py
%{py_libdir}/copy.py
%{py_libdir}/crypt.py
%{py_libdir}/csv.py
+%{py_libdir}/dataclasses.py
%{py_libdir}/datetime.py
%{py_libdir}/decimal.py
%{py_libdir}/difflib.py
%{py_libdir}/dis.py
%{py_libdir}/doctest.py
-%{py_libdir}/dummy_threading.py
-%{py_libdir}/enum.py
%{py_libdir}/filecmp.py
%{py_libdir}/fileinput.py
%{py_libdir}/fnmatch.py
-%{py_libdir}/formatter.py
%{py_libdir}/fractions.py
%{py_libdir}/ftplib.py
%{py_libdir}/getopt.py
%{py_libdir}/getpass.py
%{py_libdir}/gettext.py
%{py_libdir}/glob.py
+%{py_libdir}/graphlib.py
%{py_libdir}/gzip.py
%{py_libdir}/hashlib.py
%{py_libdir}/hmac.py
%{py_libdir}/inspect.py
%{py_libdir}/ipaddress.py
%{py_libdir}/lzma.py
-%{py_libdir}/macpath.py
-%{py_libdir}/macurl2path.py
%{py_libdir}/mailbox.py
%{py_libdir}/mailcap.py
%{py_libdir}/mimetypes.py
%{py_libdir}/struct.py
%{py_libdir}/subprocess.py
%{py_libdir}/sunau.py
-%{py_libdir}/symbol.py
%{py_libdir}/symtable.py
%{py_libdir}/tabnanny.py
%{py_libdir}/tarfile.py
%{py_libdir}/xdrlib.py
%{py_libdir}/zipapp.py
%{py_libdir}/zipfile.py
+%{py_libdir}/zipimport.py
%{py_libdir}/__pycache__/__future__.cpython-*.py[co]
%{py_libdir}/__pycache__/__phello__.foo.cpython-*.py[co]
-%{py_libdir}/__pycache__/_bootlocale.cpython-*.py[co]
+%{py_libdir}/__pycache__/_aix_support.cpython-*.py[co]
+%{py_libdir}/__pycache__/_bootsubprocess.cpython-*.py[co]
%{py_libdir}/__pycache__/_compat_pickle.cpython-*.py[co]
%{py_libdir}/__pycache__/_compression.cpython-*.py[co]
-%{py_libdir}/__pycache__/_dummy_thread.cpython-*.py[co]
%{py_libdir}/__pycache__/_markupbase.cpython-*.py[co]
%{py_libdir}/__pycache__/_osx_support.cpython-*.py[co]
%{py_libdir}/__pycache__/_pydecimal.cpython-*.py[co]
+%{py_libdir}/__pycache__/_py_abc.cpython-*.py[co]
%{py_libdir}/__pycache__/_pyio.cpython-*.py[co]
%{py_libdir}/__pycache__/_strptime.cpython-*.py[co]
%{py_libdir}/__pycache__/_threading_local.cpython-*.py[co]
%{py_libdir}/__pycache__/cgitb.cpython-*.py[co]
%{py_libdir}/__pycache__/chunk.cpython-*.py[co]
%{py_libdir}/__pycache__/cmd.cpython-*.py[co]
+%{py_libdir}/__pycache__/contextvars.cpython-*.py[co]
%{py_libdir}/__pycache__/code.cpython-*.py[co]
%{py_libdir}/__pycache__/codeop.cpython-*.py[co]
%{py_libdir}/__pycache__/colorsys.cpython-*.py[co]
%{py_libdir}/__pycache__/copy.cpython-*.py[co]
%{py_libdir}/__pycache__/crypt.cpython-*.py[co]
%{py_libdir}/__pycache__/csv.cpython-*.py[co]
+%{py_libdir}/__pycache__/dataclasses.cpython-*.py[co]
%{py_libdir}/__pycache__/datetime.cpython-*.py[co]
%{py_libdir}/__pycache__/decimal.cpython-*.py[co]
%{py_libdir}/__pycache__/difflib.cpython-*.py[co]
%{py_libdir}/__pycache__/dis.cpython-*.py[co]
%{py_libdir}/__pycache__/doctest.cpython-*.py[co]
-%{py_libdir}/__pycache__/dummy_threading.cpython-*.py[co]
-%{py_libdir}/__pycache__/enum.cpython-*.py[co]
%{py_libdir}/__pycache__/filecmp.cpython-*.py[co]
%{py_libdir}/__pycache__/fileinput.cpython-*.py[co]
%{py_libdir}/__pycache__/fnmatch.cpython-*.py[co]
-%{py_libdir}/__pycache__/formatter.cpython-*.py[co]
%{py_libdir}/__pycache__/fractions.cpython-*.py[co]
%{py_libdir}/__pycache__/ftplib.cpython-*.py[co]
%{py_libdir}/__pycache__/getopt.cpython-*.py[co]
%{py_libdir}/__pycache__/getpass.cpython-*.py[co]
%{py_libdir}/__pycache__/gettext.cpython-*.py[co]
%{py_libdir}/__pycache__/glob.cpython-*.py[co]
+%{py_libdir}/__pycache__/graphlib.cpython-*.py[co]
%{py_libdir}/__pycache__/gzip.cpython-*.py[co]
%{py_libdir}/__pycache__/hashlib.cpython-*.py[co]
%{py_libdir}/__pycache__/hmac.cpython-*.py[co]
%{py_libdir}/__pycache__/inspect.cpython-*.py[co]
%{py_libdir}/__pycache__/ipaddress.cpython-*.py[co]
%{py_libdir}/__pycache__/lzma.cpython-*.py[co]
-%{py_libdir}/__pycache__/macpath.cpython-*.py[co]
-%{py_libdir}/__pycache__/macurl2path.cpython-*.py[co]
%{py_libdir}/__pycache__/mailbox.cpython-*.py[co]
%{py_libdir}/__pycache__/mailcap.cpython-*.py[co]
%{py_libdir}/__pycache__/mimetypes.cpython-*.py[co]
%{py_libdir}/__pycache__/struct.cpython-*.py[co]
%{py_libdir}/__pycache__/subprocess.cpython-*.py[co]
%{py_libdir}/__pycache__/sunau.cpython-*.py[co]
-%{py_libdir}/__pycache__/symbol.cpython-*.py[co]
%{py_libdir}/__pycache__/symtable.cpython-*.py[co]
%{py_libdir}/__pycache__/tabnanny.cpython-*.py[co]
%{py_libdir}/__pycache__/tarfile.cpython-*.py[co]
%{py_libdir}/__pycache__/xdrlib.cpython-*.py[co]
%{py_libdir}/__pycache__/zipapp.cpython-*.py[co]
%{py_libdir}/__pycache__/zipfile.cpython-*.py[co]
+%{py_libdir}/__pycache__/zipimport.cpython-*.py[co]
#
# list .so modules to be sure that all of them are built
%attr(755,root,root) %{py_dyndir}/_codecs_jp.cpython-*.so
%attr(755,root,root) %{py_dyndir}/_codecs_kr.cpython-*.so
%attr(755,root,root) %{py_dyndir}/_codecs_tw.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_contextvars.cpython-*.so
%attr(755,root,root) %{py_dyndir}/_crypt.cpython-*.so
%attr(755,root,root) %{py_dyndir}/_csv.cpython-*.so
%attr(755,root,root) %{py_dyndir}/_ctypes*.cpython-*.so
%attr(755,root,root) %{py_dyndir}/_multiprocessing.cpython-*.so
%attr(755,root,root) %{py_dyndir}/_opcode.cpython-*.so
%attr(755,root,root) %{py_dyndir}/_pickle.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_posixshmem.cpython-*.so
%attr(755,root,root) %{py_dyndir}/_posixsubprocess.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_queue.cpython-*.so
%attr(755,root,root) %{py_dyndir}/_random.cpython-*.so
%attr(755,root,root) %{py_dyndir}/_sha1.cpython-*.so
%attr(755,root,root) %{py_dyndir}/_sha3.cpython-*.so
%attr(755,root,root) %{py_dyndir}/_socket.cpython-*.so
%attr(755,root,root) %{py_dyndir}/_ssl.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_statistics.cpython-*.so
%attr(755,root,root) %{py_dyndir}/_testbuffer.cpython-*.so
%attr(755,root,root) %{py_dyndir}/_testcapi.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_testinternalcapi.cpython-*.so
%attr(755,root,root) %{py_dyndir}/_testimportmultiple.cpython-*.so
%attr(755,root,root) %{py_dyndir}/_testmultiphase.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_uuid.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_xxsubinterpreters.cpython-*.so
+%attr(755,root,root) %{py_dyndir}/_xxtestfuzz.cpython-*.so
# for openssl < 0.9.8 package sha256 and sha512 modules
%if "%{pld_release}" != "ac"
%attr(755,root,root) %{py_dyndir}/mmap.cpython-*.so
%attr(755,root,root) %{py_dyndir}/nis.cpython-*.so
%attr(755,root,root) %{py_dyndir}/ossaudiodev.cpython-*.so
-%attr(755,root,root) %{py_dyndir}/parser.cpython-*.so
%attr(755,root,root) %{py_dyndir}/pyexpat.cpython-*.so
%attr(755,root,root) %{py_dyndir}/readline.cpython-*.so
%attr(755,root,root) %{py_dyndir}/resource.cpython-*.so
%dir %{py_libdir}/importlib
%{py_libdir}/importlib/__pycache__
%{py_libdir}/importlib/*.py
+%dir %{py_libdir}/importlib/metadata
+%{py_libdir}/importlib/metadata/__pycache__
+%{py_libdir}/importlib/metadata/*.py
%dir %{py_libdir}/json
%{py_libdir}/json/__pycache__
%{py_libdir}/venv/*.py
%dir %{py_libdir}/venv/scripts
%dir %{py_libdir}/venv/scripts/common
+%{py_libdir}/venv/scripts/common/Activate.ps1
%{py_libdir}/venv/scripts/common/activate
%dir %{py_libdir}/venv/scripts/posix
%{py_libdir}/venv/scripts/posix/activate.csh
%{py_libdir}/sqlite3/__pycache__
%{py_libdir}/sqlite3/*.py
+%attr(755,root,root) %{py_dyndir}/_zoneinfo.cpython-*.so
+%dir %{py_libdir}/zoneinfo
+%{py_libdir}/zoneinfo/__pycache__
+%{py_libdir}/zoneinfo/*.py
+
%files -n pydoc3
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/pydoc3
%defattr(644,root,root,755)
%doc Misc/{ACKS,NEWS,README,README.valgrind,valgrind-python.supp}
%attr(755,root,root) %{_bindir}/python%{py_ver}-config
+%if "%{py_ver}" != "%{py_abi}"
%attr(755,root,root) %{_bindir}/python%{py_abi}-config
+%endif
%attr(755,root,root) %{_bindir}/python3-config
%attr(755,root,root) %{_libdir}/libpython%{py_abi}.so
%attr(755,root,root) %{_libdir}/libpython3.so
%{py_incdir}/*.h
%exclude %{py_incdir}/pyconfig.h
+%{py_incdir}/cpython
+%{py_incdir}/internal
%attr(755,root,root) %{py_libdir}/config-%{py_platform}/makesetup
%attr(755,root,root) %{py_libdir}/config-%{py_platform}/install-sh
%{py_libdir}/config-%{py_platform}/config.c
%dir %{py_libdir}/config-%{py_platform}/__pycache__
%{py_libdir}/config-%{py_platform}/__pycache__/python-config.*
%{_pkgconfigdir}/python-%{py_ver}.pc
+%{_pkgconfigdir}/python-%{py_ver}-embed.pc
+%{_pkgconfigdir}/python3-embed.pc
+%if "%{py_ver}" != "%{py_abi}"
%{_pkgconfigdir}/python-%{py_abi}.pc
+%endif
%{_pkgconfigdir}/python3.pc
%files devel-tools
%defattr(644,root,root,755)
-/etc/shrc.d/python*-devel*
+%config(noreplace) %verify(not md5 mtime size) /etc/shrc.d/python*-devel*
%attr(755,root,root) %{_bindir}/pygettext%{py_ver}
%attr(755,root,root) %{_bindir}/pyreindent%{py_ver}
%{py_libdir}/pdb.py
%if %{with info}
%files doc-info
%defattr(644,root,root,755)
-%{_infodir}/*.info*
+%{_infodir}/python.info*
%endif
%if %{with tkinter}