mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-19 05:45:05 +01:00
Merge bitcoin/bitcoin#27483: Bump python minimum version to 3.8
fac395e5eb
ci: Bump ci/lint/Dockerfile (MarcoFalke)fa6eb65167
test: Use python3.8 pow() (MarcoFalke)88881cf7ac
Bump python minimum version to 3.8 (MarcoFalke) Pull request description: There is no pressing reason to drop support for 3.7, however there are several maintenance issues: * There is no supported operating system that ships 3.7 by default. (debian:buster is EOL and unmaintained to the extent that it doesn't run in the CI environment. See https://github.com/bitcoin/bitcoin/pull/27340#issuecomment-1484988445) * Compiling python 3.7 from source is also unsupported on at least macos, according to https://github.com/bitcoin/bitcoin/pull/24017#issuecomment-1107820790 * Recent versions of lief require 3.8, see https://github.com/bitcoin/bitcoin/pull/27507#issuecomment-1517561645 Fix all maintenance issues by bumping the minimum. ACKs for top commit: RandyMcMillan: ACKfac395e
fjahr: ACKfac395e5eb
fanquake: ACKfac395e5eb
Tree-SHA512: c198decdbbe29d186d73ea3f6549d8a38479383495d14a965a2f9211ce39637b43f13a4c2a5d3bf56e2d468be4bbe49b4ee8e8e19ec69936ff43ddf2b714c712
This commit is contained in:
commit
d89aca1bdb
@ -228,7 +228,7 @@ task:
|
||||
PACKAGE_MANAGER_INSTALL: "yum install -y"
|
||||
|
||||
task:
|
||||
name: '[previous releases, uses qt5 dev package and some depends packages, DEBUG] [unsigned char] [buster]'
|
||||
name: '[previous releases, qt5 dev package and depends packages, DEBUG] [focal]'
|
||||
previous_releases_cache:
|
||||
folder: "releases"
|
||||
<< : *GLOBAL_TASK_TEMPLATE
|
||||
|
@ -1 +1 @@
|
||||
3.7.16
|
||||
3.8.16
|
||||
|
@ -5,7 +5,7 @@
|
||||
# entire repo as docker context during build; if it lived elsewhere, it wouldn't be
|
||||
# able to make back-references to pull in the install scripts. So here it lives.
|
||||
|
||||
FROM python:3.7-buster
|
||||
FROM python:3.8-buster
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV LC_ALL=C.UTF-8
|
||||
|
@ -8,7 +8,8 @@ export LC_ALL=C.UTF-8
|
||||
|
||||
export HOST=i686-pc-linux-gnu
|
||||
export CONTAINER_NAME=ci_i686_centos
|
||||
export CI_IMAGE_NAME_TAG=quay.io/centos/centos:stream8
|
||||
export CI_IMAGE_NAME_TAG="quay.io/centos/centos:stream8"
|
||||
# Use minimum supported python3.8 and gcc-8, see doc/dependencies.md
|
||||
export CI_BASE_PACKAGES="gcc-c++ glibc-devel.x86_64 libstdc++-devel.x86_64 glibc-devel.i686 libstdc++-devel.i686 ccache libtool make git python38 python38-pip which patch lbzip2 xz procps-ng dash rsync coreutils bison"
|
||||
export PIP_PACKAGES="pyzmq"
|
||||
export GOAL="install"
|
||||
|
@ -7,8 +7,8 @@
|
||||
export LC_ALL=C.UTF-8
|
||||
|
||||
export CONTAINER_NAME=ci_native_nowallet_libbitcoinkernel
|
||||
export CI_IMAGE_NAME_TAG=ubuntu:focal
|
||||
# Use minimum supported python3.7 (or python3.8, as best-effort) and clang-8, see doc/dependencies.md
|
||||
export CI_IMAGE_NAME_TAG="ubuntu:20.04"
|
||||
# Use minimum supported python3.8 and clang-8, see doc/dependencies.md
|
||||
export PACKAGES="python3-zmq clang-8 llvm-8 libc++abi-8-dev libc++-8-dev"
|
||||
export DEP_OPTS="NO_WALLET=1 CC=clang-8 CXX='clang++-8 -stdlib=libc++'"
|
||||
export GOAL="install"
|
||||
|
@ -7,10 +7,10 @@
|
||||
export LC_ALL=C.UTF-8
|
||||
|
||||
export CONTAINER_NAME=ci_native_qt5
|
||||
export CI_IMAGE_NAME_TAG=debian:buster
|
||||
# Use minimum supported python3.7 and gcc-8, see doc/dependencies.md
|
||||
export PACKAGES="gcc-8 g++-8 python3-zmq qtbase5-dev qttools5-dev-tools libdbus-1-dev libharfbuzz-dev"
|
||||
export DEP_OPTS="NO_QT=1 NO_UPNP=1 NO_NATPMP=1 DEBUG=1 ALLOW_HOST_PACKAGES=1 CC=gcc-8 CXX=g++-8"
|
||||
export CI_IMAGE_NAME_TAG="ubuntu:20.04"
|
||||
# Use minimum supported python3.8 and gcc-8 (or best-effort gcc-9), see doc/dependencies.md
|
||||
export PACKAGES="gcc-9 g++-9 python3-zmq qtbase5-dev qttools5-dev-tools libdbus-1-dev libharfbuzz-dev"
|
||||
export DEP_OPTS="NO_QT=1 NO_UPNP=1 NO_NATPMP=1 DEBUG=1 ALLOW_HOST_PACKAGES=1 CC=gcc-9 CXX=g++-9"
|
||||
export TEST_RUNNER_EXTRA="--previous-releases --coverage --extended --exclude feature_dbcrash" # Run extended tests so that coverage does not fail, but exclude the very slow dbcrash
|
||||
export RUN_UNIT_TESTS_SEQUENTIAL="true"
|
||||
export RUN_UNIT_TESTS="false"
|
||||
@ -18,4 +18,4 @@ export GOAL="install"
|
||||
export NO_WERROR=1
|
||||
export DOWNLOAD_PREVIOUS_RELEASES="true"
|
||||
export BITCOIN_CONFIG="--enable-zmq --with-libs=no --with-gui=qt5 --enable-reduce-exports \
|
||||
--enable-debug CFLAGS=\"-g0 -O2 -funsigned-char\" CXXFLAGS=\"-g0 -O2 -funsigned-char\" CC=gcc-8 CXX=g++-8"
|
||||
--enable-debug CFLAGS=\"-g0 -O2 -funsigned-char\" CXXFLAGS=\"-g0 -O2 -funsigned-char\""
|
||||
|
@ -126,8 +126,8 @@ AC_PATH_TOOL([AR], [ar])
|
||||
AC_PATH_TOOL([GCOV], [gcov])
|
||||
AC_PATH_TOOL([LLVM_COV], [llvm-cov])
|
||||
AC_PATH_PROG([LCOV], [lcov])
|
||||
dnl Python 3.7 is specified in .python-version and should be used if available, see doc/dependencies.md
|
||||
AC_PATH_PROGS([PYTHON], [python3.7 python3.8 python3.9 python3.10 python3.11 python3.12 python3 python])
|
||||
dnl Python 3.8 is specified in .python-version and should be used if available, see doc/dependencies.md
|
||||
AC_PATH_PROGS([PYTHON], [python3.8 python3.9 python3.10 python3.11 python3.12 python3 python])
|
||||
AC_PATH_PROG([GENHTML], [genhtml])
|
||||
AC_PATH_PROG([GIT], [git])
|
||||
AC_PATH_PROG([CCACHE], [ccache])
|
||||
|
@ -10,7 +10,7 @@ You can find installation instructions in the `build-*.md` file for your platfor
|
||||
| [Automake](https://www.gnu.org/software/automake/) | [1.13](https://github.com/bitcoin/bitcoin/pull/18290) |
|
||||
| [Clang](https://clang.llvm.org) | [8.0](https://github.com/bitcoin/bitcoin/pull/24164) |
|
||||
| [GCC](https://gcc.gnu.org) | [8.1](https://github.com/bitcoin/bitcoin/pull/23060) |
|
||||
| [Python](https://www.python.org) (tests) | [3.7](https://github.com/bitcoin/bitcoin/pull/26226) |
|
||||
| [Python](https://www.python.org) (scripts, tests) | [3.8](https://github.com/bitcoin/bitcoin/pull/27483) |
|
||||
| [systemtap](https://sourceware.org/systemtap/) ([tracing](tracing.md))| N/A |
|
||||
|
||||
## Required
|
||||
|
@ -542,18 +542,7 @@ def modinv(a, n):
|
||||
"""Compute the modular inverse of a modulo n using the extended Euclidean
|
||||
Algorithm. See https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm#Modular_integers.
|
||||
"""
|
||||
# TODO: Change to pow(a, -1, n) available in Python 3.8
|
||||
t1, t2 = 0, 1
|
||||
r1, r2 = n, a
|
||||
while r2 != 0:
|
||||
q = r1 // r2
|
||||
t1, t2 = t2, t1 - q * t2
|
||||
r1, r2 = r2, r1 - q * r2
|
||||
if r1 > 1:
|
||||
return None
|
||||
if t1 < 0:
|
||||
t1 += n
|
||||
return t1
|
||||
return pow(a, -1, n)
|
||||
|
||||
class TestFrameworkUtil(unittest.TestCase):
|
||||
def test_modinv(self):
|
||||
|
Loading…
Reference in New Issue
Block a user