aboutsummaryrefslogtreecommitdiff
path: root/ci/lint
diff options
context:
space:
mode:
authorMarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz>2023-01-17 18:35:40 +0100
committerMarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz>2023-01-17 18:35:47 +0100
commit01ec5308bf616740c804247043046b23b483df5c (patch)
treeeae8b282c067e6237f4b82d1bda29b5a4284ce26 /ci/lint
parent89fb354f28273c16f8f8152bf112e5246ae40c50 (diff)
parent123043e99cf3aab9eef7e381b133477b518ac4d0 (diff)
downloadbitcoin-01ec5308bf616740c804247043046b23b483df5c.tar.xz
Merge bitcoin/bitcoin#26716: ci: Build python from source in "lint" task
123043e99cf3aab9eef7e381b133477b518ac4d0 ci: Bump lint task image to Ubuntu Jammy (Hennadii Stepanov) 9b86114058b3931c5b4ddc931a8a2cfdc8b085b6 ci: Use pyenv's `python-build` to install Python in lint task (Hennadii Stepanov) Pull request description: This PR: - is an alternative to bitcoin/bitcoin#26581 and bitcoin/bitcoin#26637 - closes bitcoin/bitcoin#26548 Key advantages of this PR over others: - it uses pyenv's `python-build` [standalone](https://github.com/pyenv/pyenv/tree/master/plugins/python-build#using-python-build-standalone) - requires no additional computational resources Note for testing. The lint task must success regardless of whether the `python_cache` is populated or invalidated. ACKs for top commit: MarcoFalke: ACK 123043e99cf3aab9eef7e381b133477b518ac4d0 fanquake: ACK 123043e99cf3aab9eef7e381b133477b518ac4d0 Tree-SHA512: ba0fcdd4f2939a59692b173dcd1f5704444cfcfbb8111538c6f8160056d0536bba250e4f9b0f8c66f8b454e52034bf36ffe6afae76cdc0f7cc5b58b576d790ba
Diffstat (limited to 'ci/lint')
-rwxr-xr-xci/lint/04_install.sh27
1 files changed, 19 insertions, 8 deletions
diff --git a/ci/lint/04_install.sh b/ci/lint/04_install.sh
index b459b321f1..376737d01a 100755
--- a/ci/lint/04_install.sh
+++ b/ci/lint/04_install.sh
@@ -7,14 +7,25 @@
export LC_ALL=C
${CI_RETRY_EXE} apt-get update
-${CI_RETRY_EXE} apt-get install -y python3-pip curl git gawk jq
-(
- # Temporary workaround for https://github.com/bitcoin/bitcoin/pull/26130#issuecomment-1260499544
- # Can be removed once the underlying image is bumped to something that includes git2.34 or later
- sed -i -e 's/bionic/jammy/g' /etc/apt/sources.list
- ${CI_RETRY_EXE} apt-get update
- ${CI_RETRY_EXE} apt-get install -y --reinstall git
-)
+${CI_RETRY_EXE} apt-get install -y curl git gawk jq xz-utils
+
+PYTHON_PATH=/tmp/python
+if [ ! -d "${PYTHON_PATH}/bin" ]; then
+ (
+ git clone https://github.com/pyenv/pyenv.git
+ cd pyenv/plugins/python-build || exit 1
+ ./install.sh
+ )
+ # For dependencies see https://github.com/pyenv/pyenv/wiki#suggested-build-environment
+ ${CI_RETRY_EXE} apt-get install -y build-essential libssl-dev zlib1g-dev \
+ libbz2-dev libreadline-dev libsqlite3-dev curl llvm \
+ libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev \
+ clang
+ env CC=clang python-build "$(cat "${BASE_ROOT_DIR}/.python-version")" "${PYTHON_PATH}"
+fi
+export PATH="${PYTHON_PATH}/bin:${PATH}"
+command -v python3
+python3 --version
${CI_RETRY_EXE} pip3 install codespell==2.2.1
${CI_RETRY_EXE} pip3 install flake8==5.0.4