]> git.pld-linux.org Git - packages/python3.git/blobdiff - python3.spec
- rel 2; install gdb helper so gdb functions like py-bt (nice pythonised backtrace...
[packages/python3.git] / python3.spec
index a40cc78378801cb5f29ab458c51146f1a25d09b6..2b13514846398d0a004dde4c47e39ab993d4b7f2 100644 (file)
@@ -1,3 +1,4 @@
+# NOTE: tests require processes limit >128 (256 is sufficient)
 #
 # Conditional build:
 %bcond_with    info                    # info pages (requires emacs)
@@ -5,11 +6,12 @@
 %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
 # 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 test_resource test_openpty test_socket test_nis test_posix test_locale test_pty test_asyncio test_os test_readline 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_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}
@@ -38,13 +41,13 @@ Summary(ru.UTF-8):  Язык программирования очень высо
 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}.3
-Release:       1
+Version:       %{py_ver}.1
+Release:       2
 Epoch:         1
 License:       PSF
 Group:         Development/Languages/Python
 Source0:       https://www.python.org/ftp/python/%{version}/Python-%{version}.tar.xz
-# Source0-md5: b9c2c36c33fb89bda1fefd37ad5af9be
+# Source0-md5: 0a57e9022c07fad3dadb2eef58568edb
 Source1:       pyconfig.h.in
 Patch0:                %{name}-pythonpath.patch
 Patch1:                %{name}-ac_fixes.patch
@@ -57,8 +60,9 @@ 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
+# https://bugs.python.org/file21896/nonexistent_user.patch
+Patch12:        nonexistent_user.patch
+Patch13:       %{name}-no-randomize-tests.patch
 URL:           https://www.python.org/
 BuildRequires: autoconf >= 2.65
 BuildRequires: automake
@@ -69,6 +73,9 @@ BuildRequires:        db-devel >= 4
 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
@@ -96,7 +103,7 @@ BuildRoot:   %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 %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}
@@ -214,6 +221,8 @@ Group:              Libraries/Python
 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
@@ -229,8 +238,6 @@ 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
 %requires_ge_to        openssl openssl-devel
 
@@ -486,11 +493,11 @@ Moduły testowe dla Pythona.
 %patch10 -p1
 %patch11 -p1
 %patch12 -p1
+%patch13 -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
 
@@ -526,12 +533,14 @@ fi
        --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 = ""; }
@@ -544,14 +553,11 @@ 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
@@ -560,7 +566,8 @@ install -d $RPM_BUILD_ROOT{%{_bindir},%{_libdir},%{_pkgconfigdir}} \
        $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
@@ -577,16 +584,20 @@ cp -a Tools $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/=/ /' \
@@ -595,7 +606,7 @@ 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/=/ /' \
@@ -682,6 +693,7 @@ rm -rf $RPM_BUILD_ROOT
 %{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
@@ -712,6 +724,7 @@ rm -rf $RPM_BUILD_ROOT
 %{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]
@@ -744,13 +757,12 @@ rm -rf $RPM_BUILD_ROOT
 %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*
+%config(noreplace) %verify(not md5 mtime size) /etc/shrc.d/python*-modules*
 %attr(755,root,root) %{_bindir}/pyvenv
 %attr(755,root,root) %{_bindir}/pyvenv-%{py_ver}
 %{py_libdir}/__future__.py
@@ -762,6 +774,7 @@ rm -rf $RPM_BUILD_ROOT
 %{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
@@ -787,16 +800,17 @@ rm -rf $RPM_BUILD_ROOT
 %{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
@@ -817,7 +831,6 @@ rm -rf $RPM_BUILD_ROOT
 %{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
@@ -896,6 +909,7 @@ rm -rf $RPM_BUILD_ROOT
 %{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]
@@ -915,6 +929,7 @@ rm -rf $RPM_BUILD_ROOT
 %{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]
@@ -924,13 +939,13 @@ rm -rf $RPM_BUILD_ROOT
 %{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]
@@ -951,7 +966,6 @@ rm -rf $RPM_BUILD_ROOT
 %{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]
@@ -1036,6 +1050,7 @@ rm -rf $RPM_BUILD_ROOT
 %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
@@ -1059,6 +1074,7 @@ rm -rf $RPM_BUILD_ROOT
 %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
@@ -1068,6 +1084,8 @@ rm -rf $RPM_BUILD_ROOT
 %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"
@@ -1266,7 +1284,7 @@ rm -rf $RPM_BUILD_ROOT
 
 %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
This page took 0.107342 seconds and 4 git commands to generate.