Skip to content

Commit 86578cd

Browse files
committed
chore: add pre-commit
1 parent dd48fc8 commit 86578cd

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+491
-4029
lines changed

.github/workflows/build.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,18 @@ concurrency:
2828
cancel-in-progress: true
2929

3030
jobs:
31+
pre_commit:
32+
name: Pre-commit checks
33+
runs-on: ubuntu-latest
34+
steps:
35+
- uses: actions/checkout@v4
36+
- uses: actions/setup-python@v5
37+
with:
38+
python-version: "3.x"
39+
- uses: pre-commit/[email protected]
40+
3141
build_manylinux:
42+
needs: [pre_commit]
3243
name: ${{ matrix.policy }}_${{ matrix.platform }}
3344
runs-on: ubuntu-22.04
3445
permissions:

.pre-commit-config.yaml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
repos:
2+
3+
- repo: https://github.com/pre-commit/pre-commit-hooks
4+
rev: v5.0.0
5+
hooks:
6+
- id: check-case-conflict
7+
- id: check-merge-conflict
8+
- id: check-yaml
9+
- id: check-toml
10+
- id: debug-statements
11+
- id: end-of-file-fixer
12+
exclude: docker/build_scripts/python_versions.json
13+
- id: mixed-line-ending
14+
- id: trailing-whitespace
15+
16+
- repo: https://github.com/shellcheck-py/shellcheck-py
17+
rev: v0.10.0.1
18+
hooks:
19+
- id: shellcheck
20+
21+
- repo: https://github.com/astral-sh/ruff-pre-commit
22+
rev: v0.8.0
23+
hooks:
24+
- id: ruff
25+
args: ["--fix", "--show-fixes", "--target-version=py37"]
26+
exclude: ^tools/.*.py|docker/build_scripts/manylinux-interpreters.py$
27+
- id: ruff-format
28+
args: ["--target-version=py37"]
29+
exclude: ^tools/.*.py|docker/build_scripts/manylinux-interpreters.py$
30+
- id: ruff
31+
name: ruff on python 3.12 tools
32+
files: ^tools/.*.py|docker/build_scripts/manylinux-interpreters.py$
33+
args: ["--fix", "--show-fixes", "--target-version=py312"]
34+
- id: ruff-format
35+
name: ruff-format on python 3.12 tools
36+
files: ^tools/.*.py|docker/build_scripts/manylinux-interpreters.py$
37+
args: ["--target-version=py312"]
38+
39+
- repo: https://github.com/codespell-project/codespell
40+
rev: v2.3.0
41+
hooks:
42+
- id: codespell
43+
args: ["-w"]
44+
exclude: ^docker/build_scripts/.*pubkey.*.txt$

build.sh

Lines changed: 25 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,15 @@ export POLICY
1212
export PLATFORM
1313

1414
# get docker default multiarch image prefix for PLATFORM
15-
if [ "${PLATFORM}" == "x86_64" ]; then
16-
GOARCH="amd64"
17-
elif [ "${PLATFORM}" == "i686" ]; then
18-
GOARCH="386"
19-
elif [ "${PLATFORM}" == "aarch64" ]; then
20-
GOARCH="arm64"
21-
elif [ "${PLATFORM}" == "ppc64le" ]; then
22-
GOARCH="ppc64le"
23-
elif [ "${PLATFORM}" == "s390x" ]; then
24-
GOARCH="s390x"
25-
elif [ "${PLATFORM}" == "armv7l" ]; then
26-
GOARCH="arm/v7"
27-
else
28-
echo "Unsupported platform: '${PLATFORM}'"
29-
exit 1
30-
fi
15+
case "${PLATFORM}" in
16+
x86_64) GOARCH="amd64";;
17+
i686) GOARCH="386";;
18+
aarch64) GOARCH="arm64";;
19+
ppc64le) GOARCH="ppc64le";;
20+
s390x) GOARCH="s390x";;
21+
armv7l) GOARCH="arm/v7";;
22+
*) echo "Unsupported platform: '${PLATFORM}'"; exit 1;;
23+
esac
3124

3225
# setup BASEIMAGE and its specific properties
3326
if [ "${POLICY}" == "manylinux2014" ]; then
@@ -63,45 +56,45 @@ export DEVTOOLSET_ROOTPATH
6356
export PREPEND_PATH
6457
export LD_LIBRARY_PATH_ARG
6558

66-
BUILD_ARGS_COMMON="
67-
--platform=linux/${GOARCH}
59+
BUILD_ARGS_COMMON=(
60+
"--platform=linux/${GOARCH}"
6861
--build-arg POLICY --build-arg PLATFORM --build-arg BASEIMAGE
6962
--build-arg DEVTOOLSET_ROOTPATH --build-arg PREPEND_PATH --build-arg LD_LIBRARY_PATH_ARG
70-
--rm -t quay.io/pypa/${POLICY}_${PLATFORM}:${COMMIT_SHA}
63+
--rm -t "quay.io/pypa/${POLICY}_${PLATFORM}:${COMMIT_SHA}"
7164
-f docker/Dockerfile docker/
72-
"
65+
)
7366

7467
if [ "${CI:-}" == "true" ]; then
7568
# Force plain output on CI
76-
BUILD_ARGS_COMMON="--progress plain ${BUILD_ARGS_COMMON}"
69+
BUILD_ARGS_COMMON=(--progress plain "${BUILD_ARGS_COMMON[@]}")
7770
# Workaround issue on ppc64le
78-
if [ ${PLATFORM} == "ppc64le" ] && [ "${MANYLINUX_BUILD_FRONTEND}" == "docker" ]; then
79-
BUILD_ARGS_COMMON="--network host ${BUILD_ARGS_COMMON}"
71+
if [ "${PLATFORM}" == "ppc64le" ] && [ "${MANYLINUX_BUILD_FRONTEND}" == "docker" ]; then
72+
BUILD_ARGS_COMMON=(--network host "${BUILD_ARGS_COMMON[@]}")
8073
fi
8174
fi
8275

8376
USE_LOCAL_CACHE=0
8477
if [ "${MANYLINUX_BUILD_FRONTEND}" == "docker" ]; then
85-
docker build ${BUILD_ARGS_COMMON}
78+
docker build "${BUILD_ARGS_COMMON[@]}"
8679
elif [ "${MANYLINUX_BUILD_FRONTEND}" == "podman" ]; then
87-
podman build ${BUILD_ARGS_COMMON}
80+
podman build "${BUILD_ARGS_COMMON[@]}"
8881
elif [ "${MANYLINUX_BUILD_FRONTEND}" == "docker-buildx" ]; then
8982
USE_LOCAL_CACHE=1
9083
docker buildx build \
9184
--load \
92-
--cache-from=type=local,src=$(pwd)/.buildx-cache-${POLICY}_${PLATFORM} \
93-
--cache-to=type=local,dest=$(pwd)/.buildx-cache-staging-${POLICY}_${PLATFORM},mode=max \
94-
${BUILD_ARGS_COMMON}
85+
"--cache-from=type=local,src=$(pwd)/.buildx-cache-${POLICY}_${PLATFORM}" \
86+
"--cache-to=type=local,dest=$(pwd)/.buildx-cache-staging-${POLICY}_${PLATFORM},mode=max" \
87+
"${BUILD_ARGS_COMMON[@]}"
9588
else
9689
echo "Unsupported build frontend: '${MANYLINUX_BUILD_FRONTEND}'"
9790
exit 1
9891
fi
9992

100-
docker run --rm -v $(pwd)/tests:/tests:ro quay.io/pypa/${POLICY}_${PLATFORM}:${COMMIT_SHA} /tests/run_tests.sh
93+
docker run --rm -v "$(pwd)/tests:/tests:ro" "quay.io/pypa/${POLICY}_${PLATFORM}:${COMMIT_SHA}" /tests/run_tests.sh
10194

10295
if [ ${USE_LOCAL_CACHE} -ne 0 ]; then
103-
if [ -d $(pwd)/.buildx-cache-${POLICY}_${PLATFORM} ]; then
104-
rm -rf $(pwd)/.buildx-cache-${POLICY}_${PLATFORM}
96+
if [ -d "$(pwd)/.buildx-cache-${POLICY}_${PLATFORM}" ]; then
97+
rm -rf "$(pwd)/.buildx-cache-${POLICY}_${PLATFORM}"
10598
fi
106-
mv $(pwd)/.buildx-cache-staging-${POLICY}_${PLATFORM} $(pwd)/.buildx-cache-${POLICY}_${PLATFORM}
99+
mv "$(pwd)/.buildx-cache-staging-${POLICY}_${PLATFORM}" "$(pwd)/.buildx-cache-${POLICY}_${PLATFORM}"
107100
fi

deploy.sh

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,26 +12,26 @@ fi
1212
set -x
1313

1414
TAG="quay.io/pypa/${POLICY}_${PLATFORM}"
15-
COMMIT_ABBREV_SHA=$(git show -s --format=%h ${COMMIT_SHA})
16-
COMMIT_DATE=$(git show -s --format=%cd --date=short ${COMMIT_SHA})
15+
COMMIT_ABBREV_SHA=$(git show -s --format=%h "${COMMIT_SHA}")
16+
COMMIT_DATE=$(git show -s --format=%cd --date=short "${COMMIT_SHA}")
1717
BUILD_ID=${COMMIT_DATE}-${COMMIT_ABBREV_SHA}
1818
# Dependabot does not work with the BUILD_ID format
1919
# Use a version like tag
20-
if $(git rev-parse --is-shallow-repository); then
20+
if eval "$(git rev-parse --is-shallow-repository)"; then
2121
git fetch --unshallow
2222
fi
23-
BUILD_NUMBER=$(git rev-list --since=${COMMIT_DATE}T00:00:00Z --first-parent --count ${COMMIT_SHA})
23+
BUILD_NUMBER=$(git rev-list "--since=${COMMIT_DATE}T00:00:00Z" --first-parent --count "${COMMIT_SHA}")
2424
BUILD_ID2=${COMMIT_DATE//-/.}-${BUILD_NUMBER}
2525

26-
docker tag ${TAG}:${COMMIT_SHA} ${TAG}:${BUILD_ID}
27-
docker tag ${TAG}:${COMMIT_SHA} ${TAG}:${BUILD_ID2}
28-
docker tag ${TAG}:${COMMIT_SHA} ${TAG}:latest
26+
docker tag "${TAG}:${COMMIT_SHA}" "${TAG}:${BUILD_ID}"
27+
docker tag "${TAG}:${COMMIT_SHA}" "${TAG}:${BUILD_ID2}"
28+
docker tag "${TAG}:${COMMIT_SHA}" "${TAG}:latest"
2929

3030
set +x
3131

3232
if [ $DRY_RUN -eq 0 ]; then
33-
docker login -u $QUAY_USERNAME -p $QUAY_PASSWORD quay.io
34-
docker push ${TAG}:${BUILD_ID}
35-
docker push ${TAG}:${BUILD_ID2}
36-
docker push ${TAG}:latest
33+
docker login -u "${QUAY_USERNAME}" -p "${QUAY_PASSWORD}" quay.io
34+
docker push "${TAG}:${BUILD_ID}"
35+
docker push "${TAG}:${BUILD_ID2}"
36+
docker push "${TAG}:latest"
3737
fi

docker/build_scripts/ambv-pubkey.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1008,4 +1008,3 @@ xEJP1pajaM6+D8oa0fqFYgcAmXeZ6fBg531VOuNwWdavel8vSqx/jik4b8SS4ygK
10081008
Xw8b
10091009
=4+Ub
10101010
-----END PGP PUBLIC KEY BLOCK-----
1011-

docker/build_scripts/build-cpython.sh

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ set -exuo pipefail
88
MY_DIR=$(dirname "${BASH_SOURCE[0]}")
99

1010
# Get build utilities
11-
source $MY_DIR/build_utils.sh
11+
# shellcheck source-path=SCRIPTDIR
12+
source "${MY_DIR}/build_utils.sh"
1213

1314

1415
CPYTHON_VERSION=$1
@@ -20,24 +21,24 @@ function pyver_dist_dir {
2021
# Thus:
2122
# 3.2.1 -> 3.2.1
2223
# 3.7.0b4 -> 3.7.0
23-
echo $1 | awk -F "." '{printf "%d.%d.%d", $1, $2, $3}'
24+
echo "$1" | awk -F "." '{printf "%d.%d.%d", $1, $2, $3}'
2425
}
2526

26-
CPYTHON_DIST_DIR=$(pyver_dist_dir ${CPYTHON_VERSION})
27-
fetch_source Python-${CPYTHON_VERSION}.tar.xz ${CPYTHON_DOWNLOAD_URL}/${CPYTHON_DIST_DIR}
28-
fetch_source Python-${CPYTHON_VERSION}.tar.xz.asc ${CPYTHON_DOWNLOAD_URL}/${CPYTHON_DIST_DIR}
29-
gpg --import ${MY_DIR}/cpython-pubkeys.txt
30-
gpg --verify Python-${CPYTHON_VERSION}.tar.xz.asc
31-
tar -xJf Python-${CPYTHON_VERSION}.tar.xz
32-
pushd Python-${CPYTHON_VERSION}
27+
CPYTHON_DIST_DIR=$(pyver_dist_dir "${CPYTHON_VERSION}")
28+
fetch_source "Python-${CPYTHON_VERSION}.tar.xz" "${CPYTHON_DOWNLOAD_URL}/${CPYTHON_DIST_DIR}"
29+
fetch_source "Python-${CPYTHON_VERSION}.tar.xz.asc" "${CPYTHON_DOWNLOAD_URL}/${CPYTHON_DIST_DIR}"
30+
gpg --import "${MY_DIR}/cpython-pubkeys.txt"
31+
gpg --verify "Python-${CPYTHON_VERSION}.tar.xz.asc"
32+
tar -xJf "Python-${CPYTHON_VERSION}.tar.xz"
33+
pushd "Python-${CPYTHON_VERSION}"
3334
PREFIX="/opt/_internal/cpython-${CPYTHON_VERSION}"
34-
mkdir -p ${PREFIX}/lib
35+
mkdir -p "${PREFIX}/lib"
3536
CFLAGS_EXTRA=""
36-
CONFIGURE_ARGS="--disable-shared --with-ensurepip=no"
37+
CONFIGURE_ARGS=(--disable-shared --with-ensurepip=no)
3738

3839
if [ "${2:-}" == "nogil" ]; then
3940
PREFIX="${PREFIX}-nogil"
40-
CONFIGURE_ARGS="${CONFIGURE_ARGS} --disable-gil"
41+
CONFIGURE_ARGS+=(--disable-gil)
4142
fi
4243

4344
if [ "${CPYTHON_VERSION}" == "3.6.15" ]; then
@@ -51,7 +52,7 @@ if [ "${AUDITWHEEL_POLICY}" == "manylinux2014" ] ; then
5152
fi
5253

5354
if [ "${BASE_POLICY}_${AUDITWHEEL_ARCH}" == "musllinux_armv7l" ]; then
54-
CONFIGURE_ARGS="${CONFIGURE_ARGS} --build=arm-linux-musleabihf"
55+
CONFIGURE_ARGS+=(--build=arm-linux-musleabihf)
5556
fi
5657

5758
SQLITE_PREFIX=$(find /opt/_internal -maxdepth 1 -name 'sqlite*')
@@ -64,10 +65,10 @@ fi
6465

6566
OPENSSL_PREFIX=$(find /opt/_internal -maxdepth 1 -name 'openssl*')
6667
if [ "${OPENSSL_PREFIX}" != "" ]; then
67-
CONFIGURE_ARGS="${CONFIGURE_ARGS} --with-openssl=${OPENSSL_PREFIX}"
68+
CONFIGURE_ARGS+=("--with-openssl=${OPENSSL_PREFIX}")
6869
case "${CPYTHON_VERSION}" in
6970
3.8.*|3.9.*) export LD_RUN_PATH=${OPENSSL_PREFIX}/lib;;
70-
*) CONFIGURE_ARGS="${CONFIGURE_ARGS} --with-openssl-rpath=auto";;
71+
*) CONFIGURE_ARGS+=(--with-openssl-rpath=auto);;
7172
esac
7273
fi
7374

@@ -82,18 +83,18 @@ fi
8283
./configure \
8384
CFLAGS_NODIST="${MANYLINUX_CFLAGS} ${MANYLINUX_CPPFLAGS} ${CFLAGS_EXTRA}" \
8485
LDFLAGS_NODIST="${MANYLINUX_LDFLAGS}" \
85-
--prefix=${PREFIX} ${CONFIGURE_ARGS} > /dev/null
86+
"--prefix=${PREFIX}" "${CONFIGURE_ARGS[@]}" > /dev/null
8687
make > /dev/null
8788
make install > /dev/null
8889
popd
89-
rm -rf Python-${CPYTHON_VERSION} Python-${CPYTHON_VERSION}.tgz Python-${CPYTHON_VERSION}.tgz.asc
90+
rm -rf "Python-${CPYTHON_VERSION}" "Python-${CPYTHON_VERSION}.tgz" "Python-${CPYTHON_VERSION}.tgz.asc"
9091

9192
if [ "${OPENSSL_PREFIX}" != "" ]; then
92-
rm -rf ${OPENSSL_PREFIX}/bin ${OPENSSL_PREFIX}/include ${OPENSSL_PREFIX}/lib/pkgconfig ${OPENSSL_PREFIX}/lib/*.so
93+
rm -rf "${OPENSSL_PREFIX:?}/bin" "${OPENSSL_PREFIX}/include" "${OPENSSL_PREFIX}/lib/pkgconfig" "${OPENSSL_PREFIX}/lib/*.so"
9394
fi
9495

9596
# We do not need precompiled .pyc and .pyo files.
96-
clean_pyc ${PREFIX}
97+
clean_pyc "${PREFIX}"
9798

9899
# Strip ELF files found in ${PREFIX}
99-
strip_ ${PREFIX}
100+
strip_ "${PREFIX}"

docker/build_scripts/build-curl.sh

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,13 @@ set -exuo pipefail
88
MY_DIR=$(dirname "${BASH_SOURCE[0]}")
99

1010
# Get build utilities
11-
source $MY_DIR/build_utils.sh
11+
# shellcheck source-path=SCRIPTDIR
12+
source "${MY_DIR}/build_utils.sh"
1213

1314
# Install a more recent curl
14-
check_var ${CURL_ROOT}
15-
check_var ${CURL_HASH}
16-
check_var ${CURL_DOWNLOAD_URL}
15+
check_var "${CURL_ROOT}"
16+
check_var "${CURL_HASH}"
17+
check_var "${CURL_DOWNLOAD_URL}"
1718

1819
# Only needed on manylinux2014
1920
if [ "${AUDITWHEEL_POLICY}" != "manylinux2014" ]; then
@@ -30,15 +31,15 @@ fi
3031
SO_COMPAT=4
3132
PREFIX=/opt/_internal/curl-${SO_COMPAT}
3233

33-
fetch_source ${CURL_ROOT}.tar.gz ${CURL_DOWNLOAD_URL}
34-
check_sha256sum ${CURL_ROOT}.tar.gz ${CURL_HASH}
35-
tar -xzf ${CURL_ROOT}.tar.gz
36-
pushd ${CURL_ROOT}
34+
fetch_source "${CURL_ROOT}.tar.gz" "${CURL_DOWNLOAD_URL}"
35+
check_sha256sum "${CURL_ROOT}.tar.gz" "${CURL_HASH}"
36+
tar -xzf "${CURL_ROOT}.tar.gz"
37+
pushd "${CURL_ROOT}"
3738
./configure --prefix=${PREFIX} --disable-static --without-libpsl --with-openssl CPPFLAGS="${MANYLINUX_CPPFLAGS}" CFLAGS="${MANYLINUX_CFLAGS}" CXXFLAGS="${MANYLINUX_CXXFLAGS}" LDFLAGS="${MANYLINUX_LDFLAGS} -Wl,-rpath=\$(LIBRPATH)" > /dev/null
3839
make > /dev/null
3940
make install > /dev/null
4041
popd
41-
rm -rf ${CURL_ROOT} ${CURL_ROOT}.tar.gz ${PREFIX}/share/man
42+
rm -rf "${CURL_ROOT}" "${CURL_ROOT}.tar.gz" ${PREFIX}/share/man
4243

4344
if [ ! -f ${PREFIX}/lib/libcurl.so.${SO_COMPAT} ]; then
4445
echo "please update SO_COMPAT"

docker/build_scripts/build-git.sh

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ set -exuo pipefail
88
MY_DIR=$(dirname "${BASH_SOURCE[0]}")
99

1010
# Get build utilities
11-
source $MY_DIR/build_utils.sh
11+
# shellcheck source-path=SCRIPTDIR
12+
source "${MY_DIR}/build_utils.sh"
1213

1314
if [ "${BASE_POLICY}" == "musllinux" ]; then
1415
export NO_REGEX=NeedsStartEnd
@@ -22,22 +23,23 @@ if [ -d /opt/_internal ]; then
2223
CURL_PREFIX=$(find /opt/_internal -maxdepth 1 -name 'curl-*')
2324
if [ "${CURL_PREFIX}" != "" ]; then
2425
export CURLDIR=${CURL_PREFIX}
25-
export CURL_LDFLAGS="-Wl,-rpath=${CURL_PREFIX}/lib $(${CURL_PREFIX}/bin/curl-config --libs)"
26+
CURL_LDFLAGS="-Wl,-rpath=${CURL_PREFIX}/lib $("${CURL_PREFIX}/bin/curl-config" --libs)"
27+
export CURL_LDFLAGS
2628
fi
2729
fi
2830

2931
# Install newest git
30-
check_var ${GIT_ROOT}
31-
check_var ${GIT_HASH}
32-
check_var ${GIT_DOWNLOAD_URL}
33-
34-
fetch_source ${GIT_ROOT}.tar.gz ${GIT_DOWNLOAD_URL}
35-
check_sha256sum ${GIT_ROOT}.tar.gz ${GIT_HASH}
36-
tar -xzf ${GIT_ROOT}.tar.gz
37-
pushd ${GIT_ROOT}
32+
check_var "${GIT_ROOT}"
33+
check_var "${GIT_HASH}"
34+
check_var "${GIT_DOWNLOAD_URL}"
35+
36+
fetch_source "${GIT_ROOT}.tar.gz" "${GIT_DOWNLOAD_URL}"
37+
check_sha256sum "${GIT_ROOT}.tar.gz" "${GIT_HASH}"
38+
tar -xzf "${GIT_ROOT}.tar.gz"
39+
pushd "${GIT_ROOT}"
3840
make install prefix=/usr/local NO_GETTEXT=1 NO_TCLTK=1 DESTDIR=/manylinux-rootfs CPPFLAGS="${MANYLINUX_CPPFLAGS}" CFLAGS="${MANYLINUX_CFLAGS}" CXXFLAGS="${MANYLINUX_CXXFLAGS}" LDFLAGS="${MANYLINUX_LDFLAGS}"
3941
popd
40-
rm -rf ${GIT_ROOT} ${GIT_ROOT}.tar.gz
42+
rm -rf "${GIT_ROOT}" "${GIT_ROOT}.tar.gz"
4143

4244

4345
# Strip what we can

0 commit comments

Comments
 (0)