+# 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
# test_time: test_AsTimeval (test.test_time.TestCPyTime), rounding error
%ifarch x32
%define broken_tests_x32 test_time
+%undefine with_optimizations
%endif
-%define broken_tests test_nntplib test_gdb test_site test_ssl %{?broken_tests_x32}
+%define broken_tests test_nntplib test_gdb test_site test_distutils test_bdist_rpm test_ssl %{?broken_tests_x32}
-%define py_ver 3.6
+%define py_ver 3.7
%define py_abi %{py_ver}m
%define py_platform %{py_abi}-%{_target_base_arch}-%{_target_os}%{?_gnu}
%define py_prefix %{_prefix}
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}.4
-Release: 1
+Version: %{py_ver}.0
+Release: 4
Epoch: 1
License: PSF
Group: Development/Languages/Python
Source0: https://www.python.org/ftp/python/%{version}/Python-%{version}.tar.xz
-# Source0-md5: 1325134dd525b4a2c3272a1a0214dd54
+# Source0-md5: eb8c2a6b1447d50813c02714af4681f3
Source1: pyconfig.h.in
Patch0: %{name}-pythonpath.patch
Patch1: %{name}-ac_fixes.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
+# https://bugs.python.org/file21896/nonexistent_user.patch
+Patch12: nonexistent_user.patch
+Patch13: %{name}-no-randomize-tests.patch
+# https://github.com/python/cpython/commit/c919252a28f4e9dd326dc2c703b4eee6e247be83.patch
+Patch14: %{name}-redundant_declaration.patch
URL: https://www.python.org/
BuildRequires: autoconf >= 2.65
BuildRequires: automake
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: libstdc++-devel
%if %{with verbose_tests}
%define test_flags -v -x
%else
-%define test_flags -w -x
+%define test_flags -wW -x
%endif
%ifarch alpha ia64 ppc64 sparc64 ppc64 %{x8664}
Provides: python(abi) = %{py_ver}
# for compatibility with existing Ac packages
Provides: python(bytecode) = %{py_ver}
+Provides: python3-enum
+Obsoletes: python3-enum
%{!?with_info:Obsoletes: python3-doc-info}
%description libs
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
%requires_ge_to openssl openssl-devel
%patch10 -p1
%patch11 -p1
%patch12 -p1
+%patch13 -p1
+%patch14 -p1
-%{__rm} -r Modules/zlib
%{__rm} -r Modules/expat
-for SUBDIR in darwin libffi libffi_msvc libffi_osx; do
+for SUBDIR in darwin libffi_msvc libffi_osx; do
%{__rm} -r Modules/_ctypes/$SUBDIR/*
done
--with-dbmliborder=gdbm:ndbm:bdb \
--with-doc-strings \
--without-ensurepip \
- --with-fpectl \
%{?with_debug:--with-pydebug} \
--with-system-expat \
--with-system-ffi \
%{?with_system_mpdecimal:--with-system-libmpdec} \
- --with-threads
+%if %{with optimizations}
+ --enable-optimizations \
+ --with-lto
+%endif
%{__make} 2>&1 | awk '
BEGIN { fail = 0; logmsg = ""; }
}
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"
+WITHIN_PYTHON_RPM_BUILD=1 %{__make} -j1 test \
+ TESTOPTS="%{test_flags} %{test_list}"
%endif
%install
%{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
%{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}/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}/__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__/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]
%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}/_opcode.cpython-*.so
%attr(755,root,root) %{py_dyndir}/_pickle.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}/_testcapi.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}/_xxtestfuzz.cpython-*.so
# for openssl < 0.9.8 package sha256 and sha512 modules
%if "%{pld_release}" != "ac"