%bcond_without tkinter # disables tkinter module building
%bcond_without tests # disables Python testing
%bcond_with verbose_tests # runs tests in verbose mode
%bcond_without tkinter # disables tkinter module building
%bcond_without tests # disables Python testing
%bcond_with verbose_tests # runs tests in verbose mode
#
# tests which will not work on 64-bit platforms
%define no64bit_tests test_audioop test_rgbimg test_imageop
# tests which may fail because of builder environment limitations (no /proc or /dev/pts)
#
# tests which will not work on 64-bit platforms
%define no64bit_tests test_audioop test_rgbimg test_imageop
# tests which may fail because of builder environment limitations (no /proc or /dev/pts)
# 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
# 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
-%define broken_tests test_nntplib test_gdb test_site
+# 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_distutils test_bdist_rpm test_ssl %{?broken_tests_x32}
%define py_abi %{py_ver}m
%define py_platform %{py_abi}-%{_target_base_arch}-%{_target_os}%{?_gnu}
%define py_prefix %{_prefix}
%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
Summary(tr.UTF-8): X arayüzlü, yüksek düzeyli, kabuk yorumlayıcı dili
Summary(uk.UTF-8): Мова програмування дуже високого рівня з X-інтерфейсом
Name: python3
Release: 1
Epoch: 1
License: PSF
Group: Development/Languages/Python
Source0: https://www.python.org/ftp/python/%{version}/Python-%{version}.tar.xz
Release: 1
Epoch: 1
License: PSF
Group: Development/Languages/Python
Source0: https://www.python.org/ftp/python/%{version}/Python-%{version}.tar.xz
Patch9: %{name}-tests_with_pythonpath.patch
Patch10: %{name}-bdist_rpm.patch
Patch11: %{name}-installcompile.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
BuildRequires: gmp-devel >= 4.0
BuildRequires: libffi-devel
BuildRequires: libstdc++-devel
BuildRequires: gmp-devel >= 4.0
BuildRequires: libffi-devel
BuildRequires: libstdc++-devel
Provides: python(abi) = %{py_ver}
# for compatibility with existing Ac packages
Provides: python(bytecode) = %{py_ver}
Provides: python(abi) = %{py_ver}
# for compatibility with existing Ac packages
Provides: python(bytecode) = %{py_ver}
Group: Libraries/Python
Requires: %{name}-libs = %{epoch}:%{version}-%{release}
%{?with_system_mpdecimal:Requires: mpdecimal >= 2.4.1}
Group: Libraries/Python
Requires: %{name}-libs = %{epoch}:%{version}-%{release}
%{?with_system_mpdecimal:Requires: mpdecimal >= 2.4.1}
-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}"
$RPM_BUILD_ROOT{%{py_sitedir},%{py_sitescriptdir}}/__pycache__ \
$RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version} \
$RPM_BUILD_ROOT{%{_infodir},%{_mandir}/man1} \
$RPM_BUILD_ROOT{%{py_sitedir},%{py_sitescriptdir}}/__pycache__ \
$RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version} \
$RPM_BUILD_ROOT{%{_infodir},%{_mandir}/man1} \
%{__rm} $RPM_BUILD_ROOT%{_libdir}/libpython3.so
ln -s libpython%{py_abi}.so $RPM_BUILD_ROOT%{_libdir}/libpython3.so
%{__rm} $RPM_BUILD_ROOT%{_libdir}/libpython3.so
ln -s libpython%{py_abi}.so $RPM_BUILD_ROOT%{_libdir}/libpython3.so
#
# 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
#
# 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
%{__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
%{__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
# currently provided by python-2to3, consider switching to this one
%{__rm} $RPM_BUILD_ROOT%{_bindir}/2to3
# currently provided by python-2to3, consider switching to this one
%{__rm} $RPM_BUILD_ROOT%{_bindir}/2to3
%{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__/codecs.cpython-*.py[co]
%{py_libdir}/__pycache__/_collections_abc.cpython-*.py[co]
%{py_libdir}/__pycache__/copyreg.cpython-*.py[co]
%{py_libdir}/__pycache__/functools.cpython-*.py[co]
%{py_libdir}/__pycache__/genericpath.cpython-*.py[co]
%{py_libdir}/__pycache__/heapq.cpython-*.py[co]
%{py_libdir}/__pycache__/functools.cpython-*.py[co]
%{py_libdir}/__pycache__/genericpath.cpython-*.py[co]
%{py_libdir}/__pycache__/heapq.cpython-*.py[co]
%{py_libdir}/__pycache__/linecache.cpython-*.py[co]
%{py_libdir}/__pycache__/locale.cpython-*.py[co]
%{py_libdir}/__pycache__/io.cpython-*.py[co]
%{py_libdir}/__pycache__/linecache.cpython-*.py[co]
%{py_libdir}/__pycache__/locale.cpython-*.py[co]
%{py_libdir}/__pycache__/io.cpython-*.py[co]
%{py_libdir}/__pycache__/posixpath.cpython-*.py[co]
%{py_libdir}/__pycache__/re.cpython-*.py[co]
%{py_libdir}/__pycache__/reprlib.cpython-*.py[co]
%{py_libdir}/__pycache__/posixpath.cpython-*.py[co]
%{py_libdir}/__pycache__/re.cpython-*.py[co]
%{py_libdir}/__pycache__/reprlib.cpython-*.py[co]
%dir %{py_libdir}/config-%{py_platform}
%{py_libdir}/config-%{py_platform}/Makefile
%{py_libdir}/config-%{py_platform}/Setup
%dir %{py_libdir}/config-%{py_platform}
%{py_libdir}/config-%{py_platform}/Makefile
%{py_libdir}/config-%{py_platform}/Setup
%{py_libdir}/config-%{py_platform}/Setup.local
%{py_libdir}/config-%{py_platform}/pyconfig.h
%files modules
%defattr(644,root,root,755)
%{py_libdir}/config-%{py_platform}/Setup.local
%{py_libdir}/config-%{py_platform}/pyconfig.h
%files modules
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/pyvenv
%attr(755,root,root) %{_bindir}/pyvenv-%{py_ver}
%{py_libdir}/__future__.py
%attr(755,root,root) %{_bindir}/pyvenv
%attr(755,root,root) %{_bindir}/pyvenv-%{py_ver}
%{py_libdir}/__future__.py
%{py_libdir}/_markupbase.py
%{py_libdir}/_osx_support.py
%{py_libdir}/_pydecimal.py
%{py_libdir}/_markupbase.py
%{py_libdir}/_osx_support.py
%{py_libdir}/_pydecimal.py
%{py_libdir}/compileall.py
%{py_libdir}/configparser.py
%{py_libdir}/contextlib.py
%{py_libdir}/compileall.py
%{py_libdir}/configparser.py
%{py_libdir}/contextlib.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__/_markupbase.cpython-*.py[co]
%{py_libdir}/__pycache__/_osx_support.cpython-*.py[co]
%{py_libdir}/__pycache__/_pydecimal.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__/_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__/cgitb.cpython-*.py[co]
%{py_libdir}/__pycache__/chunk.cpython-*.py[co]
%{py_libdir}/__pycache__/cmd.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__/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__/copy.cpython-*.py[co]
%{py_libdir}/__pycache__/crypt.cpython-*.py[co]
%{py_libdir}/__pycache__/csv.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__/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__/filecmp.cpython-*.py[co]
%{py_libdir}/__pycache__/fileinput.cpython-*.py[co]
%{py_libdir}/__pycache__/fnmatch.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__/ipaddress.cpython-*.py[co]
%{py_libdir}/__pycache__/lzma.cpython-*.py[co]
%{py_libdir}/__pycache__/macpath.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__/mailbox.cpython-*.py[co]
%{py_libdir}/__pycache__/mailcap.cpython-*.py[co]
%{py_libdir}/__pycache__/mimetypes.cpython-*.py[co]
%{py_libdir}/__pycache__/nturl2path.cpython-*.py[co]
%{py_libdir}/__pycache__/numbers.cpython-*.py[co]
%{py_libdir}/__pycache__/opcode.cpython-*.py[co]
%{py_libdir}/__pycache__/nturl2path.cpython-*.py[co]
%{py_libdir}/__pycache__/numbers.cpython-*.py[co]
%{py_libdir}/__pycache__/opcode.cpython-*.py[co]
%{py_libdir}/__pycache__/optparse.cpython-*.py[co]
%{py_libdir}/__pycache__/pathlib.cpython-*.py[co]
%{py_libdir}/__pycache__/pickle.cpython-*.py[co]
%{py_libdir}/__pycache__/optparse.cpython-*.py[co]
%{py_libdir}/__pycache__/pathlib.cpython-*.py[co]
%{py_libdir}/__pycache__/pickle.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}/_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}/_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}/_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}/_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}/_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}/_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}/_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) %{_libdir}/libpython3.so
%{py_incdir}/*.h
%exclude %{py_incdir}/pyconfig.h
%attr(755,root,root) %{_libdir}/libpython3.so
%{py_incdir}/*.h
%exclude %{py_incdir}/pyconfig.h
%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
%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
%files devel-tools
%defattr(644,root,root,755)
%files devel-tools
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/pygettext%{py_ver}
%attr(755,root,root) %{_bindir}/pyreindent%{py_ver}
%{py_libdir}/pdb.py
%attr(755,root,root) %{_bindir}/pygettext%{py_ver}
%attr(755,root,root) %{_bindir}/pyreindent%{py_ver}
%{py_libdir}/pdb.py