Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add CPython 3.13 --disable-gil build #1564

Merged
merged 4 commits into from
May 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,10 @@ FROM build_cpython AS build_cpython313
COPY build_scripts/cpython-pubkey-312-313.txt /build_scripts/cpython-pubkeys.txt
RUN manylinux-entrypoint /build_scripts/build-cpython.sh 3.13.0b1

FROM build_cpython AS build_cpython313_nogil
COPY build_scripts/cpython-pubkey-312-313.txt /build_scripts/cpython-pubkeys.txt
RUN manylinux-entrypoint /build_scripts/build-cpython.sh 3.13.0b1 nogil


FROM runtime_base
COPY --from=build_git /manylinux-rootfs /
Expand All @@ -154,6 +158,7 @@ RUN --mount=type=bind,target=/build_cpython36,from=build_cpython36 \
--mount=type=bind,target=/build_cpython311,from=build_cpython311 \
--mount=type=bind,target=/build_cpython312,from=build_cpython312 \
--mount=type=bind,target=/build_cpython313,from=build_cpython313 \
--mount=type=bind,target=/build_cpython313_nogil,from=build_cpython313_nogil \
mkdir -p /opt/_internal && \
cp -rf /build_cpython*/opt/_internal/* /opt/_internal/ && \
manylinux-entrypoint /opt/_internal/build_scripts/finalize.sh \
Expand Down
12 changes: 3 additions & 9 deletions docker/build_scripts/requirements3.13.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,10 @@ packaging==24.0 \
--hash=sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5 \
--hash=sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9
# via build
pip==24.0 \
--hash=sha256:ba0d021a166865d2265246961bec0152ff124de910c5cc39f1156ce3fa7c69dc \
--hash=sha256:ea9bd1a847e8c5774a5777bb398c19e80bcd4e2aa16a4b301b718fe6f593aba2
pip==24.1b1 \
--hash=sha256:752516cffafef5cf29d3fb2f06c978f27e98709654689cf277b2fce984c7a591 \
--hash=sha256:a9bd4c037d72325b4e903ec3f383263deea3eb73cd01db7a844edd026fc68afe
pyproject-hooks==1.1.0 \
--hash=sha256:4b37730834edbd6bd37f26ece6b44802fb1c1ee2ece0e54ddff8bfc06db86965 \
--hash=sha256:7ceeefe9aec63a1064c18d939bdc3adf2d8aa1988a510afec15151578b232aa2
# via build
setuptools==69.5.1 \
--hash=sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987 \
--hash=sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32
wheel==0.43.0 \
--hash=sha256:465ef92c69fa5c5da2d1cf8ac40559a8c940886afcef87dcf14b9470862f1d85 \
--hash=sha256:55c570405f142630c6b9f72fe09d9b67cf1477fcf543ae5b8dcb1f5b7377da81
7 changes: 4 additions & 3 deletions requirements.in
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
pip
setuptools
wheel
pip>=24.1b1 ; python_version >= '3.13'
pip ; python_version < '3.13'
setuptools ; python_version < '3.13'
wheel ; python_version < '3.13'
build
packaging
6 changes: 3 additions & 3 deletions tests/manylinux-check.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

def is_manylinux1_compatible():
# Only Linux, and only x86-64 / i686
from distutils.util import get_platform
from sysconfig import get_platform
if get_platform() not in ["linux-x86_64", "linux-i686"]:
return False

Expand All @@ -23,7 +23,7 @@ def is_manylinux1_compatible():

def is_manylinux2010_compatible():
# Only Linux, and only x86-64 / i686
from distutils.util import get_platform
from sysconfig import get_platform
if get_platform() not in ["linux-x86_64", "linux-i686"]:
return False

Expand All @@ -41,7 +41,7 @@ def is_manylinux2010_compatible():

def is_manylinux2014_compatible():
# Only Linux, and only supported architectures
from distutils.util import get_platform
from sysconfig import get_platform
if get_platform() not in [
"linux-x86_64",
"linux-i686",
Expand Down
12 changes: 6 additions & 6 deletions tests/run_tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,15 @@ else
fi

if [ "${AUDITWHEEL_POLICY:0:10}" == "musllinux_" ]; then
EXPECTED_PYTHON_COUNT=8
EXPECTED_PYTHON_COUNT_ALL=8
EXPECTED_PYTHON_COUNT=9
EXPECTED_PYTHON_COUNT_ALL=9
else
if [ "${AUDITWHEEL_ARCH}" == "x86_64" ] || [ "${AUDITWHEEL_ARCH}" == "i686" ] || [ "${AUDITWHEEL_ARCH}" == "aarch64" ]; then
EXPECTED_PYTHON_COUNT=12
EXPECTED_PYTHON_COUNT_ALL=12
EXPECTED_PYTHON_COUNT=13
EXPECTED_PYTHON_COUNT_ALL=13
else
EXPECTED_PYTHON_COUNT=8
EXPECTED_PYTHON_COUNT_ALL=8
EXPECTED_PYTHON_COUNT=9
EXPECTED_PYTHON_COUNT_ALL=9
fi
fi
PYTHON_COUNT=$(manylinux-interpreters list --installed | wc -l)
Expand Down