From c0d849ceab82d879e10aa67c7087efb91ac25f69 Mon Sep 17 00:00:00 2001 From: Alexandr Reshetnikov Date: Sat, 14 Dec 2024 12:29:27 +0400 Subject: [PATCH] python 3.13.1 freethreaded (#125) --- .github/workflows/python.yml | 2 +- README.md | 34 +++++++++++++++++----------------- python/build_gnu.sh | 8 ++++---- python/build_msvc.sh | 6 +++--- python/build_musl.sh | 4 ++-- python/test_linux.sh | 2 +- python/test_windows.sh | 2 +- 7 files changed, 29 insertions(+), 29 deletions(-) diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml index 76ccae2cd..0678cc40d 100644 --- a/.github/workflows/python.yml +++ b/.github/workflows/python.yml @@ -64,7 +64,7 @@ jobs: uses: ./.github/workflows/release.yml with: workflow: ${{ github.workflow }} - tool_version: '3.12.5' + tool_version: '3.13.1' prepare_body: | bsdtar -Oxf ./build-musl/build-musl.tar.gz build-musl.md >> body.md bsdtar -Oxf ./build-gnu/build-gnu.tar.gz build-gnu.md >> body.md diff --git a/README.md b/README.md index badfec151..a63846193 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,20 @@ # Standalone (static) tools: -| releases | latest source | -|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/python-3.12.5/total?label=⭳%20python-3.12.5)](https://github.com/hemnstill/StandaloneTools/releases/tag/python-3.12.5) | [![GitHub Repo stars](https://img.shields.io/github/stars/indygreg/python-build-standalone?style=social&label=python-build-standalone)](https://github.com/indygreg/python-build-standalone) [![GitHub tag (latest SemVer)](https://img.shields.io/github/v/tag/indygreg/python-build-standalone)](https://python-build-standalone.readthedocs.io/en/latest/)
[![GitHub Repo stars](https://img.shields.io/github/stars/python/cpython?style=social&label=python)](https://github.com/python/cpython) [![GitHub tag (latest SemVer)](https://img.shields.io/github/v/tag/python/cpython)](https://docs.python.org/3/) | -| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/poetry-1.8.3/total?label=⭳%20poetry-1.8.3)](https://github.com/hemnstill/StandaloneTools/releases/tag/poetry-1.8.3) | [![GitHub Repo stars](https://img.shields.io/github/stars/python-poetry/poetry?style=social&label=poetry)](https://github.com/python-poetry/poetry) [![GitHub tag (latest SemVer)](https://img.shields.io/github/v/tag/python-poetry/poetry)](https://python-poetry.org/history/) | -| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/pylint-3.0.3/total?label=⭳%20pylint-3.0.3)](https://github.com/hemnstill/StandaloneTools/releases/tag/pylint-3.0.3) | [![GitHub Repo stars](https://img.shields.io/github/stars/PyCQA/pylint?style=social&label=pylint)](https://github.com/PyCQA/pylint) [![GitHub tag (latest SemVer)](https://img.shields.io/github/v/tag/PyCQA/pylint)](https://pylint.pycqa.org/en/latest/) | -| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/mypy-1.8.0/total?label=⭳%20mypy-1.8.0)](https://github.com/hemnstill/StandaloneTools/releases/tag/mypy-1.8.0) | [![GitHub Repo stars](https://img.shields.io/github/stars/python/mypy?style=social&label=mypy)](https://github.com/python/mypy) [![GitHub tag (latest SemVer)](https://img.shields.io/github/v/tag/python/mypy)](https://mypy.readthedocs.io/en/latest/) | -| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/ansible-8.3.0/total?label=⭳%20ansible-8.3.0-core-2.15.3)](https://github.com/hemnstill/StandaloneTools/releases/tag/ansible-8.3.0) | [![GitHub Repo stars](https://img.shields.io/github/stars/ansible/ansible?style=social&label=ansible)](https://github.com/ansible/ansible) [![PyPI](https://img.shields.io/pypi/v/ansible)](https://pypi.org/project/ansible/) [![GitHub tag (latest SemVer)](https://img.shields.io/github/v/tag/ansible/ansible)](https://docs.ansible.com/ansible/devel/reference_appendices/release_and_maintenance.html) | -| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/bsdtar-3.7.7/total?label=⭳%20bsdtar-3.7.7)](https://github.com/hemnstill/StandaloneTools/releases/tag/bsdtar-3.7.7) | [![GitHub Repo stars](https://img.shields.io/github/stars/libarchive/libarchive?style=social&label=libarchive)](https://github.com/libarchive/libarchive) [![latest packaged version(s)](https://repology.org/badge/latest-versions/libarchive.svg)](https://repology.org/project/libarchive/versions) | -| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/7-Zip-24.08/total?label=⭳%207-Zip-24.08)](https://github.com/hemnstill/StandaloneTools/releases/tag/7-Zip-24.08) | [![SourceForge Downloads](https://img.shields.io/sourceforge/dm/sevenzip?style=social&label=7-Zip&logo=sourceforge)](https://sourceforge.net/projects/sevenzip/) [![versions](https://repology.org/badge/latest-versions/7zip.svg)](https://repology.org/project/7zip/versions) | -| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/zstd-1.5.6/total?label=⭳%20zstd-1.5.6)](https://github.com/hemnstill/StandaloneTools/releases/tag/zstd-1.5.6) | [![GitHub Repo stars](https://img.shields.io/github/stars/facebook/zstd?style=social&label=zstd)](https://github.com/facebook/zstd) [![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/v/release/facebook/zstd)](https://github.com/facebook/zstd/releases/latest) | -| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/pg_dump-15.1/total?label=⭳%20pg_dump-15.1)](https://github.com/hemnstill/StandaloneTools/releases/tag/pg_dump-15.1) | [![GitHub Repo stars](https://img.shields.io/github/stars/postgres/postgres?style=social&label=postgres)](https://github.com/postgres/postgres) [![GitHub tag (latest SemVer)](https://img.shields.io/github/v/tag/postgres/postgres)](https://www.postgresql.org/docs/current/index.html) | -| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/mysql-8.4.2/total?label=⭳%20mysql-8.4.2)](https://github.com/hemnstill/StandaloneTools/releases/tag/mysql-8.4.2) | [![GitHub Repo stars](https://img.shields.io/github/stars/mysql/mysql-server?style=social&label=mysql-server)](https://github.com/mysql/mysql-server) [![latest packaged version(s)](https://repology.org/badge/latest-versions/mysql.svg)](https://repology.org/project/mysql/information) | -| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/redis-7.2.5/total?label=⭳%20redis-7.2.5)](https://github.com/hemnstill/StandaloneTools/releases/tag/redis-7.2.5) | [![GitHub Repo stars](https://img.shields.io/github/stars/redis/redis?style=social&label=redis)](https://github.com/redis/redis) [![GitHub tag (latest SemVer)](https://img.shields.io/github/v/tag/redis/redis)](https://redis.io/download/) | -| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/busybox-1.37.0-FRP-5398/total?label=⭳%20busybox-1.37.0-FRP-5398)](https://github.com/hemnstill/StandaloneTools/releases/tag/busybox-1.37.0-FRP-5398) | [![GitHub Repo stars](https://img.shields.io/github/stars/rmyorston/busybox-w32?style=social&label=busybox-w32)](https://github.com/rmyorston/busybox-w32) [![GitHub tag (latest SemVer)](https://img.shields.io/github/v/tag/rmyorston/busybox-w32)](https://frippery.org/busybox/release-notes/current.html) [![latest packaged version(s)](https://repology.org/badge/latest-versions/busybox.svg)](https://repology.org/project/busybox/information) | -| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/far2l-2.6.3/total?label=⭳%20far2l-2.6.3)](https://github.com/hemnstill/StandaloneTools/releases/tag/far2l-2.6.3) | [![GitHub Repo stars](https://img.shields.io/github/stars/elfmz/far2l?style=social&label=far2l)](https://github.com/elfmz/far2l) [![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/v/release/elfmz/far2l)](https://github.com/elfmz/far2l/releases/latest) | -| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/pcre2grep-10.44/total?label=⭳%20pcre2grep-10.44)](https://github.com/hemnstill/StandaloneTools/releases/tag/pcre2grep-10.44) | [![GitHub Repo stars](https://img.shields.io/github/stars/PCRE2Project/pcre2?style=social&label=PCRE2)](https://github.com/PCRE2Project/pcre2) [![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/v/release/PCRE2Project/pcre2)](https://github.com/PCRE2Project/pcre2/releases/latest) | -| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/openssl-3.0.9/total?label=⭳%20openssl-3.0.9)](https://github.com/hemnstill/StandaloneTools/releases/tag/openssl-3.0.9) | [![GitHub Repo stars](https://img.shields.io/github/stars/openssl/openssl?style=social&label=OpenSSL)](https://github.com/openssl/openssl) [![GitHub tag (latest SemVer)](https://img.shields.io/github/v/tag/openssl/openssl)](https://www.openssl.org/news/changelog.html) | +| releases | latest source | +|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/python-3.13.1/total?label=⭳%20python-3.13.1-20241206)](https://github.com/hemnstill/StandaloneTools/releases/tag/python-3.13.1) | [![GitHub Repo stars](https://img.shields.io/github/stars/indygreg/python-build-standalone?style=social&label=python-build-standalone)](https://github.com/indygreg/python-build-standalone) [![GitHub tag (latest SemVer)](https://img.shields.io/github/v/tag/indygreg/python-build-standalone)](https://gregoryszorc.com/docs/python-build-standalone/main/)
[![GitHub Repo stars](https://img.shields.io/github/stars/python/cpython?style=social&label=python)](https://github.com/python/cpython) [![latest packaged version(s)](https://repology.org/badge/latest-versions/python.svg)](https://repology.org/project/python/versions) | +| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/poetry-1.8.3/total?label=⭳%20poetry-1.8.3)](https://github.com/hemnstill/StandaloneTools/releases/tag/poetry-1.8.3) | [![GitHub Repo stars](https://img.shields.io/github/stars/python-poetry/poetry?style=social&label=poetry)](https://github.com/python-poetry/poetry) [![GitHub tag (latest SemVer)](https://img.shields.io/github/v/tag/python-poetry/poetry)](https://python-poetry.org/history/) | +| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/pylint-3.0.3/total?label=⭳%20pylint-3.0.3)](https://github.com/hemnstill/StandaloneTools/releases/tag/pylint-3.0.3) | [![GitHub Repo stars](https://img.shields.io/github/stars/PyCQA/pylint?style=social&label=pylint)](https://github.com/PyCQA/pylint) [![GitHub tag (latest SemVer)](https://img.shields.io/github/v/tag/PyCQA/pylint)](https://pylint.pycqa.org/en/latest/) | +| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/mypy-1.8.0/total?label=⭳%20mypy-1.8.0)](https://github.com/hemnstill/StandaloneTools/releases/tag/mypy-1.8.0) | [![GitHub Repo stars](https://img.shields.io/github/stars/python/mypy?style=social&label=mypy)](https://github.com/python/mypy) [![GitHub tag (latest SemVer)](https://img.shields.io/github/v/tag/python/mypy)](https://mypy.readthedocs.io/en/latest/) | +| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/ansible-8.3.0/total?label=⭳%20ansible-8.3.0-core-2.15.3)](https://github.com/hemnstill/StandaloneTools/releases/tag/ansible-8.3.0) | [![GitHub Repo stars](https://img.shields.io/github/stars/ansible/ansible?style=social&label=ansible)](https://github.com/ansible/ansible) [![PyPI](https://img.shields.io/pypi/v/ansible)](https://pypi.org/project/ansible/) [![GitHub tag (latest SemVer)](https://img.shields.io/github/v/tag/ansible/ansible)](https://docs.ansible.com/ansible/devel/reference_appendices/release_and_maintenance.html) | +| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/bsdtar-3.7.7/total?label=⭳%20bsdtar-3.7.7)](https://github.com/hemnstill/StandaloneTools/releases/tag/bsdtar-3.7.7) | [![GitHub Repo stars](https://img.shields.io/github/stars/libarchive/libarchive?style=social&label=libarchive)](https://github.com/libarchive/libarchive) [![latest packaged version(s)](https://repology.org/badge/latest-versions/libarchive.svg)](https://repology.org/project/libarchive/versions) | +| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/7-Zip-24.08/total?label=⭳%207-Zip-24.08)](https://github.com/hemnstill/StandaloneTools/releases/tag/7-Zip-24.08) | [![SourceForge Downloads](https://img.shields.io/sourceforge/dm/sevenzip?style=social&label=7-Zip&logo=sourceforge)](https://sourceforge.net/projects/sevenzip/) [![versions](https://repology.org/badge/latest-versions/7zip.svg)](https://repology.org/project/7zip/versions) | +| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/zstd-1.5.6/total?label=⭳%20zstd-1.5.6)](https://github.com/hemnstill/StandaloneTools/releases/tag/zstd-1.5.6) | [![GitHub Repo stars](https://img.shields.io/github/stars/facebook/zstd?style=social&label=zstd)](https://github.com/facebook/zstd) [![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/v/release/facebook/zstd)](https://github.com/facebook/zstd/releases/latest) | +| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/pg_dump-15.1/total?label=⭳%20pg_dump-15.1)](https://github.com/hemnstill/StandaloneTools/releases/tag/pg_dump-15.1) | [![GitHub Repo stars](https://img.shields.io/github/stars/postgres/postgres?style=social&label=postgres)](https://github.com/postgres/postgres) [![GitHub tag (latest SemVer)](https://img.shields.io/github/v/tag/postgres/postgres)](https://www.postgresql.org/docs/current/index.html) | +| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/mysql-8.4.2/total?label=⭳%20mysql-8.4.2)](https://github.com/hemnstill/StandaloneTools/releases/tag/mysql-8.4.2) | [![GitHub Repo stars](https://img.shields.io/github/stars/mysql/mysql-server?style=social&label=mysql-server)](https://github.com/mysql/mysql-server) [![latest packaged version(s)](https://repology.org/badge/latest-versions/mysql.svg)](https://repology.org/project/mysql/information) | +| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/redis-7.2.5/total?label=⭳%20redis-7.2.5)](https://github.com/hemnstill/StandaloneTools/releases/tag/redis-7.2.5) | [![GitHub Repo stars](https://img.shields.io/github/stars/redis/redis?style=social&label=redis)](https://github.com/redis/redis) [![GitHub tag (latest SemVer)](https://img.shields.io/github/v/tag/redis/redis)](https://redis.io/download/) | +| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/busybox-1.37.0-FRP-5398/total?label=⭳%20busybox-1.37.0-FRP-5398)](https://github.com/hemnstill/StandaloneTools/releases/tag/busybox-1.37.0-FRP-5398) | [![GitHub Repo stars](https://img.shields.io/github/stars/rmyorston/busybox-w32?style=social&label=busybox-w32)](https://github.com/rmyorston/busybox-w32) [![GitHub tag (latest SemVer)](https://img.shields.io/github/v/tag/rmyorston/busybox-w32)](https://frippery.org/busybox/release-notes/current.html) [![latest packaged version(s)](https://repology.org/badge/latest-versions/busybox.svg)](https://repology.org/project/busybox/information) | +| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/far2l-2.6.3/total?label=⭳%20far2l-2.6.3)](https://github.com/hemnstill/StandaloneTools/releases/tag/far2l-2.6.3) | [![GitHub Repo stars](https://img.shields.io/github/stars/elfmz/far2l?style=social&label=far2l)](https://github.com/elfmz/far2l) [![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/v/release/elfmz/far2l)](https://github.com/elfmz/far2l/releases/latest) | +| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/pcre2grep-10.44/total?label=⭳%20pcre2grep-10.44)](https://github.com/hemnstill/StandaloneTools/releases/tag/pcre2grep-10.44) | [![GitHub Repo stars](https://img.shields.io/github/stars/PCRE2Project/pcre2?style=social&label=PCRE2)](https://github.com/PCRE2Project/pcre2) [![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/v/release/PCRE2Project/pcre2)](https://github.com/PCRE2Project/pcre2/releases/latest) | +| [![GitHub release (by tag)](https://img.shields.io/github/downloads/hemnstill/StandaloneTools/openssl-3.0.9/total?label=⭳%20openssl-3.0.9)](https://github.com/hemnstill/StandaloneTools/releases/tag/openssl-3.0.9) | [![GitHub Repo stars](https://img.shields.io/github/stars/openssl/openssl?style=social&label=OpenSSL)](https://github.com/openssl/openssl) [![GitHub tag (latest SemVer)](https://img.shields.io/github/v/tag/openssl/openssl)](https://www.openssl.org/news/changelog.html) | diff --git a/python/build_gnu.sh b/python/build_gnu.sh index 486890e4c..0e384d391 100755 --- a/python/build_gnu.sh +++ b/python/build_gnu.sh @@ -9,13 +9,13 @@ apk add --no-cache alpine-sdk python3-dev export LC_ALL=en_US.UTF-8 tool_name="python" -tool_version="3.12.5" -release_date="20240814" +tool_version="3.13.1" +release_date="20241206" self_name="$tool_name-$tool_version" release_version_dirpath="$dp0/release/$self_name" mkdir -p "$release_version_dirpath" && cd "$dp0/release" -download_url="https://github.com/indygreg/python-build-standalone/releases/download/$release_date/cpython-$tool_version+$release_date-x86_64-unknown-linux-gnu-pgo-full.tar.zst" +download_url="https://github.com/indygreg/python-build-standalone/releases/download/$release_date/cpython-$tool_version+$release_date-x86_64-unknown-linux-gnu-freethreaded+pgo-full.tar.zst" cpython_zip="$dp0/release/raw_cpython-linux.tar.zst" echo "download python from $download_url ..." [[ ! -f "$cpython_zip" ]] && wget "$download_url" -O "$cpython_zip" @@ -24,7 +24,7 @@ echo "download python from $download_url ..." bsdtar="$dp0/release/bsdtar" cpython_bin="$dp0/.tmp/python/install/bin/python3" -cpython_dll="$dp0/.tmp/python/install/lib/libpython3.12.so.1.0" +cpython_dll="$dp0/.tmp/python/install/lib/libpython3.13t.so.1.0" if [[ ! -f "$cpython_bin" ]]; then echo extract "$cpython_zip" to "$cpython_bin" ... rm -rf "$dp0/.tmp/"* && mkdir -p "$dp0/.tmp" && cd "$dp0/.tmp" || exit 1 diff --git a/python/build_msvc.sh b/python/build_msvc.sh index 8eaab4e56..b11a209ae 100755 --- a/python/build_msvc.sh +++ b/python/build_msvc.sh @@ -3,13 +3,13 @@ dp0="$(realpath "$(dirname "$0")")" set -e tool_name="python" -tool_version="3.12.5" -release_date="20240814" +tool_version="3.13.1" +release_date="20241206" self_name="$tool_name-$tool_version" release_version_dirpath="$dp0/release/$self_name" mkdir -p "$release_version_dirpath" && cd "$dp0/release" -download_url="https://github.com/indygreg/python-build-standalone/releases/download/$release_date/cpython-$tool_version+$release_date-x86_64-pc-windows-msvc-shared-pgo-full.tar.zst" +download_url="https://github.com/indygreg/python-build-standalone/releases/download/$release_date/cpython-$tool_version+$release_date-x86_64-pc-windows-msvc-shared-freethreaded+pgo-full.tar.zst" cpython_zip="$dp0/release/raw_cpython-win.tar.zst" echo "download python from $download_url ..." [[ ! -f "$cpython_zip" ]] && wget "$download_url" -O "$cpython_zip" diff --git a/python/build_musl.sh b/python/build_musl.sh index fdfd87088..e4712d595 100755 --- a/python/build_musl.sh +++ b/python/build_musl.sh @@ -6,8 +6,8 @@ apk update apk add --no-cache alpine-sdk python3-dev tool_name="python" -tool_version="3.12.5" -release_date="20240814" +tool_version="3.13.1" +release_date="20241206" self_name="$tool_name-$tool_version" release_version_dirpath="$dp0/release/$self_name" diff --git a/python/test_linux.sh b/python/test_linux.sh index d9df2b5a6..c198f6285 100755 --- a/python/test_linux.sh +++ b/python/test_linux.sh @@ -3,7 +3,7 @@ ../.tools/install_alpine_glibc.sh test_version() { - assertEquals "Python 3.12.5" "$(../bin/Scripts/bin/python3 --version)" + assertEquals "Python 3.13.1" "$(../bin/Scripts/bin/python3 --version)" } # Load and run shUnit2. diff --git a/python/test_windows.sh b/python/test_windows.sh index bb44415da..5f45c2b2b 100755 --- a/python/test_windows.sh +++ b/python/test_windows.sh @@ -1,7 +1,7 @@ #!/bin/bash test_version() { - assertEquals "Python 3.12.5" "$(../bin/Scripts/python.exe --version)" + assertEquals "Python 3.13.1" "$(../bin/Scripts/python.exe --version)" } # Load and run shUnit2.