diff --git a/Justfile b/Justfile index a0c0f1842..b25a8acd5 100644 --- a/Justfile +++ b/Justfile @@ -468,7 +468,21 @@ pyoxidizer-release-upload commit tag: pyoxidizer-release: just _release pyoxidizer 'PyOxidizer' +pyoxidizer-update-python-distributions: _python_scripts_venv + scripts/venv/bin/python3 \ + scripts/fetch-python-distributions.py \ + --api-token $GH_API_TOKEN > pyoxidizer/src/default_python_distributions.rs + rustfmt pyoxidizer/src/default_python_distributions.rs + # Perform Rust crate releases. release-rust: cargo release release --exclude pyoxidizer --execute cargo release release -p pyoxidizer --execute + +# Create virtual environment and install dependencies for Python scripts in it. +_python_scripts_venv: + #!/usr/bin/env bash + if [ ! -d scripts/venv ]; then + python3 -m venv scripts/venv + scripts/venv/bin/pip install -r scripts/requirements.txt + fi diff --git a/pyoxidizer/docs/pyoxidizer_config_type_python_distribution.rst b/pyoxidizer/docs/pyoxidizer_config_type_python_distribution.rst index 79f1fca77..32acacdc7 100644 --- a/pyoxidizer/docs/pyoxidizer_config_type_python_distribution.rst +++ b/pyoxidizer/docs/pyoxidizer_config_type_python_distribution.rst @@ -138,7 +138,7 @@ ``X.Y`` *major.minor* string denoting the Python release version to use. - Supported values are ``3.8``, ``3.9``, and ``3.10``. + Supported values are ``3.8``, ``3.9``, ``3.10``, ``3.11``, and ``3.12``. ``flavor`` is a string denoting the distribution *flavor*. Values can be one of the following: diff --git a/pyoxidizer/docs/pyoxidizer_getting_started.rst b/pyoxidizer/docs/pyoxidizer_getting_started.rst index 095c749e7..dbdbadcf7 100644 --- a/pyoxidizer/docs/pyoxidizer_getting_started.rst +++ b/pyoxidizer/docs/pyoxidizer_getting_started.rst @@ -9,7 +9,7 @@ Getting Started Python Requirements =================== -PyOxidizer currently targets Python 3.8, 3.9, and 3.10. Your Python application +PyOxidizer currently targets Python 3.8, 3.9, 3.10, 3.11 and 3.12. Your Python application will need to already be compatible with 1 of these versions for it to work with PyOxidizer. See :ref:`faq_python_38` for more on the minimum Python requirement. diff --git a/pyoxidizer/docs/pyoxidizer_packaging_python_distributions.rst b/pyoxidizer/docs/pyoxidizer_packaging_python_distributions.rst index 6c074ddac..441c62e38 100644 --- a/pyoxidizer/docs/pyoxidizer_packaging_python_distributions.rst +++ b/pyoxidizer/docs/pyoxidizer_packaging_python_distributions.rst @@ -25,61 +25,97 @@ and should have maximum compatibility. Here are the built-in Python distributions: -+---------+---------+--------------------+--------------+------------+ -| Source | Version | Flavor | Build Target | -+=========+=========+====================+===========================+ -| CPython | 3.9.16 | standalone_dynamic | aarch64-unknown-linux-gnu | -+---------+---------+--------------------+---------------------------+ -| CPython | 3.10.9 | standalone_dynamic | aarch64-unknown-linux-gnu | -+---------+---------+--------------------+---------------------------+ -| CPython | 3.8.16 | standalone_dynamic | x86_64-unknown-linux-gnu | -+---------+---------+--------------------+---------------------------+ -| CPython | 3.9.16 | standalone_dynamic | x86_64-unknown-linux-gnu | -+---------+---------+--------------------+---------------------------+ -| CPython | 3.10.9 | standalone_dynamic | x86_64-unknown-linux-gnu | -+---------+---------+--------------------+---------------------------+ -| CPython | 3.8.16 | standalone_static | x86_64-unknown-linux-musl | -+---------+---------+--------------------+---------------------------+ -| CPython | 3.9.16 | standalone_static | x86_64-unknown-linux-musl | -+---------+---------+--------------------+---------------------------+ -| CPython | 3.10.9 | standalone_static | x86_64-unknown-linux-musl | -+---------+---------+--------------------+---------------------------+ -| CPython | 3.8.16 | standalone_dynamic | i686-pc-windows-msvc | -+---------+---------+--------------------+---------------------------+ -| CPython | 3.9.16 | standalone_dynamic | i686-pc-windows-msvc | -+---------+---------+--------------------+---------------------------+ -| CPython | 3.10.9 | standalone_dynamic | i686-pc-windows-msvc | -+---------+---------+--------------------+---------------------------+ -| CPython | 3.8.16 | standalone_static | i686-pc-windows-msvc | -+---------+---------+--------------------+---------------------------+ -| CPython | 3.9.16 | standalone_static | i686-pc-windows-msvc | -+---------+---------+--------------------+---------------------------+ -| CPython | 3.10.9 | standalone_static | i686-pc-windows-msvc | -+---------+---------+--------------------+---------------------------+ -| CPython | 3.8.16 | standalone_dynamic | x86_64-pc-windows-msvc | -+---------+---------+--------------------+---------------------------+ -| CPython | 3.9.16 | standalone_dynamic | x86_64-pc-windows-msvc | -+---------+---------+--------------------+---------------------------+ -| CPython | 3.10.9 | standalone_dynamic | x86_64-pc-windows-msvc | -+---------+---------+--------------------+---------------------------+ -| CPython | 3.8.16 | standalone_static | x86_64-pc-windows-msvc | -+---------+---------+--------------------+---------------------------+ -| CPython | 3.9.16 | standalone_static | x86_64-pc-windows-msvc | -+---------+---------+--------------------+---------------------------+ -| CPython | 3.10.9 | standalone_static | x86_64-pc-windows-msvc | -+---------+---------+--------------------+---------------------------+ -| CPython | 3.8.16 | standalone_dynamic | aarch64-apple-darwin | -+---------+---------+--------------------+---------------------------+ -| CPython | 3.9.16 | standalone_dynamic | aarch64-apple-darwin | -+---------+---------+--------------------+---------------------------+ -| CPython | 3.10.9 | standalone_dynamic | aarch64-apple-darwin | -+---------+---------+--------------------+---------------------------+ -| CPython | 3.8.16 | standalone_dynamic | x86_64-apple-darwin | -+---------+---------+--------------------+---------------------------+ -| CPython | 3.9.16 | standalone_dynamic | x86_64-apple-darwin | -+---------+---------+--------------------+---------------------------+ -| CPython | 3.10.9 | standalone_dynamic | x86_64-apple-darwin | -+---------+---------+--------------------+---------------------------+ ++---------+----------+--------------------+--------------+------------+ +| Source | Version | Flavor | Build Target | ++=========+==========+====================+===========================+ +| CPython | 3.9.18 | standalone_dynamic | aarch64-unknown-linux-gnu | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.10.13 | standalone_dynamic | aarch64-unknown-linux-gnu | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.11.8 | standalone_dynamic | aarch64-unknown-linux-gnu | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.12.2 | standalone_dynamic | aarch64-unknown-linux-gnu | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.8.18 | standalone_dynamic | x86_64-unknown-linux-gnu | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.9.18 | standalone_dynamic | x86_64-unknown-linux-gnu | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.10.13 | standalone_dynamic | x86_64-unknown-linux-gnu | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.11.8 | standalone_dynamic | x86_64-unknown-linux-gnu | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.12.2 | standalone_dynamic | x86_64-unknown-linux-gnu | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.8.18 | standalone_static | x86_64-unknown-linux-musl | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.9.18 | standalone_static | x86_64-unknown-linux-musl | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.10.13 | standalone_static | x86_64-unknown-linux-musl | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.11.2 | standalone_static | x86_64-unknown-linux-musl | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.12.2 | standalone_static | x86_64-unknown-linux-musl | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.8.18 | standalone_dynamic | i686-pc-windows-msvc | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.9.18 | standalone_dynamic | i686-pc-windows-msvc | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.10.13 | standalone_dynamic | i686-pc-windows-msvc | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.11.8 | standalone_dynamic | i686-pc-windows-msvc | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.12.2 | standalone_dynamic | i686-pc-windows-msvc | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.8.18 | standalone_static | i686-pc-windows-msvc | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.9.18 | standalone_static | i686-pc-windows-msvc | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.10.13 | standalone_static | i686-pc-windows-msvc | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.11.8 | standalone_static | i686-pc-windows-msvc | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.12.2 | standalone_static | i686-pc-windows-msvc | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.8.18 | standalone_dynamic | x86_64-pc-windows-msvc | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.9.18 | standalone_dynamic | x86_64-pc-windows-msvc | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.10.13 | standalone_dynamic | x86_64-pc-windows-msvc | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.11.8 | standalone_dynamic | x86_64-pc-windows-msvc | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.12.2 | standalone_dynamic | x86_64-pc-windows-msvc | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.8.18 | standalone_static | x86_64-pc-windows-msvc | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.9.18 | standalone_static | x86_64-pc-windows-msvc | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.10.13 | standalone_static | x86_64-pc-windows-msvc | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.11.8 | standalone_static | x86_64-pc-windows-msvc | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.12.2 | standalone_static | x86_64-pc-windows-msvc | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.8.18 | standalone_dynamic | aarch64-apple-darwin | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.9.18 | standalone_dynamic | aarch64-apple-darwin | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.10.13 | standalone_dynamic | aarch64-apple-darwin | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.11.8 | standalone_dynamic | aarch64-apple-darwin | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.12.2 | standalone_dynamic | aarch64-apple-darwin | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.8.18 | standalone_dynamic | x86_64-apple-darwin | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.9.18 | standalone_dynamic | x86_64-apple-darwin | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.10.13 | standalone_dynamic | x86_64-apple-darwin | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.11.8 | standalone_dynamic | x86_64-apple-darwin | ++---------+----------+--------------------+---------------------------+ +| CPython | 3.12.2 | standalone_dynamic | x86_64-apple-darwin | ++---------+----------+--------------------+---------------------------+ All of these distributions are provided by the `python-build-standalone `_, diff --git a/pyoxidizer/docs/pyoxidizer_status.rst b/pyoxidizer/docs/pyoxidizer_status.rst index 5c20607c7..a4536b35d 100644 --- a/pyoxidizer/docs/pyoxidizer_status.rst +++ b/pyoxidizer/docs/pyoxidizer_status.rst @@ -130,7 +130,7 @@ Lesser Missing Features Python Version Support ---------------------- -Python 3.8, 3.9, and 3.10 are currently supported. Older versions of +Python 3.8, 3.9, 3.10, 3.11 and 3.12 are currently supported. Older versions of PyOxidizer (through version 0.7) supported Python 3.7. See :ref:`faq_python_38` for why we require these Python versions. diff --git a/pyoxidizer/src/default_python_distributions.rs b/pyoxidizer/src/default_python_distributions.rs index 05513f8b6..f9f5a90b2 100644 --- a/pyoxidizer/src/default_python_distributions.rs +++ b/pyoxidizer/src/default_python_distributions.rs @@ -2,7 +2,8 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at https://mozilla.org/MPL/2.0/. -// THIS FILE IS AUTOGENERATED. DO NOT EDIT MANUALLY. +// THIS FILE IS AUTOGENERATED BY `scripts/fetch-python-distributions.py`. +// DO NOT EDIT MANUALLY. //! Default Python distributions. @@ -16,8 +17,8 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.8".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.8.16%2B20221220-x86_64-unknown-linux-gnu-pgo-full.tar.zst".to_string(), - sha256: "4e62766abe8a1afefe0b001e476b5e4c6c7457df9e39fefc99dad0bf9bb6648e".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.8.18%2B20240224-x86_64-unknown-linux-gnu-pgo-full.tar.zst".to_string(), + sha256: "8df9cad9b52c6beb92d2cfae0ffda96673fc461387091293b76aae658e81e8bd".to_string(), }, target_triple: "x86_64-unknown-linux-gnu".to_string(), supports_prebuilt_extension_modules: true, @@ -25,8 +26,8 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.9".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.9.16%2B20221220-aarch64-unknown-linux-gnu-noopt-full.tar.zst".to_string(), - sha256: "8894d6f2cd600623ec0a6f89c9c4166bc91efc0a8d8b3ab1b4ed0e1d537b0859".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.9.18%2B20240224-aarch64-unknown-linux-gnu-noopt-full.tar.zst".to_string(), + sha256: "6203ff8773acb3d9b3ae500d3cf5935b096dfc237f3a04e5c944cf53ddceb1a4".to_string(), }, target_triple: "aarch64-unknown-linux-gnu".to_string(), supports_prebuilt_extension_modules: true, @@ -34,8 +35,8 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.9".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.9.16%2B20221220-x86_64-unknown-linux-gnu-pgo-full.tar.zst".to_string(), - sha256: "81321225784f6f301afc62171826486bef718566e2dde0150a0e2c963f249999".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.9.18%2B20240224-x86_64-unknown-linux-gnu-pgo-full.tar.zst".to_string(), + sha256: "b65cf8dc39c1edb6974e7a470dbcd3efa85a49c05a103c27010f5914f5906e69".to_string(), }, target_triple: "x86_64-unknown-linux-gnu".to_string(), supports_prebuilt_extension_modules: true, @@ -43,8 +44,8 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.9".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.9.16%2B20221220-x86_64_v2-unknown-linux-gnu-pgo-full.tar.zst".to_string(), - sha256: "f22597d932c442657624d8f0934fd8a035ac661dcc17aaec7fdbb6deb7c716b5".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.9.18%2B20240224-x86_64_v2-unknown-linux-gnu-pgo-full.tar.zst".to_string(), + sha256: "d80451f83d25e3806e3ff524d2db3f87c828bf1ffdf3ce77b6588917272d86e4".to_string(), }, target_triple: "x86_64_v2-unknown-linux-gnu".to_string(), supports_prebuilt_extension_modules: true, @@ -52,8 +53,8 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.9".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.9.16%2B20221220-x86_64_v3-unknown-linux-gnu-pgo-full.tar.zst".to_string(), - sha256: "432d34cd56b7fbf3a3559e6136d5ce3b35694efad55a8feb38712b2f2aba9e76".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.9.18%2B20240224-x86_64_v3-unknown-linux-gnu-pgo-full.tar.zst".to_string(), + sha256: "b98ac7c499b9c404faf1a30480c3344d1efd905a3678453be079c66713f473c8".to_string(), }, target_triple: "x86_64_v3-unknown-linux-gnu".to_string(), supports_prebuilt_extension_modules: true, @@ -61,8 +62,8 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.10".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.10.9%2B20221220-aarch64-unknown-linux-gnu-noopt-full.tar.zst".to_string(), - sha256: "50d0ef77d91a3116ab8c1a2d1ab6f6877269be678f9810f17b47b346c40d7b93".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.10.13%2B20240224-aarch64-unknown-linux-gnu-noopt-full.tar.zst".to_string(), + sha256: "ab7195f04182d94aa675e738b6cf8affd4e897e7be7f02224cf36865194be344".to_string(), }, target_triple: "aarch64-unknown-linux-gnu".to_string(), supports_prebuilt_extension_modules: true, @@ -70,8 +71,8 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.10".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.10.9%2B20221220-x86_64-unknown-linux-gnu-pgo-full.tar.zst".to_string(), - sha256: "ddf27f962f0a13a4ff94d9dd51b55a33e82b97320fddfe42ce4ca74a6af1e70a".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.10.13%2B20240224-x86_64-unknown-linux-gnu-pgo-full.tar.zst".to_string(), + sha256: "506ea99e2cc32210aa5c409be29fed6be48bfb4a35756b7b0854c050e7924ddd".to_string(), }, target_triple: "x86_64-unknown-linux-gnu".to_string(), supports_prebuilt_extension_modules: true, @@ -79,8 +80,8 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.10".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.10.9%2B20221220-x86_64_v2-unknown-linux-gnu-pgo-full.tar.zst".to_string(), - sha256: "5c826ddcc266b9df4435c359250c2fafc62cd38bf17d5e1ff45dd432f1462f38".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.10.13%2B20240224-x86_64_v2-unknown-linux-gnu-pgo-full.tar.zst".to_string(), + sha256: "720107b4e6e53202dc18535cae5b853944759cac5d9f92786f13d47d44cb8cbc".to_string(), }, target_triple: "x86_64_v2-unknown-linux-gnu".to_string(), supports_prebuilt_extension_modules: true, @@ -88,8 +89,80 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.10".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.10.9%2B20221220-x86_64_v3-unknown-linux-gnu-pgo-full.tar.zst".to_string(), - sha256: "a019f6daac0bb2b16d984760aa059d9ded4567254492f402f28671d0e0b8b28e".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.10.13%2B20240224-x86_64_v3-unknown-linux-gnu-pgo-full.tar.zst".to_string(), + sha256: "6db6d5515677aae0c2dce500807aa01de829777ce61bed0fa1bba32b78a3c7f3".to_string(), + }, + target_triple: "x86_64_v3-unknown-linux-gnu".to_string(), + supports_prebuilt_extension_modules: true, + }, + PythonDistributionRecord { + python_major_minor_version: "3.11".to_string(), + location: PythonDistributionLocation::Url { + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.11.8%2B20240224-aarch64-unknown-linux-gnu-noopt-full.tar.zst".to_string(), + sha256: "cde2b2c809635c2346d9d43675d75f5086f302fe40191b23b0866108ebb02ef4".to_string(), + }, + target_triple: "aarch64-unknown-linux-gnu".to_string(), + supports_prebuilt_extension_modules: true, + }, + PythonDistributionRecord { + python_major_minor_version: "3.11".to_string(), + location: PythonDistributionLocation::Url { + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.11.8%2B20240224-x86_64-unknown-linux-gnu-pgo-full.tar.zst".to_string(), + sha256: "812b818571d2edc097ed67dd0087a9d9754afcb9aebcb8643fc73be34ce2cbfe".to_string(), + }, + target_triple: "x86_64-unknown-linux-gnu".to_string(), + supports_prebuilt_extension_modules: true, + }, + PythonDistributionRecord { + python_major_minor_version: "3.11".to_string(), + location: PythonDistributionLocation::Url { + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.11.8%2B20240224-x86_64_v2-unknown-linux-gnu-pgo-full.tar.zst".to_string(), + sha256: "70a0badcbdedc86b713aa4144ec5a600a7af695951c2141e5de24852e29b466c".to_string(), + }, + target_triple: "x86_64_v2-unknown-linux-gnu".to_string(), + supports_prebuilt_extension_modules: true, + }, + PythonDistributionRecord { + python_major_minor_version: "3.11".to_string(), + location: PythonDistributionLocation::Url { + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.11.8%2B20240224-x86_64_v3-unknown-linux-gnu-pgo-full.tar.zst".to_string(), + sha256: "826675bf954a1ff381d8bb20a9e5ca8d654bfda37d2a641d70e2d65bab2ac867".to_string(), + }, + target_triple: "x86_64_v3-unknown-linux-gnu".to_string(), + supports_prebuilt_extension_modules: true, + }, + PythonDistributionRecord { + python_major_minor_version: "3.12".to_string(), + location: PythonDistributionLocation::Url { + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.12.2%2B20240224-aarch64-unknown-linux-gnu-noopt-full.tar.zst".to_string(), + sha256: "8845ffffd3bc4a87339bb4961f2025506f0143c82a73cf587c1f5eb1ccdd0fd1".to_string(), + }, + target_triple: "aarch64-unknown-linux-gnu".to_string(), + supports_prebuilt_extension_modules: true, + }, + PythonDistributionRecord { + python_major_minor_version: "3.12".to_string(), + location: PythonDistributionLocation::Url { + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.12.2%2B20240224-x86_64-unknown-linux-gnu-pgo-full.tar.zst".to_string(), + sha256: "4b7e7c7bb0daa771d6e538da1a182cbd02734c21fa3fb4da37d76ac45ae67964".to_string(), + }, + target_triple: "x86_64-unknown-linux-gnu".to_string(), + supports_prebuilt_extension_modules: true, + }, + PythonDistributionRecord { + python_major_minor_version: "3.12".to_string(), + location: PythonDistributionLocation::Url { + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.12.2%2B20240224-x86_64_v2-unknown-linux-gnu-pgo-full.tar.zst".to_string(), + sha256: "1f69260caf30a83879ebfcb6f5bf13d2188f1a23f05d83dbe36c8332100505ef".to_string(), + }, + target_triple: "x86_64_v2-unknown-linux-gnu".to_string(), + supports_prebuilt_extension_modules: true, + }, + PythonDistributionRecord { + python_major_minor_version: "3.12".to_string(), + location: PythonDistributionLocation::Url { + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.12.2%2B20240224-x86_64_v3-unknown-linux-gnu-pgo-full.tar.zst".to_string(), + sha256: "ff855f631ce112bb84b5878aac4b0adfb14c3e8f61b5df72acdd0c336c25e754".to_string(), }, target_triple: "x86_64_v3-unknown-linux-gnu".to_string(), supports_prebuilt_extension_modules: true, @@ -99,8 +172,8 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.8".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.8.16%2B20221220-x86_64-unknown-linux-musl-noopt-full.tar.zst".to_string(), - sha256: "93a517597b419f75f16df7cda2b455c9a17751e4f5e337e04ca36a4c62f942e5".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.8.18%2B20240224-x86_64-unknown-linux-musl-noopt-full.tar.zst".to_string(), + sha256: "e4e00f7c4b2b8ae690bea40de0e72cb34f10c804a59682ecabaf17a6d46bbcdb".to_string(), }, target_triple: "x86_64-unknown-linux-musl".to_string(), supports_prebuilt_extension_modules: false, @@ -108,8 +181,8 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.9".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.9.16%2B20221220-x86_64-unknown-linux-musl-noopt-full.tar.zst".to_string(), - sha256: "dd3df879e459fa0e8c8b269a13e73af58aec6a751bb36059628d5b02c3b90949".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.9.18%2B20240224-x86_64-unknown-linux-musl-noopt-full.tar.zst".to_string(), + sha256: "95c54245998cec089261b09e558a330d7231f025b9b4d41c858a1fb74c4b7e68".to_string(), }, target_triple: "x86_64-unknown-linux-musl".to_string(), supports_prebuilt_extension_modules: false, @@ -117,8 +190,8 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.9".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.9.16%2B20221220-x86_64_v2-unknown-linux-musl-noopt-full.tar.zst".to_string(), - sha256: "7440e88d235ab0a4f8700921b08a0cdd63ed7b9623ef3d692ffad3a45b7af10f".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.9.18%2B20240224-x86_64_v2-unknown-linux-musl-noopt-full.tar.zst".to_string(), + sha256: "23078a155029cb6406847ab069c572e34ef777b3736dce30cbd4bcd01fcec0b9".to_string(), }, target_triple: "x86_64_v2-unknown-linux-musl".to_string(), supports_prebuilt_extension_modules: true, @@ -126,8 +199,8 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.9".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.9.16%2B20221220-x86_64_v3-unknown-linux-musl-noopt-full.tar.zst".to_string(), - sha256: "56bb6bc70eb970bcae475f7daff442600022530a75771fc9f1d1fd52b4b5a0f3".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.9.18%2B20240224-x86_64_v3-unknown-linux-musl-noopt-full.tar.zst".to_string(), + sha256: "e35db6160637b89604e82db327444e85ea5fb8c24dd1c24bce1bd33d74e59633".to_string(), }, target_triple: "x86_64_v3-unknown-linux-musl".to_string(), supports_prebuilt_extension_modules: true, @@ -135,8 +208,8 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.10".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.10.9%2B20221220-x86_64-unknown-linux-musl-noopt-full.tar.zst".to_string(), - sha256: "771eaf1ed7371d6a5b5ab6d6979ac47febf0cb7506dbc0f368d58e2166076d0f".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.10.13%2B20240224-x86_64-unknown-linux-musl-noopt-full.tar.zst".to_string(), + sha256: "e711f6a063efb665e425f4f071c75f2a8c107f599c99130ecfff2b0532f7b804".to_string(), }, target_triple: "x86_64-unknown-linux-musl".to_string(), supports_prebuilt_extension_modules: false, @@ -144,8 +217,8 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.10".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.10.9%2B20221220-x86_64_v2-unknown-linux-musl-noopt-full.tar.zst".to_string(), - sha256: "fb26d7e789176e7f170286ad040fdb8235c00292b11563e44b598487f63ab8ea".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.10.13%2B20240224-x86_64_v2-unknown-linux-musl-noopt-full.tar.zst".to_string(), + sha256: "132ba0b3b4da2d38f2b5af30e55d951badf0cca80ee24ea5f92face7fe291eae".to_string(), }, target_triple: "x86_64_v2-unknown-linux-musl".to_string(), supports_prebuilt_extension_modules: true, @@ -153,8 +226,62 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.10".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.10.9%2B20221220-x86_64_v3-unknown-linux-musl-noopt-full.tar.zst".to_string(), - sha256: "cbb0a58a37e219369379a73d940af506dc791c7657e6922503d5cbf1e5513766".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.10.13%2B20240224-x86_64_v3-unknown-linux-musl-noopt-full.tar.zst".to_string(), + sha256: "b31f427e49ecbac5a54088c2b7a5da53be1df9c6a94d696d0d71400a8853d34e".to_string(), + }, + target_triple: "x86_64_v3-unknown-linux-musl".to_string(), + supports_prebuilt_extension_modules: true, + }, + PythonDistributionRecord { + python_major_minor_version: "3.11".to_string(), + location: PythonDistributionLocation::Url { + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.11.8%2B20240224-x86_64-unknown-linux-musl-noopt-full.tar.zst".to_string(), + sha256: "25f4d705ee2323dba9794643be08796c2dc2455edbba808274fb2752c5601af9".to_string(), + }, + target_triple: "x86_64-unknown-linux-musl".to_string(), + supports_prebuilt_extension_modules: false, + }, + PythonDistributionRecord { + python_major_minor_version: "3.11".to_string(), + location: PythonDistributionLocation::Url { + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.11.8%2B20240224-x86_64_v2-unknown-linux-musl-noopt-full.tar.zst".to_string(), + sha256: "edeeb6d5f705f9398bad6dde32fbdd4c793d5df9361f1b659579b2c787f5df72".to_string(), + }, + target_triple: "x86_64_v2-unknown-linux-musl".to_string(), + supports_prebuilt_extension_modules: true, + }, + PythonDistributionRecord { + python_major_minor_version: "3.11".to_string(), + location: PythonDistributionLocation::Url { + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.11.8%2B20240224-x86_64_v3-unknown-linux-musl-noopt-full.tar.zst".to_string(), + sha256: "adc4048ceadd40901299847a2b832974303fe5ed0977ef5334c1c9fdb3121d0b".to_string(), + }, + target_triple: "x86_64_v3-unknown-linux-musl".to_string(), + supports_prebuilt_extension_modules: true, + }, + PythonDistributionRecord { + python_major_minor_version: "3.12".to_string(), + location: PythonDistributionLocation::Url { + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.12.2%2B20240224-x86_64-unknown-linux-musl-noopt-full.tar.zst".to_string(), + sha256: "1c047cd7323e64cb610e24a747eedf14289ead687ec45ddb92165ce00d085477".to_string(), + }, + target_triple: "x86_64-unknown-linux-musl".to_string(), + supports_prebuilt_extension_modules: false, + }, + PythonDistributionRecord { + python_major_minor_version: "3.12".to_string(), + location: PythonDistributionLocation::Url { + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.12.2%2B20240224-x86_64_v2-unknown-linux-musl-noopt-full.tar.zst".to_string(), + sha256: "12da018a18c08faf473dac26c326d94637d447e08080c685eeb9614880160742".to_string(), + }, + target_triple: "x86_64_v2-unknown-linux-musl".to_string(), + supports_prebuilt_extension_modules: true, + }, + PythonDistributionRecord { + python_major_minor_version: "3.12".to_string(), + location: PythonDistributionLocation::Url { + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.12.2%2B20240224-x86_64_v3-unknown-linux-musl-noopt-full.tar.zst".to_string(), + sha256: "3e77902d720c2aa856584b376d2d23ff05be8990739a99efeae25b66e26c4635".to_string(), }, target_triple: "x86_64_v3-unknown-linux-musl".to_string(), supports_prebuilt_extension_modules: true, @@ -171,8 +298,8 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.8".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.8.16%2B20221220-i686-pc-windows-msvc-shared-pgo-full.tar.zst".to_string(), - sha256: "e77b9bd187348d1afaddc56938fa3a208472899d87c28df218647be32402687a".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.8.18%2B20240224-i686-pc-windows-msvc-shared-pgo-full.tar.zst".to_string(), + sha256: "9f94c7b54b97116cd308e73cda0b7a7b7fff4515932c5cbba18eeae9ec798351".to_string(), }, target_triple: "i686-pc-windows-msvc".to_string(), supports_prebuilt_extension_modules: true, @@ -180,8 +307,8 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.9".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.9.16%2B20221220-i686-pc-windows-msvc-shared-pgo-full.tar.zst".to_string(), - sha256: "ce10ab19ff0540aeebc0c04eeecf467dc8f41f9efaebc794c5f2f33f8c05c406".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.9.18%2B20240224-i686-pc-windows-msvc-shared-pgo-full.tar.zst".to_string(), + sha256: "212d413ab6f854f588cf368fdd2aa140bb7c7ee930e3f7ac1002cba1e50e9685".to_string(), }, target_triple: "i686-pc-windows-msvc".to_string(), supports_prebuilt_extension_modules: true, @@ -189,8 +316,26 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.10".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.10.9%2B20221220-i686-pc-windows-msvc-shared-pgo-full.tar.zst".to_string(), - sha256: "bb0cd9ef4f873f8fba51641702560ed707d117fbe978e08563926036c402cd18".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.10.13%2B20240224-i686-pc-windows-msvc-shared-pgo-full.tar.zst".to_string(), + sha256: "c8b99dcf267c574fdfbdf4e9d63ec7a4aa4608565fee3fba0b2f73843b9713b2".to_string(), + }, + target_triple: "i686-pc-windows-msvc".to_string(), + supports_prebuilt_extension_modules: true, + }, + PythonDistributionRecord { + python_major_minor_version: "3.11".to_string(), + location: PythonDistributionLocation::Url { + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.11.8%2B20240224-i686-pc-windows-msvc-shared-pgo-full.tar.zst".to_string(), + sha256: "c3e90962996177a027bd73dd9fd8c42a2d6ef832cda26db4ab4efc6105160537".to_string(), + }, + target_triple: "i686-pc-windows-msvc".to_string(), + supports_prebuilt_extension_modules: true, + }, + PythonDistributionRecord { + python_major_minor_version: "3.12".to_string(), + location: PythonDistributionLocation::Url { + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.12.2%2B20240224-i686-pc-windows-msvc-shared-pgo-full.tar.zst".to_string(), + sha256: "ee985ae6a6a98f4d5bd19fd8c59f45235911d19b64e1dbd026261b8103f15db5".to_string(), }, target_triple: "i686-pc-windows-msvc".to_string(), supports_prebuilt_extension_modules: true, @@ -198,8 +343,8 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.8".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.8.16%2B20221220-x86_64-pc-windows-msvc-shared-pgo-full.tar.zst".to_string(), - sha256: "4b24386dfd9f2e885932886c6faf417f5156f829d68add8282dd484e7d0e4ed7".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.8.18%2B20240224-x86_64-pc-windows-msvc-shared-pgo-full.tar.zst".to_string(), + sha256: "c63abd9365a13196eb9f65db864f95b85c1f90b770d218c1acd104e6b48a99d3".to_string(), }, target_triple: "x86_64-pc-windows-msvc".to_string(), supports_prebuilt_extension_modules: true, @@ -207,8 +352,8 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.9".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.9.16%2B20221220-x86_64-pc-windows-msvc-shared-pgo-full.tar.zst".to_string(), - sha256: "d37203112d9f268ff2fcdbe84f3ad30f83f2d207fc121954f7146906d59b80f0".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.9.18%2B20240224-x86_64-pc-windows-msvc-shared-pgo-full.tar.zst".to_string(), + sha256: "924ed4f375ef73c73a725ef18ec6a72726456673d5a116f132f60860a25dd674".to_string(), }, target_triple: "x86_64-pc-windows-msvc".to_string(), supports_prebuilt_extension_modules: true, @@ -216,8 +361,26 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.10".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.10.9%2B20221220-x86_64-pc-windows-msvc-shared-pgo-full.tar.zst".to_string(), - sha256: "9902a5cb5c3b8eb13fb49e8804d16929161c38aa6d64f004d2317ca7c37a06cb".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.10.13%2B20240224-x86_64-pc-windows-msvc-shared-pgo-full.tar.zst".to_string(), + sha256: "6a2c8f37509556e5d463b1f437cdf7772ebd84cdf183c258d783e64bb3109505".to_string(), + }, + target_triple: "x86_64-pc-windows-msvc".to_string(), + supports_prebuilt_extension_modules: true, + }, + PythonDistributionRecord { + python_major_minor_version: "3.11".to_string(), + location: PythonDistributionLocation::Url { + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.11.8%2B20240224-x86_64-pc-windows-msvc-shared-pgo-full.tar.zst".to_string(), + sha256: "6da82390f7ac49f6c4b19a5b8019c4ddc1eef2c5ad6a2f2d32773a27663a4e14".to_string(), + }, + target_triple: "x86_64-pc-windows-msvc".to_string(), + supports_prebuilt_extension_modules: true, + }, + PythonDistributionRecord { + python_major_minor_version: "3.12".to_string(), + location: PythonDistributionLocation::Url { + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.12.2%2B20240224-x86_64-pc-windows-msvc-shared-pgo-full.tar.zst".to_string(), + sha256: "a1daf5e8ceb23d34ea29b16b5123b06694810fe7acc5c8384426435c63bf731e".to_string(), }, target_triple: "x86_64-pc-windows-msvc".to_string(), supports_prebuilt_extension_modules: true, @@ -227,8 +390,8 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.8".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.8.16%2B20221220-i686-pc-windows-msvc-static-noopt-full.tar.zst".to_string(), - sha256: "56b01763560c01d14228ac7c1c55d270ce854137eb0bfdc71496e42efbbbe98b".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.8.18%2B20240224-i686-pc-windows-msvc-static-noopt-full.tar.zst".to_string(), + sha256: "1d4cf41c9ec4d4ba5a7de6510059bbb071e7764afd974391ec2bb632f86847f7".to_string(), }, target_triple: "i686-pc-windows-msvc".to_string(), supports_prebuilt_extension_modules: false, @@ -236,8 +399,8 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.9".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.9.16%2B20221220-i686-pc-windows-msvc-static-noopt-full.tar.zst".to_string(), - sha256: "0f3b191c7666bf4cbcad3f3f8128a41d2b170c77bfad1d6aa3fe7b2c247b3ea2".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.9.18%2B20240224-i686-pc-windows-msvc-static-noopt-full.tar.zst".to_string(), + sha256: "4f967b85d50258112ae7928ae6ee222fddeb043329edfaa41bbd8f4f1ce821b1".to_string(), }, target_triple: "i686-pc-windows-msvc".to_string(), supports_prebuilt_extension_modules: false, @@ -245,8 +408,26 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.10".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.10.9%2B20221220-i686-pc-windows-msvc-static-noopt-full.tar.zst".to_string(), - sha256: "312a4dc2da25893ca9fee5ea33fc63a9f0758cb86426ebae375fb87feff387b0".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.10.13%2B20240224-i686-pc-windows-msvc-static-noopt-full.tar.zst".to_string(), + sha256: "21e85cfd7bfd658dbf2377334f78f1568370f4041a524af7e718cb45903fecef".to_string(), + }, + target_triple: "i686-pc-windows-msvc".to_string(), + supports_prebuilt_extension_modules: false, + }, + PythonDistributionRecord { + python_major_minor_version: "3.11".to_string(), + location: PythonDistributionLocation::Url { + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.11.8%2B20240224-i686-pc-windows-msvc-static-noopt-full.tar.zst".to_string(), + sha256: "2c504dba00390a3a3bc77fda0700282183e90fe7e91ee6f2b1b0cf59db07643b".to_string(), + }, + target_triple: "i686-pc-windows-msvc".to_string(), + supports_prebuilt_extension_modules: false, + }, + PythonDistributionRecord { + python_major_minor_version: "3.12".to_string(), + location: PythonDistributionLocation::Url { + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.12.2%2B20240224-i686-pc-windows-msvc-static-noopt-full.tar.zst".to_string(), + sha256: "9b8a75b7d662a4ac6b141b6d1c527806c133c5d0d95c3394adca90c14470ebe5".to_string(), }, target_triple: "i686-pc-windows-msvc".to_string(), supports_prebuilt_extension_modules: false, @@ -254,8 +435,8 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.8".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.8.16%2B20221220-x86_64-pc-windows-msvc-static-noopt-full.tar.zst".to_string(), - sha256: "4634fa1507979aeb8f462b239db54ea9b8f270550642cb17af45623fad9d4ce4".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.8.18%2B20240224-x86_64-pc-windows-msvc-static-noopt-full.tar.zst".to_string(), + sha256: "72167680665c8d8db0fa7b9415ef94c065c2f984b53ecf470b2a06e0372309d8".to_string(), }, target_triple: "x86_64-pc-windows-msvc".to_string(), supports_prebuilt_extension_modules: false, @@ -263,8 +444,8 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.9".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.9.16%2B20221220-x86_64-pc-windows-msvc-static-noopt-full.tar.zst".to_string(), - sha256: "a6e8f8d2cb32f6ee86e5ec854e4f269465485ad5ac92a7941b00dca9f67ba64c".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.9.18%2B20240224-x86_64-pc-windows-msvc-static-noopt-full.tar.zst".to_string(), + sha256: "aef10b165b10dc6eee599ce734eeee51717864a668f0fe9f224014577930dab2".to_string(), }, target_triple: "x86_64-pc-windows-msvc".to_string(), supports_prebuilt_extension_modules: false, @@ -272,8 +453,26 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.10".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.10.9%2B20221220-x86_64-pc-windows-msvc-static-noopt-full.tar.zst".to_string(), - sha256: "bfdb46e24045d5c1b97d482db6aab5feeb8488e13a97cb0b1d323b4b34cde007".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.10.13%2B20240224-x86_64-pc-windows-msvc-static-noopt-full.tar.zst".to_string(), + sha256: "7b0523a2ab5e801a40e9467aa96f8137ca9b26b9f6c91d57de457c24d5557f96".to_string(), + }, + target_triple: "x86_64-pc-windows-msvc".to_string(), + supports_prebuilt_extension_modules: false, + }, + PythonDistributionRecord { + python_major_minor_version: "3.11".to_string(), + location: PythonDistributionLocation::Url { + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.11.8%2B20240224-x86_64-pc-windows-msvc-static-noopt-full.tar.zst".to_string(), + sha256: "40d7981e8409669dd6e6b6ea4784afd71917f87bdbf1d856334b12a44cd6756d".to_string(), + }, + target_triple: "x86_64-pc-windows-msvc".to_string(), + supports_prebuilt_extension_modules: false, + }, + PythonDistributionRecord { + python_major_minor_version: "3.12".to_string(), + location: PythonDistributionLocation::Url { + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.12.2%2B20240224-x86_64-pc-windows-msvc-static-noopt-full.tar.zst".to_string(), + sha256: "e037ede1f5f5a5c7d44a8514d63cc09f5d0e5ee61f14fce7726309a941620c2f".to_string(), }, target_triple: "x86_64-pc-windows-msvc".to_string(), supports_prebuilt_extension_modules: false, @@ -283,8 +482,8 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.8".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.8.16%2B20221220-aarch64-apple-darwin-pgo-full.tar.zst".to_string(), - sha256: "844a817f620c5e41bc5f98480565500e801225a3c54fa08f6bce94d1deadf488".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.8.18%2B20240224-aarch64-apple-darwin-pgo-full.tar.zst".to_string(), + sha256: "eea082f36739911147da65558e88896cd929fd1c0c1331a83f03378cc1453ded".to_string(), }, target_triple: "aarch64-apple-darwin".to_string(), supports_prebuilt_extension_modules: true, @@ -292,8 +491,8 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.9".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.9.16%2B20221220-aarch64-apple-darwin-pgo-full.tar.zst".to_string(), - sha256: "a83812be1383194760c5afcf85c51c553ab5e97ff2047688ced7f99aa15edda1".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.9.18%2B20240224-aarch64-apple-darwin-pgo-full.tar.zst".to_string(), + sha256: "908526e6bdc4393ddb8e44f4246c453b338fdca2ced23ff14e575e6909ca7b58".to_string(), }, target_triple: "aarch64-apple-darwin".to_string(), supports_prebuilt_extension_modules: true, @@ -301,8 +500,26 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.10".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.10.9%2B20221220-aarch64-apple-darwin-pgo-full.tar.zst".to_string(), - sha256: "5a4a1128f6aa53a2cf6f748d0632da938cca4656c21688fbc564755ec4cd3519".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.10.13%2B20240224-aarch64-apple-darwin-pgo-full.tar.zst".to_string(), + sha256: "5f90a26379f423de40c1be6c06fbc68b82f8b09f43e657932a48df30d3f5dba4".to_string(), + }, + target_triple: "aarch64-apple-darwin".to_string(), + supports_prebuilt_extension_modules: true, + }, + PythonDistributionRecord { + python_major_minor_version: "3.11".to_string(), + location: PythonDistributionLocation::Url { + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.11.8%2B20240224-aarch64-apple-darwin-pgo-full.tar.zst".to_string(), + sha256: "df7d8f3012dc653eed9e1b5f98d5f623093594dae5d88ea600f6d66fb9421937".to_string(), + }, + target_triple: "aarch64-apple-darwin".to_string(), + supports_prebuilt_extension_modules: true, + }, + PythonDistributionRecord { + python_major_minor_version: "3.12".to_string(), + location: PythonDistributionLocation::Url { + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.12.2%2B20240224-aarch64-apple-darwin-pgo-full.tar.zst".to_string(), + sha256: "4a7c07abb5d59df4b9ba1702b142bef1475a8be0c539fa7fdd1a48df5fd58321".to_string(), }, target_triple: "aarch64-apple-darwin".to_string(), supports_prebuilt_extension_modules: true, @@ -310,8 +527,8 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.8".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.8.16%2B20221220-x86_64-apple-darwin-pgo-full.tar.zst".to_string(), - sha256: "47a11a91d1cb6754b2eea1a22adf293b24a106a00fe62c550b01164c1693dbc8".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.8.18%2B20240224-x86_64-apple-darwin-pgo-full.tar.zst".to_string(), + sha256: "ef270d19db99bbaf967954a9fad5ed7761a5f2d9c6132ee5853fbd6d4e66418e".to_string(), }, target_triple: "x86_64-apple-darwin".to_string(), supports_prebuilt_extension_modules: true, @@ -319,8 +536,8 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.9".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.9.16%2B20221220-x86_64-apple-darwin-pgo-full.tar.zst".to_string(), - sha256: "9bfcbe66e0984239341cd89985c117395fa9c604419b8ec706534f7760689631".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.9.18%2B20240224-x86_64-apple-darwin-pgo-full.tar.zst".to_string(), + sha256: "a38d2c6dde8c903520293805e8d5ac858b812394975f1959cac050f49621cea5".to_string(), }, target_triple: "x86_64-apple-darwin".to_string(), supports_prebuilt_extension_modules: true, @@ -328,8 +545,26 @@ pub static PYTHON_DISTRIBUTIONS: Lazy = Lazy::new( PythonDistributionRecord { python_major_minor_version: "3.10".to_string(), location: PythonDistributionLocation::Url { - url: "https://github.com/indygreg/python-build-standalone/releases/download/20221220/cpython-3.10.9%2B20221220-x86_64-apple-darwin-pgo-full.tar.zst".to_string(), - sha256: "5c6d2b375f3944dc156c55544a13afa3ba0dc4bbc492135a3b7004a71f612cfd".to_string(), + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.10.13%2B20240224-x86_64-apple-darwin-pgo-full.tar.zst".to_string(), + sha256: "178dda6f63f8bf9438649743ab659f47f5f379b36b6fcc51491f49c8c01f4615".to_string(), + }, + target_triple: "x86_64-apple-darwin".to_string(), + supports_prebuilt_extension_modules: true, + }, + PythonDistributionRecord { + python_major_minor_version: "3.11".to_string(), + location: PythonDistributionLocation::Url { + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.11.8%2B20240224-x86_64-apple-darwin-pgo-full.tar.zst".to_string(), + sha256: "aa1fa172d22bed284350b1d95653358826b4bc560745eb2ab153b69db7356e28".to_string(), + }, + target_triple: "x86_64-apple-darwin".to_string(), + supports_prebuilt_extension_modules: true, + }, + PythonDistributionRecord { + python_major_minor_version: "3.12".to_string(), + location: PythonDistributionLocation::Url { + url: "https://github.com/indygreg/python-build-standalone/releases/download/20240224/cpython-3.12.2%2B20240224-x86_64-apple-darwin-pgo-full.tar.zst".to_string(), + sha256: "2fd179e98ceaed2b3e419f9c2aa669613e53d871bb42074bcef460f5bcc1f4fb".to_string(), }, target_triple: "x86_64-apple-darwin".to_string(), supports_prebuilt_extension_modules: true, diff --git a/pyoxidizer/src/project_building.rs b/pyoxidizer/src/project_building.rs index 57a04fb6c..dbe30819b 100644 --- a/pyoxidizer/src/project_building.rs +++ b/pyoxidizer/src/project_building.rs @@ -761,6 +761,48 @@ mod tests { Ok(()) } + #[test] + fn test_empty_project_python_311() -> Result<()> { + let env = get_env()?; + let options = StandalonePythonExecutableBuilderOptions { + distribution_version: Some("3.11".to_string()), + ..Default::default() + }; + let pre_built = options.new_builder()?; + + build_python_executable( + &env, + "myapp", + pre_built.as_ref(), + default_target_triple(), + "0", + false, + )?; + + Ok(()) + } + + #[test] + fn test_empty_project_python_312() -> Result<()> { + let env = get_env()?; + let options = StandalonePythonExecutableBuilderOptions { + distribution_version: Some("3.12".to_string()), + ..Default::default() + }; + let pre_built = options.new_builder()?; + + build_python_executable( + &env, + "myapp", + pre_built.as_ref(), + default_target_triple(), + "0", + false, + )?; + + Ok(()) + } + #[test] fn test_empty_project_system_rust() -> Result<()> { let mut env = get_env()?; @@ -848,6 +890,52 @@ mod tests { Ok(()) } + #[test] + #[cfg(target_env = "msvc")] + fn test_empty_project_standalone_static_311() -> Result<()> { + let env = get_env()?; + let options = StandalonePythonExecutableBuilderOptions { + distribution_version: Some("3.11".to_string()), + distribution_flavor: DistributionFlavor::StandaloneStatic, + ..Default::default() + }; + let pre_built = options.new_builder()?; + + build_python_executable( + &env, + "myapp", + pre_built.as_ref(), + default_target_triple(), + "0", + false, + )?; + + Ok(()) + } + + #[test] + #[cfg(target_env = "msvc")] + fn test_empty_project_standalone_static_312() -> Result<()> { + let env = get_env()?; + let options = StandalonePythonExecutableBuilderOptions { + distribution_version: Some("3.12".to_string()), + distribution_flavor: DistributionFlavor::StandaloneStatic, + ..Default::default() + }; + let pre_built = options.new_builder()?; + + build_python_executable( + &env, + "myapp", + pre_built.as_ref(), + default_target_triple(), + "0", + false, + )?; + + Ok(()) + } + #[test] // Not supported on Windows. #[cfg(not(target_env = "msvc"))] diff --git a/pyoxidizer/src/starlark/file_resource.rs b/pyoxidizer/src/starlark/file_resource.rs index 9da0cf32e..a3a1c780a 100644 --- a/pyoxidizer/src/starlark/file_resource.rs +++ b/pyoxidizer/src/starlark/file_resource.rs @@ -351,6 +351,36 @@ mod tests { Ok(()) } + #[test] + fn test_add_python_executable_311() -> Result<()> { + let mut env = test_evaluation_context_builder()?.into_context()?; + + env.eval("dist = default_python_distribution(python_version='3.11')")?; + env.eval("exe = dist.to_python_executable('testapp')")?; + + let m = FileManifestValue::new_from_args().unwrap(); + + env.set_var("m", m).unwrap(); + env.eval("m.add_python_resource('bin', exe)")?; + + Ok(()) + } + + #[test] + fn test_add_python_executable_312() -> Result<()> { + let mut env = test_evaluation_context_builder()?.into_context()?; + + env.eval("dist = default_python_distribution(python_version='3.12')")?; + env.eval("exe = dist.to_python_executable('testapp')")?; + + let m = FileManifestValue::new_from_args().unwrap(); + + env.set_var("m", m).unwrap(); + env.eval("m.add_python_resource('bin', exe)")?; + + Ok(()) + } + #[test] fn test_install() -> Result<()> { let mut env = test_evaluation_context_builder()?.into_context()?; diff --git a/scripts/fetch-python-distributions.py b/scripts/fetch-python-distributions.py index 293bf0728..f8145b9d1 100755 --- a/scripts/fetch-python-distributions.py +++ b/scripts/fetch-python-distributions.py @@ -3,11 +3,12 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at https://mozilla.org/MPL/2.0/. -"""Emit python_distributions.rs boilerplate for python-build-standalone release.""" +"""Emit default_python_distributions.rs boilerplate for python-build-standalone release.""" import argparse import hashlib import urllib.request +import re from github import Github @@ -24,6 +25,7 @@ }}, """.strip() +RE_CAL_VER = re.compile(r"\d{8}") def download_and_hash(url): with urllib.request.urlopen(url) as r: @@ -45,11 +47,17 @@ def format_record(record): return ENTRY.format(**record) +def get_latest_tag(repo): + """Get the most recent CalVer tag, corresponding to latest.""" + cal_ver_tags = [tag.name for tag in repo.get_tags() if RE_CAL_VER.match(tag.name)] + return max(cal_ver_tags) + + def main(): parser = argparse.ArgumentParser() parser.add_argument("--api-token", help="GitHub API token", required=True) parser.add_argument( - "--tag", help="python-build-standalone release tag", required=True + "--tag", help="python-build-standalone release tag, default is latest", default=None ) args = parser.parse_args() @@ -58,7 +66,9 @@ def main(): repo = g.get_repo("indygreg/python-build-standalone") - release = repo.get_release(args.tag) + tag = args.tag if args.tag else get_latest_tag(repo) + + release = repo.get_release(tag) records = {} @@ -107,7 +117,8 @@ def main(): print("// License, v. 2.0. If a copy of the MPL was not distributed with this") print("// file, You can obtain one at https://mozilla.org/MPL/2.0/.") print() - print("// THIS FILE IS AUTOGENERATED. DO NOT EDIT MANUALLY.") + print("// THIS FILE IS AUTOGENERATED BY `scripts/fetch-python-distributions.py`.") + print("// DO NOT EDIT MANUALLY.") print() print("//! Default Python distributions.") print() @@ -133,6 +144,14 @@ def main(): format_record(records["3.10-x86_64-unknown-linux-gnu-pgo"]), format_record(records["3.10-x86_64_v2-unknown-linux-gnu-pgo"]), format_record(records["3.10-x86_64_v3-unknown-linux-gnu-pgo"]), + format_record(records["3.11-aarch64-unknown-linux-gnu-noopt"]), + format_record(records["3.11-x86_64-unknown-linux-gnu-pgo"]), + format_record(records["3.11-x86_64_v2-unknown-linux-gnu-pgo"]), + format_record(records["3.11-x86_64_v3-unknown-linux-gnu-pgo"]), + format_record(records["3.12-aarch64-unknown-linux-gnu-noopt"]), + format_record(records["3.12-x86_64-unknown-linux-gnu-pgo"]), + format_record(records["3.12-x86_64_v2-unknown-linux-gnu-pgo"]), + format_record(records["3.12-x86_64_v3-unknown-linux-gnu-pgo"]), "", "// Linux musl.", format_record(records["3.8-x86_64-unknown-linux-musl-noopt"]), @@ -142,6 +161,12 @@ def main(): format_record(records["3.10-x86_64-unknown-linux-musl-noopt"]), format_record(records["3.10-x86_64_v2-unknown-linux-musl-noopt"]), format_record(records["3.10-x86_64_v3-unknown-linux-musl-noopt"]), + format_record(records["3.11-x86_64-unknown-linux-musl-noopt"]), + format_record(records["3.11-x86_64_v2-unknown-linux-musl-noopt"]), + format_record(records["3.11-x86_64_v3-unknown-linux-musl-noopt"]), + format_record(records["3.12-x86_64-unknown-linux-musl-noopt"]), + format_record(records["3.12-x86_64_v2-unknown-linux-musl-noopt"]), + format_record(records["3.12-x86_64_v3-unknown-linux-musl-noopt"]), "", "// The order here is important because we will choose the", "// first one. We prefer shared distributions on Windows because", @@ -154,25 +179,38 @@ def main(): format_record(records["3.8-i686-pc-windows-msvc-shared-pgo"]), format_record(records["3.9-i686-pc-windows-msvc-shared-pgo"]), format_record(records["3.10-i686-pc-windows-msvc-shared-pgo"]), + format_record(records["3.11-i686-pc-windows-msvc-shared-pgo"]), + format_record(records["3.12-i686-pc-windows-msvc-shared-pgo"]), + format_record(records["3.8-x86_64-pc-windows-msvc-shared-pgo"]), format_record(records["3.9-x86_64-pc-windows-msvc-shared-pgo"]), format_record(records["3.10-x86_64-pc-windows-msvc-shared-pgo"]), + format_record(records["3.11-x86_64-pc-windows-msvc-shared-pgo"]), + format_record(records["3.12-x86_64-pc-windows-msvc-shared-pgo"]), "", "// Windows static.", format_record(records["3.8-i686-pc-windows-msvc-static-noopt"]), format_record(records["3.9-i686-pc-windows-msvc-static-noopt"]), format_record(records["3.10-i686-pc-windows-msvc-static-noopt"]), + format_record(records["3.11-i686-pc-windows-msvc-static-noopt"]), + format_record(records["3.12-i686-pc-windows-msvc-static-noopt"]), format_record(records["3.8-x86_64-pc-windows-msvc-static-noopt"]), format_record(records["3.9-x86_64-pc-windows-msvc-static-noopt"]), format_record(records["3.10-x86_64-pc-windows-msvc-static-noopt"]), + format_record(records["3.11-x86_64-pc-windows-msvc-static-noopt"]), + format_record(records["3.12-x86_64-pc-windows-msvc-static-noopt"]), "", "// macOS.", format_record(records["3.8-aarch64-apple-darwin-pgo"]), format_record(records["3.9-aarch64-apple-darwin-pgo"]), format_record(records["3.10-aarch64-apple-darwin-pgo"]), + format_record(records["3.11-aarch64-apple-darwin-pgo"]), + format_record(records["3.12-aarch64-apple-darwin-pgo"]), format_record(records["3.8-x86_64-apple-darwin-pgo"]), format_record(records["3.9-x86_64-apple-darwin-pgo"]), format_record(records["3.10-x86_64-apple-darwin-pgo"]), + format_record(records["3.11-x86_64-apple-darwin-pgo"]), + format_record(records["3.12-x86_64-apple-darwin-pgo"]), ] for line in "\n".join(lines).splitlines(False): diff --git a/scripts/requirements.txt b/scripts/requirements.txt new file mode 100644 index 000000000..e839671fe --- /dev/null +++ b/scripts/requirements.txt @@ -0,0 +1,2 @@ +PyGithub==2.2.0 +urllib3==2.2.1