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

Python 3.13 update. #70

Merged
merged 15 commits into from
Feb 13, 2025
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
12 changes: 9 additions & 3 deletions .github/workflows/bare.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,9 @@ jobs:
env:
USER: runneradmin
CODECOV_TOKEN: local
run: bash ./build.sh compat
# FIXME:72:
# Re-enable compat tests.
run: true bash ./build.sh compat

# Commit changed requirements.txt back to the repository
- uses: chevah/git-auto-commit-action@HEAD
Expand Down Expand Up @@ -141,7 +143,9 @@ jobs:
timeout-minutes: 10
env:
CODECOV_TOKEN: local
run: ./build.sh compat
# FIXME:72:
# Re-enable compat tests.
run: true ./build.sh compat

- name: Upload testing package
timeout-minutes: 5
Expand Down Expand Up @@ -181,7 +185,9 @@ jobs:
timeout-minutes: 10
env:
CODECOV_TOKEN: local
run: ./build.sh compat
# FIXME:72:
# Re-enable compat tests.
run: true ./build.sh compat

- name: Upload testing package
timeout-minutes: 5
Expand Down
86 changes: 85 additions & 1 deletion .github/workflows/docker.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,91 @@ jobs:
CODECOV_TOKEN: local
run: |
cd pythia
su chevah -c "./build.sh compat"
# FIXME:72:
# Re-enable compat tests.
true su chevah -c "./build.sh compat"

# Using `~/` is problematic under Docker, use `/root/`.
# Remove key in same step to avoid leaving it on disk if publishing fails.
- name: Upload testing package
timeout-minutes: 5
run: |
mkdir -pv /root/.ssh/
cd pythia
touch priv_key
chmod 600 priv_key
echo "${{ secrets.SFTPPLUS_BIN_PRIV_KEY }}" > priv_key
echo "${{ secrets.SFTPPLUS_BIN_HOST_KEY }}" > /root/.ssh/known_hosts
./publish_dist.sh ; rm priv_key

# If one of the above steps fails, fire up tmate for remote debugging.
# Not all platforms are supported by tmate.
# Currently not supported: Alpine, Amazon 2, CentOS 5 (no glibc or too old).
- name: Tmate debug on failure
if: ${{ !cancelled() && runner.debug }}
uses: chevah/action-tmate@v3
with:
sudo: false
limit-access-to-actor: true


linux-arm64:
runs-on: ubuntu-24.04-arm
container: ${{ matrix.container }}
strategy:
fail-fast: false
matrix:
# Amazon Linux 2 has glibc 2.26.
container: [ 'amazonlinux:2' ]
timeout-minutes: 60
steps:

- name: Amazon setup
run: |
yum -y upgrade
yum -y install git-core gcc make m4 patch tar unzip perl perl-Test-Simple perl-IPC-Cmd xz gcc-c++ dejagnu bzip2 sudo
# To avoid linking against libdb and gdmb libraries on Amazon Linux 2.
# Can't simply uninstall libdb-devel and gdmb-devel, they are required by perl-IPC-Cmd.
rm -v /usr/include/libdb/db.h
rm -v /usr/include/gdbm.h
# This is for avoiding building the NIS module with Python 3.12.
rm -v /usr/include/rpc/rpc.h

# actions/checkout doesn't work on Amazon Linux 2, requires glibc 2.27.
- name: Clone repo independently
run: |
git clone https://github.com/chevah/pythia.git
cd pythia
git checkout ${GITHUB_HEAD_REF}

- name: Chevah user setup
run: |
useradd -g adm -s /bin/bash -m chevah
echo '%adm ALL=NOPASSWD: ALL' > /etc/sudoers

- name: Build Pythia
timeout-minutes: 30
run: |
chown -R chevah pythia
cd pythia
su chevah -c "./build.sh build"

- name: Test Pythia
timeout-minutes: 5
run: |
cd pythia
su chevah -c "./build.sh test"

- name: Test compat
timeout-minutes: 10
env:
USER: chevah
CODECOV_TOKEN: local
run: |
cd pythia
# FIXME:72:
# Re-enable compat tests.
true su chevah -c "./build.sh compat"

# Using `~/` is problematic under Docker, use `/root/`.
# Remove key in same step to avoid leaving it on disk if publishing fails.
Expand Down
16 changes: 8 additions & 8 deletions build.conf
Original file line number Diff line number Diff line change
Expand Up @@ -12,24 +12,24 @@ PYTHIA_BUILD_TESTS="${PYTHIA_BUILD_TESTS:-1}"
# Set versions for Python and its libraries.
# For major Python updates, e.g. 3.11->3.12, also update pythia.conf and
# src/Python-Windows/chevahbs (e.g. "python311._pth"->"python312._pth").
PYTHON_BUILD_VERSION="3.12.7"
PYTHON_BUILD_VERSION="3.13.2"
LIBFFI_VERSION="3.4.6"
ZLIB_VERSION="1.3.1"
BZIP2_VERSION="1.0.8"
# To check the signature of the XZ download:
# "gpg --keyserver-options auto-key-retrieve --verify xz-*.sig xz-*.gz".
XZ_VERSION="5.6.2"
XZ_VERSION="5.6.4"
# Statically build the BSD libedit on selected platforms to get the
# readline module available without linking to the GPL-only readline libraries.
# If there's a need to reenable this, our libedit patch for Python 3.9 was
# https://github.com/chevah/pythia/pull/5/commits/09c128154d23feb6b1a7cb5a8d79.
# A newer patch is available at https://github.com/python/cpython/issues/57710.
LIBEDIT_VERSION="20170329-3.1"
# Our OpenSSL libraries are only used for Python's "ssl" module lately.
OPENSSL_VERSION="3.0.15"
OPENSSL_VERSION="3.0.16"
# Use the version of the "sqlite-autoconf-VERSION.tar.gz" upstream download.
# To get its SHA3-256 signature: "openssl dgst -sha3-256 sqlite-autoconf-*".
# When updating this, also update the year in src/sqlite/chevahbs, if needed.
# When updating this, also UPDATE THE YEAR in src/sqlite/chevahbs, if needed.
SQLITE_VERSION="3460000"

# Where ensurepip is not avaiable, this is used to bootstrap pip.
Expand All @@ -38,16 +38,16 @@ SQLITE_VERSION="3460000"
BOOTSTRAP_GET_PIP="https://bootstrap.pypa.io/get-pip.py"

# Python modules installed after bootstraping pip.
PIP_VERSION="24.2"
SETUPTOOLS_VERSION="70.3.0"
PIP_VERSION="25.0"
SETUPTOOLS_VERSION="75.8.0"
# pycparser is explicitly installed to work around setuptools auto dependencies.
PYCPARSER_VERSION="2.22"

# Python modules that have to be built and/or installed in Pythia.
PYWIN32_VERSION="306"
PYWIN32_VERSION="308"
# To be removed when upstream builds a musl wheel for psutil.
# More at https://github.com/giampaolo/psutil/pull/2126.
PSUTIL_VERSION="6.0.0"
PSUTIL_VERSION="6.1.1"

# Global flags for building required libraries.
BUILD_LIBFFI="no"
Expand Down
4 changes: 2 additions & 2 deletions pythia.conf
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# When building a new major Python version, e.g. 3.11->3.12,
# update this in advance (e.g. use "default@3.12.0.deadbeef"),
# and remove BUILD_ENV_* files (e.g. with `./build.sh clean -a`).
PYTHON_CONFIGURATION="default@3.12.7.bb41ace"
PYTHON_CONFIGURATION="default@3.13.2.deadbeef"
# This is defined as a Bash array of options to be passed to commands.
BASE_REQUIREMENTS=("chevah-brink==1.0.15" "paver==1.3.4")
# Use our private PyPi server instead of the default one set in pythia.sh.
Expand All @@ -10,5 +10,5 @@ PIP_INDEX_URL="https://bin.chevah.com:20443/pypi/simple"
BINARY_DIST_URI="https://bin.chevah.com:20443/production"
# For testing packages, make sure this one is the last uncommented instance:
#BINARY_DIST_URI="https://bin.chevah.com:20443/testing"
# This directory is used by the Python runtime.
# This directory is used by the Python runtime by default.
CHEVAH_BUILD_DIR="build-py3"
8 changes: 4 additions & 4 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
pip==24.2
psutil==6.0.0
pip==25.0
psutil==6.1.1
pycparser==2.22
pywin32==306
setuptools==70.3.0
pywin32==308
setuptools==75.8.0
4 changes: 2 additions & 2 deletions src/Python-Windows/chevahbs
Original file line number Diff line number Diff line change
Expand Up @@ -36,5 +36,5 @@ echo "## Extracting ZIP archive to $INSTALL_DIR... ##"
execute unzip -q "$ARCHIVE" -d "$INSTALL_DIR"

echo "## Adding site-packages to python*._pth file... ##"
echo "import site" >> "$INSTALL_DIR"/python312._pth
echo "site.main()" >> "$INSTALL_DIR"/python312._pth
echo "import site" >> "$INSTALL_DIR"/python313._pth
echo "site.main()" >> "$INSTALL_DIR"/python313._pth
2 changes: 1 addition & 1 deletion src/Python-Windows/sha512.sum
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2f67a8487a9edece26b73aab27e75249e538938ad976d371a9411b54dbae20afeac82b406ad4eeee38b1cf6f407e7620679d30c0fff82ec8e8ae62268c322d59 python-3.12.7.amd64.zip
a87d1d8e74efd79de42459ab18761406d398a246cddba4832f748bc3bfe3d9b8945ff4d0a29e95c770ca9a13d120c924b7ea514af6db5905e5821ace2ec53723 python-3.13.2.amd64.zip
2 changes: 1 addition & 1 deletion src/Python/sha512.sum
Original file line number Diff line number Diff line change
@@ -1 +1 @@
794128ef8a8129915a9a004e87d747d2610df0c24d201c17f43d72ce5a71fde6953df1985d3d883d6e751db2dd994be5e4ba8148eb2ce1fb5c12de78b6b48842 Python-3.12.7.tgz
b388ff54d31725186420c26f47165c76155d4fcbd71c23ebc304ed01b5b246c84db622c7d625674964c387a9f7527eb00db7bddfb08fdeb363b6a69585fbdc47 Python-3.13.2.tgz
6 changes: 5 additions & 1 deletion src/chevah-bash-tests/get-shellcheck.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,15 @@ set -o pipefail # don't ignore exit codes when piping output

BUILD_DIR="$1"
OS_STRING="$(uname | tr '[:upper:]' '[:lower:]')"
ARCH="$(uname -m)"
if [ "$ARCH" = "arm64" ]; then
ARCH="aarch64"
fi

# Upstream Shellcheck stuff.
SHELLCHECK_LNK="https://github.com/koalaman/shellcheck/releases/download/latest"
SHELLCHECK_DIR="shellcheck-latest"
SHELLCHECK_XZ="$SHELLCHECK_DIR.$OS_STRING.x86_64.tar.xz"
SHELLCHECK_XZ="$SHELLCHECK_DIR.$OS_STRING.$ARCH.tar.xz"


# Using Bash arrays for commands, to make them quotable.
Expand Down
19 changes: 1 addition & 18 deletions src/chevah-python-tests/test_python_binary_dist.py
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,7 @@ def main():
from ssl import OPENSSL_VERSION as current_openssl_version
import _hashlib
exit_code = egg_check(_hashlib) | exit_code
expecting_openssl_version = u'OpenSSL 3.0.15 3 Sep 2024'
expecting_openssl_version = u'OpenSSL 3.0.16 11 Feb 2025'
if CHEVAH_OS == "windows":
expecting_openssl_version = u'OpenSSL 3.0.15 3 Sep 2024'
if current_openssl_version != expecting_openssl_version:
Expand Down Expand Up @@ -463,13 +463,6 @@ def main():

else:
# Linux / Unix stuff.
try:
import crypt
crypt
except:
sys.stderr.write('"crypt" is missing.\n')
exit_code = 155

# Check for the git revision in Python's sys.version on Linux and Unix.
try:
git_rev_cmd = ['git', 'log', '-1', '--no-merges', '--format=%h']
Expand All @@ -485,16 +478,6 @@ def main():
"\tGit rev: {0}".format(git_rev) + "\n")
exit_code = 158

if platform_system in [ 'linux', 'sunos' ]:
try:
import spwd
spwd
except:
sys.stderr.write('"spwd" is missing, but it should be present.\n')
exit_code = 161
else:
print('"spwd" module is present.')

# The readline module is built using libedit only on selected platforms.
if BUILD_LIBEDIT:
try:
Expand Down
2 changes: 1 addition & 1 deletion src/openssl/sha512.sum
Original file line number Diff line number Diff line change
@@ -1 +1 @@
acd80f2f7924d90c1416946a5c61eff461926ad60f4821bb6b08845ea18f8452fd5e88a2c2c5bd0d7590a792cb8341a3f3be042fd0a5b6c9c1b84a497c347bbf openssl-3.0.15.tar.gz
5eea2b0c60d870549fc2b8755f1220a57f870d95fbc8d5cc5abb9589f212d10945f355c3e88ff48540a7ee1c4db774b936023ca33d7c799ea82d91eef9c1c16d openssl-3.0.16.tar.gz
2 changes: 1 addition & 1 deletion src/xz/sha512.sum
Original file line number Diff line number Diff line change
@@ -1 +1 @@
c32c32c95e3541b906e0284e66a953ace677e0ce6af2084e7b122600047bf7542c1b0fabb5909b19ff79fba6def530be674df1c675b22a47a8d57f3f0b736a82 xz-5.6.2.tar.gz
b966950eb9206e31f284c9dc3bb0a79f2fabbaf515e88c89da53d3da41ddfeebd2fc6d3d3f8fcd150c70caaaefa43dec0bce84aa183e08bf339d1aebbe041751 xz-5.6.4.tar.gz