diff --git a/.github/workflows/build-binaries.yml b/.github/workflows/build-binaries.yml index 10a933465165..442ad506ad36 100644 --- a/.github/workflows/build-binaries.yml +++ b/.github/workflows/build-binaries.yml @@ -33,124 +33,124 @@ env: RUSTUP_MAX_RETRIES: 10 jobs: - sdist: - if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - uses: actions/setup-python@v5 - with: - python-version: ${{ env.PYTHON_VERSION }} - - name: "Prep README.md" - run: python scripts/transform_readme.py --target pypi - - name: "Build sdist" - uses: PyO3/maturin-action@v1 - with: - command: sdist - args: --out dist - - name: "Test sdist" - run: | - pip install dist/${{ env.PACKAGE_NAME }}-*.tar.gz --force-reinstall - ${{ env.MODULE_NAME }} --help - python -m ${{ env.MODULE_NAME }} --help - uvx --help - - name: "Upload sdist" - uses: actions/upload-artifact@v4 - with: - name: wheels-sdist - path: dist - - macos-x86_64: - if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} - runs-on: macos-14 - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - uses: actions/setup-python@v5 - with: - python-version: ${{ env.PYTHON_VERSION }} - architecture: x64 - - name: "Prep README.md" - run: python scripts/transform_readme.py --target pypi - - name: "Build wheels - x86_64" - uses: PyO3/maturin-action@v1 - with: - target: x86_64 - args: --release --locked --out dist --features self-update - - name: "Upload wheels" - uses: actions/upload-artifact@v4 - with: - name: wheels-macos-x86_64 - path: dist - - name: "Archive binary" - run: | - TARGET=x86_64-apple-darwin - ARCHIVE_NAME=uv-$TARGET - ARCHIVE_FILE=$ARCHIVE_NAME.tar.gz - - mkdir -p $ARCHIVE_NAME - cp target/$TARGET/release/uv $ARCHIVE_NAME/uv - cp target/$TARGET/release/uvx $ARCHIVE_NAME/uvx - tar czvf $ARCHIVE_FILE $ARCHIVE_NAME - shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256 - - name: "Upload binary" - uses: actions/upload-artifact@v4 - with: - name: artifacts-macos-x86_64 - path: | - *.tar.gz - *.sha256 - - macos-aarch64: - if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} - runs-on: macos-14 - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - uses: actions/setup-python@v5 - with: - python-version: ${{ env.PYTHON_VERSION }} - architecture: arm64 - - name: "Prep README.md" - run: python scripts/transform_readme.py --target pypi - - name: "Build wheels - aarch64" - uses: PyO3/maturin-action@v1 - with: - target: aarch64 - args: --release --locked --out dist --features self-update - - name: "Test wheel - aarch64" - run: | - pip install dist/${{ env.PACKAGE_NAME }}-*.whl --force-reinstall - ${{ env.MODULE_NAME }} --help - python -m ${{ env.MODULE_NAME }} --help - uvx --help - - name: "Upload wheels" - uses: actions/upload-artifact@v4 - with: - name: wheels-aarch64-apple-darwin - path: dist - - name: "Archive binary" - run: | - TARGET=aarch64-apple-darwin - ARCHIVE_NAME=uv-$TARGET - ARCHIVE_FILE=$ARCHIVE_NAME.tar.gz - - mkdir -p $ARCHIVE_NAME - cp target/$TARGET/release/uv $ARCHIVE_NAME/uv - cp target/$TARGET/release/uvx $ARCHIVE_NAME/uvx - tar czvf $ARCHIVE_FILE $ARCHIVE_NAME - shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256 - - name: "Upload binary" - uses: actions/upload-artifact@v4 - with: - name: artifacts-aarch64-apple-darwin - path: | - *.tar.gz - *.sha256 +# sdist: +# if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} +# runs-on: ubuntu-latest +# steps: +# - uses: actions/checkout@v4 +# with: +# submodules: recursive +# - uses: actions/setup-python@v5 +# with: +# python-version: ${{ env.PYTHON_VERSION }} +# - name: "Prep README.md" +# run: python scripts/transform_readme.py --target pypi +# - name: "Build sdist" +# uses: PyO3/maturin-action@v1 +# with: +# command: sdist +# args: --out dist +# - name: "Test sdist" +# run: | +# pip install dist/${{ env.PACKAGE_NAME }}-*.tar.gz --force-reinstall +# ${{ env.MODULE_NAME }} --help +# python -m ${{ env.MODULE_NAME }} --help +# uvx --help +# - name: "Upload sdist" +# uses: actions/upload-artifact@v4 +# with: +# name: wheels-sdist +# path: dist +# +# macos-x86_64: +# if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} +# runs-on: macos-14 +# steps: +# - uses: actions/checkout@v4 +# with: +# submodules: recursive +# - uses: actions/setup-python@v5 +# with: +# python-version: ${{ env.PYTHON_VERSION }} +# architecture: x64 +# - name: "Prep README.md" +# run: python scripts/transform_readme.py --target pypi +# - name: "Build wheels - x86_64" +# uses: PyO3/maturin-action@v1 +# with: +# target: x86_64 +# args: --release --locked --out dist --features self-update +# - name: "Upload wheels" +# uses: actions/upload-artifact@v4 +# with: +# name: wheels-macos-x86_64 +# path: dist +# - name: "Archive binary" +# run: | +# TARGET=x86_64-apple-darwin +# ARCHIVE_NAME=uv-$TARGET +# ARCHIVE_FILE=$ARCHIVE_NAME.tar.gz +# +# mkdir -p $ARCHIVE_NAME +# cp target/$TARGET/release/uv $ARCHIVE_NAME/uv +# cp target/$TARGET/release/uvx $ARCHIVE_NAME/uvx +# tar czvf $ARCHIVE_FILE $ARCHIVE_NAME +# shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256 +# - name: "Upload binary" +# uses: actions/upload-artifact@v4 +# with: +# name: artifacts-macos-x86_64 +# path: | +# *.tar.gz +# *.sha256 +# +# macos-aarch64: +# if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} +# runs-on: macos-14 +# steps: +# - uses: actions/checkout@v4 +# with: +# submodules: recursive +# - uses: actions/setup-python@v5 +# with: +# python-version: ${{ env.PYTHON_VERSION }} +# architecture: arm64 +# - name: "Prep README.md" +# run: python scripts/transform_readme.py --target pypi +# - name: "Build wheels - aarch64" +# uses: PyO3/maturin-action@v1 +# with: +# target: aarch64 +# args: --release --locked --out dist --features self-update +# - name: "Test wheel - aarch64" +# run: | +# pip install dist/${{ env.PACKAGE_NAME }}-*.whl --force-reinstall +# ${{ env.MODULE_NAME }} --help +# python -m ${{ env.MODULE_NAME }} --help +# uvx --help +# - name: "Upload wheels" +# uses: actions/upload-artifact@v4 +# with: +# name: wheels-aarch64-apple-darwin +# path: dist +# - name: "Archive binary" +# run: | +# TARGET=aarch64-apple-darwin +# ARCHIVE_NAME=uv-$TARGET +# ARCHIVE_FILE=$ARCHIVE_NAME.tar.gz +# +# mkdir -p $ARCHIVE_NAME +# cp target/$TARGET/release/uv $ARCHIVE_NAME/uv +# cp target/$TARGET/release/uvx $ARCHIVE_NAME/uvx +# tar czvf $ARCHIVE_FILE $ARCHIVE_NAME +# shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256 +# - name: "Upload binary" +# uses: actions/upload-artifact@v4 +# with: +# name: artifacts-aarch64-apple-darwin +# path: | +# *.tar.gz +# *.sha256 windows: if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} @@ -158,10 +158,12 @@ jobs: strategy: matrix: platform: - - target: x86_64-pc-windows-msvc + - target: aarch64-pc-windows-msvc arch: x64 - - target: i686-pc-windows-msvc - arch: x86 +# - target: x86_64-pc-windows-msvc +# arch: x64 +# - target: i686-pc-windows-msvc +# arch: x86 steps: - uses: actions/checkout@v4 with: @@ -205,453 +207,453 @@ jobs: *.zip *.sha256 - linux: - if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} - runs-on: depot-ubuntu-latest-4 - strategy: - matrix: - target: - - x86_64-unknown-linux-gnu - - i686-unknown-linux-gnu - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - uses: actions/setup-python@v5 - with: - python-version: ${{ env.PYTHON_VERSION }} - architecture: x64 - - name: "Prep README.md" - run: python scripts/transform_readme.py --target pypi - - name: "Build wheels" - uses: PyO3/maturin-action@v1 - with: - target: ${{ matrix.target }} - manylinux: auto - args: --release --locked --out dist --features self-update - # See: https://github.com/sfackler/rust-openssl/issues/2036#issuecomment-1724324145 - before-script-linux: | - # If we're running on rhel centos, install needed packages. - if command -v yum &> /dev/null; then - yum update -y && yum install -y perl-core openssl openssl-devel pkgconfig libatomic - - # If we're running on i686 we need to symlink libatomic - # in order to build openssl with -latomic flag. - if [[ ! -d "/usr/lib64" ]]; then - ln -s /usr/lib/libatomic.so.1 /usr/lib/libatomic.so - fi - else - # If we're running on debian-based system. - apt update -y && apt-get install -y libssl-dev openssl pkg-config - fi - - name: "Test wheel" - if: ${{ startsWith(matrix.target, 'x86_64') }} - run: | - pip install dist/${{ env.PACKAGE_NAME }}-*.whl --force-reinstall - ${{ env.MODULE_NAME }} --help - python -m ${{ env.MODULE_NAME }} --help - uvx --help - - name: "Upload wheels" - uses: actions/upload-artifact@v4 - with: - name: wheels-${{ matrix.target }} - path: dist - - name: "Archive binary" - shell: bash - run: | - set -euo pipefail - - TARGET=${{ matrix.target }} - ARCHIVE_NAME=uv-$TARGET - ARCHIVE_FILE=$ARCHIVE_NAME.tar.gz - - mkdir -p $ARCHIVE_NAME - cp target/$TARGET/release/uv $ARCHIVE_NAME/uv - cp target/$TARGET/release/uvx $ARCHIVE_NAME/uvx - tar czvf $ARCHIVE_FILE $ARCHIVE_NAME - shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256 - - name: "Upload binary" - uses: actions/upload-artifact@v4 - with: - name: artifacts-${{ matrix.target }} - path: | - *.tar.gz - *.sha256 - - linux-arm: - if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} - runs-on: ubuntu-latest - strategy: - matrix: - platform: - - target: aarch64-unknown-linux-gnu - arch: aarch64 - # see https://github.com/astral-sh/ruff/issues/3791 - # and https://github.com/gnzlbg/jemallocator/issues/170#issuecomment-1503228963 - maturin_docker_options: -e JEMALLOC_SYS_WITH_LG_PAGE=16 - - target: armv7-unknown-linux-gnueabihf - arch: armv7 - - target: arm-unknown-linux-musleabihf - arch: arm - - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - uses: actions/setup-python@v5 - with: - python-version: ${{ env.PYTHON_VERSION }} - - name: "Prep README.md" - run: python scripts/transform_readme.py --target pypi - - name: "Build wheels" - uses: PyO3/maturin-action@v1 - with: - target: ${{ matrix.platform.target }} - # On `aarch64`, use `manylinux: 2_28`; otherwise, use `manylinux: auto`. - manylinux: ${{ matrix.platform.arch == 'aarch64' && '2_28' || 'auto' }} - docker-options: ${{ matrix.platform.maturin_docker_options }} - args: --release --locked --out dist --features self-update - - uses: uraimo/run-on-arch-action@v2 - name: Test wheel - with: - arch: ${{ matrix.platform.arch == 'arm' && 'armv6' || matrix.platform.arch }} - distro: ${{ matrix.platform.arch == 'arm' && 'bullseye' || 'ubuntu20.04' }} - githubToken: ${{ github.token }} - install: | - apt-get update - apt-get install -y --no-install-recommends python3 python3-pip - pip3 install -U pip - run: | - pip3 install ${{ env.PACKAGE_NAME }} --no-index --find-links dist/ --force-reinstall - ${{ env.MODULE_NAME }} --help - uvx --help - - name: "Upload wheels" - uses: actions/upload-artifact@v4 - with: - name: wheels-${{ matrix.platform.target }} - path: dist - - name: "Archive binary" - shell: bash - run: | - set -euo pipefail - - TARGET=${{ matrix.platform.target }} - ARCHIVE_NAME=uv-$TARGET - ARCHIVE_FILE=$ARCHIVE_NAME.tar.gz - - mkdir -p $ARCHIVE_NAME - cp target/$TARGET/release/uv $ARCHIVE_NAME/uv - cp target/$TARGET/release/uvx $ARCHIVE_NAME/uvx - tar czvf $ARCHIVE_FILE $ARCHIVE_NAME - shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256 - - name: "Upload binary" - uses: actions/upload-artifact@v4 - with: - name: artifacts-${{ matrix.platform.target }} - path: | - *.tar.gz - *.sha256 - - # Like `linux-arm`. - linux-s390x: - if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} - runs-on: depot-ubuntu-latest-4 - strategy: - matrix: - platform: - - target: s390x-unknown-linux-gnu - arch: s390x - - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - uses: actions/setup-python@v5 - with: - python-version: ${{ env.PYTHON_VERSION }} - - name: "Prep README.md" - run: python scripts/transform_readme.py --target pypi - - name: "Build wheels" - uses: PyO3/maturin-action@v1 - with: - target: ${{ matrix.platform.target }} - manylinux: auto - docker-options: ${{ matrix.platform.maturin_docker_options }} - args: --release --locked --out dist --features self-update - - uses: uraimo/run-on-arch-action@v2 - if: matrix.platform.arch != 'ppc64' - name: Test wheel - with: - arch: ${{ matrix.platform.arch }} - distro: ubuntu20.04 - githubToken: ${{ github.token }} - install: | - apt-get update - apt-get install -y --no-install-recommends python3 python3-pip - pip3 install -U pip - run: | - pip3 install ${{ env.PACKAGE_NAME }} --no-index --find-links dist/ --force-reinstall - ${{ env.MODULE_NAME }} --help - uvx --help - - name: "Upload wheels" - uses: actions/upload-artifact@v4 - with: - name: wheels-${{ matrix.platform.target }} - path: dist - - name: "Archive binary" - shell: bash - run: | - set -euo pipefail - - TARGET=${{ matrix.platform.target }} - ARCHIVE_NAME=uv-$TARGET - ARCHIVE_FILE=$ARCHIVE_NAME.tar.gz - - mkdir -p $ARCHIVE_NAME - cp target/$TARGET/release/uv $ARCHIVE_NAME/uv - cp target/$TARGET/release/uvx $ARCHIVE_NAME/uvx - tar czvf $ARCHIVE_FILE $ARCHIVE_NAME - shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256 - - name: "Upload binary" - uses: actions/upload-artifact@v4 - with: - name: artifacts-${{ matrix.platform.target }} - path: | - *.tar.gz - *.sha256 - - # Like `linux-arm`, but install the `gcc-powerpc64-linux-gnu` package. - linux-powerpc: - if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} - runs-on: ubuntu-latest - strategy: - matrix: - platform: - - target: powerpc64le-unknown-linux-gnu - arch: ppc64le - # see https://github.com/astral-sh/uv/issues/6528 - maturin_docker_options: -e JEMALLOC_SYS_WITH_LG_PAGE=16 - - target: powerpc64-unknown-linux-gnu - arch: ppc64 - # see https://github.com/astral-sh/uv/issues/6528 - maturin_docker_options: -e JEMALLOC_SYS_WITH_LG_PAGE=16 - - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - uses: actions/setup-python@v5 - with: - python-version: ${{ env.PYTHON_VERSION }} - - name: "Prep README.md" - run: python scripts/transform_readme.py --target pypi - - name: "Build wheels" - uses: PyO3/maturin-action@v1 - with: - target: ${{ matrix.platform.target }} - manylinux: auto - docker-options: ${{ matrix.platform.maturin_docker_options }} - args: --release --locked --out dist --features self-update - before-script-linux: | - if command -v yum &> /dev/null; then - yum update -y - yum -y install epel-release - yum repolist - yum install -y gcc-powerpc64-linux-gnu - fi - - uses: uraimo/run-on-arch-action@v2 - if: matrix.platform.arch != 'ppc64' - name: Test wheel - with: - arch: ${{ matrix.platform.arch }} - distro: ubuntu20.04 - githubToken: ${{ github.token }} - install: | - apt-get update - apt-get install -y --no-install-recommends python3 python3-pip - pip3 install -U pip - run: | - pip3 install ${{ env.PACKAGE_NAME }} --no-index --find-links dist/ --force-reinstall - ${{ env.MODULE_NAME }} --help - uvx --help - - name: "Upload wheels" - uses: actions/upload-artifact@v4 - with: - name: wheels-${{ matrix.platform.target }} - path: dist - - name: "Archive binary" - shell: bash - run: | - set -euo pipefail - - TARGET=${{ matrix.platform.target }} - ARCHIVE_NAME=uv-$TARGET - ARCHIVE_FILE=$ARCHIVE_NAME.tar.gz - - mkdir -p $ARCHIVE_NAME - cp target/$TARGET/release/uv $ARCHIVE_NAME/uv - cp target/$TARGET/release/uvx $ARCHIVE_NAME/uvx - tar czvf $ARCHIVE_FILE $ARCHIVE_NAME - shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256 - - name: "Upload binary" - uses: actions/upload-artifact@v4 - with: - name: artifacts-${{ matrix.platform.target }} - path: | - *.tar.gz - *.sha256 - - musllinux: - if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} - runs-on: ubuntu-latest - strategy: - matrix: - target: - - x86_64-unknown-linux-musl - - i686-unknown-linux-musl - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - uses: actions/setup-python@v5 - with: - python-version: ${{ env.PYTHON_VERSION }} - architecture: x64 - - name: "Prep README.md" - run: python scripts/transform_readme.py --target pypi - - name: "Build wheels" - uses: PyO3/maturin-action@v1 - with: - target: ${{ matrix.target }} - manylinux: musllinux_1_1 - args: --release --locked --out dist --features self-update - - name: "Test wheel" - if: matrix.target == 'x86_64-unknown-linux-musl' - uses: addnab/docker-run-action@v3 - with: - image: alpine:3.12 - options: -v ${{ github.workspace }}:/io -w /io - run: | - apk add python3 - python3 -m venv .venv - .venv/bin/pip install --upgrade pip - .venv/bin/pip install ${{ env.PACKAGE_NAME }} --no-index --find-links dist/ --force-reinstall - .venv/bin/${{ env.MODULE_NAME }} --help - .venv/bin/uvx --help - - name: "Upload wheels" - uses: actions/upload-artifact@v4 - with: - name: wheels-${{ matrix.target }} - path: dist - - name: "Archive binary" - shell: bash - run: | - set -euo pipefail - - TARGET=${{ matrix.target }} - ARCHIVE_NAME=uv-$TARGET - ARCHIVE_FILE=$ARCHIVE_NAME.tar.gz - - mkdir -p $ARCHIVE_NAME - cp target/$TARGET/release/uv $ARCHIVE_NAME/uv - cp target/$TARGET/release/uvx $ARCHIVE_NAME/uvx - tar czvf $ARCHIVE_FILE $ARCHIVE_NAME - shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256 - - name: "Upload binary" - uses: actions/upload-artifact@v4 - with: - name: artifacts-${{ matrix.target }} - path: | - *.tar.gz - *.sha256 - - musllinux-cross: - if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} - runs-on: ubuntu-latest - strategy: - matrix: - platform: - - target: aarch64-unknown-linux-musl - arch: aarch64 - maturin_docker_options: -e JEMALLOC_SYS_WITH_LG_PAGE=16 - - target: armv7-unknown-linux-musleabihf - arch: armv7 - - target: powerpc64le-unknown-linux-musl - arch: ppc64le - # see https://github.com/astral-sh/uv/issues/6528 - maturin_docker_options: -e JEMALLOC_SYS_WITH_LG_PAGE=16 - toolchain: nightly - fail-fast: false - - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - uses: actions/setup-python@v5 - with: - python-version: ${{ env.PYTHON_VERSION }} - - name: "Prep README.md" - run: python scripts/transform_readme.py --target pypi - - name: "Build wheels" - uses: PyO3/maturin-action@v1 - with: - target: ${{ matrix.platform.target }} - manylinux: musllinux_1_1 - args: ${{ matrix.platform.arch == 'ppc64le' && '--profile release-no-lto' || '--release'}} --locked --out dist --features self-update ${{ matrix.platform.arch == 'aarch64' && '--compatibility 2_17' || ''}} - docker-options: ${{ matrix.platform.maturin_docker_options }} - rust-toolchain: ${{ matrix.platform.toolchain || null }} - - uses: uraimo/run-on-arch-action@v2 - name: Test wheel - with: - arch: ${{ matrix.platform.arch }} - distro: alpine_latest - githubToken: ${{ github.token }} - install: | - apk add python3 - run: | - python -m venv .venv - .venv/bin/pip3 install ${{ env.PACKAGE_NAME }} --no-index --find-links dist/ --force-reinstall - .venv/bin/${{ env.MODULE_NAME }} --help - .venv/bin/uvx --help - - uses: uraimo/run-on-arch-action@v2 - name: Test wheel (manylinux) - if: matrix.platform.arch == 'aarch64' - with: - arch: aarch64 - distro: ubuntu20.04 - githubToken: ${{ github.token }} - install: | - apt-get update - apt-get install -y --no-install-recommends python3 python3-pip - pip3 install -U pip - run: | - pip3 install ${{ env.PACKAGE_NAME }} --no-index --find-links dist/ --force-reinstall - ${{ env.MODULE_NAME }} --help - uvx --help - - name: "Upload wheels" - uses: actions/upload-artifact@v4 - with: - name: wheels-${{ matrix.platform.target }} - path: dist - - name: "Archive binary" - shell: bash - run: | - set -euo pipefail - - TARGET=${{ matrix.platform.target }} - ARCHIVE_NAME=uv-$TARGET - ARCHIVE_FILE=$ARCHIVE_NAME.tar.gz - PROFILE="${{ matrix.platform.arch == 'ppc64le' && 'release-no-lto' || 'release' }}" - - mkdir -p $ARCHIVE_NAME - cp target/$TARGET/$PROFILE/uv $ARCHIVE_NAME/uv - cp target/$TARGET/$PROFILE/uvx $ARCHIVE_NAME/uvx - tar czvf $ARCHIVE_FILE $ARCHIVE_NAME - shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256 - - name: "Upload binary" - uses: actions/upload-artifact@v4 - with: - name: artifacts-${{ matrix.platform.target }} - path: | - *.tar.gz - *.sha256 +# linux: +# if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} +# runs-on: depot-ubuntu-latest-4 +# strategy: +# matrix: +# target: +# - x86_64-unknown-linux-gnu +# - i686-unknown-linux-gnu +# steps: +# - uses: actions/checkout@v4 +# with: +# submodules: recursive +# - uses: actions/setup-python@v5 +# with: +# python-version: ${{ env.PYTHON_VERSION }} +# architecture: x64 +# - name: "Prep README.md" +# run: python scripts/transform_readme.py --target pypi +# - name: "Build wheels" +# uses: PyO3/maturin-action@v1 +# with: +# target: ${{ matrix.target }} +# manylinux: auto +# args: --release --locked --out dist --features self-update +# # See: https://github.com/sfackler/rust-openssl/issues/2036#issuecomment-1724324145 +# before-script-linux: | +# # If we're running on rhel centos, install needed packages. +# if command -v yum &> /dev/null; then +# yum update -y && yum install -y perl-core openssl openssl-devel pkgconfig libatomic +# +# # If we're running on i686 we need to symlink libatomic +# # in order to build openssl with -latomic flag. +# if [[ ! -d "/usr/lib64" ]]; then +# ln -s /usr/lib/libatomic.so.1 /usr/lib/libatomic.so +# fi +# else +# # If we're running on debian-based system. +# apt update -y && apt-get install -y libssl-dev openssl pkg-config +# fi +# - name: "Test wheel" +# if: ${{ startsWith(matrix.target, 'x86_64') }} +# run: | +# pip install dist/${{ env.PACKAGE_NAME }}-*.whl --force-reinstall +# ${{ env.MODULE_NAME }} --help +# python -m ${{ env.MODULE_NAME }} --help +# uvx --help +# - name: "Upload wheels" +# uses: actions/upload-artifact@v4 +# with: +# name: wheels-${{ matrix.target }} +# path: dist +# - name: "Archive binary" +# shell: bash +# run: | +# set -euo pipefail +# +# TARGET=${{ matrix.target }} +# ARCHIVE_NAME=uv-$TARGET +# ARCHIVE_FILE=$ARCHIVE_NAME.tar.gz +# +# mkdir -p $ARCHIVE_NAME +# cp target/$TARGET/release/uv $ARCHIVE_NAME/uv +# cp target/$TARGET/release/uvx $ARCHIVE_NAME/uvx +# tar czvf $ARCHIVE_FILE $ARCHIVE_NAME +# shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256 +# - name: "Upload binary" +# uses: actions/upload-artifact@v4 +# with: +# name: artifacts-${{ matrix.target }} +# path: | +# *.tar.gz +# *.sha256 +# +# linux-arm: +# if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} +# runs-on: ubuntu-latest +# strategy: +# matrix: +# platform: +# - target: aarch64-unknown-linux-gnu +# arch: aarch64 +# # see https://github.com/astral-sh/ruff/issues/3791 +# # and https://github.com/gnzlbg/jemallocator/issues/170#issuecomment-1503228963 +# maturin_docker_options: -e JEMALLOC_SYS_WITH_LG_PAGE=16 +# - target: armv7-unknown-linux-gnueabihf +# arch: armv7 +# - target: arm-unknown-linux-musleabihf +# arch: arm +# +# steps: +# - uses: actions/checkout@v4 +# with: +# submodules: recursive +# - uses: actions/setup-python@v5 +# with: +# python-version: ${{ env.PYTHON_VERSION }} +# - name: "Prep README.md" +# run: python scripts/transform_readme.py --target pypi +# - name: "Build wheels" +# uses: PyO3/maturin-action@v1 +# with: +# target: ${{ matrix.platform.target }} +# # On `aarch64`, use `manylinux: 2_28`; otherwise, use `manylinux: auto`. +# manylinux: ${{ matrix.platform.arch == 'aarch64' && '2_28' || 'auto' }} +# docker-options: ${{ matrix.platform.maturin_docker_options }} +# args: --release --locked --out dist --features self-update +# - uses: uraimo/run-on-arch-action@v2 +# name: Test wheel +# with: +# arch: ${{ matrix.platform.arch == 'arm' && 'armv6' || matrix.platform.arch }} +# distro: ${{ matrix.platform.arch == 'arm' && 'bullseye' || 'ubuntu20.04' }} +# githubToken: ${{ github.token }} +# install: | +# apt-get update +# apt-get install -y --no-install-recommends python3 python3-pip +# pip3 install -U pip +# run: | +# pip3 install ${{ env.PACKAGE_NAME }} --no-index --find-links dist/ --force-reinstall +# ${{ env.MODULE_NAME }} --help +# uvx --help +# - name: "Upload wheels" +# uses: actions/upload-artifact@v4 +# with: +# name: wheels-${{ matrix.platform.target }} +# path: dist +# - name: "Archive binary" +# shell: bash +# run: | +# set -euo pipefail +# +# TARGET=${{ matrix.platform.target }} +# ARCHIVE_NAME=uv-$TARGET +# ARCHIVE_FILE=$ARCHIVE_NAME.tar.gz +# +# mkdir -p $ARCHIVE_NAME +# cp target/$TARGET/release/uv $ARCHIVE_NAME/uv +# cp target/$TARGET/release/uvx $ARCHIVE_NAME/uvx +# tar czvf $ARCHIVE_FILE $ARCHIVE_NAME +# shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256 +# - name: "Upload binary" +# uses: actions/upload-artifact@v4 +# with: +# name: artifacts-${{ matrix.platform.target }} +# path: | +# *.tar.gz +# *.sha256 +# +# # Like `linux-arm`. +# linux-s390x: +# if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} +# runs-on: depot-ubuntu-latest-4 +# strategy: +# matrix: +# platform: +# - target: s390x-unknown-linux-gnu +# arch: s390x +# +# steps: +# - uses: actions/checkout@v4 +# with: +# submodules: recursive +# - uses: actions/setup-python@v5 +# with: +# python-version: ${{ env.PYTHON_VERSION }} +# - name: "Prep README.md" +# run: python scripts/transform_readme.py --target pypi +# - name: "Build wheels" +# uses: PyO3/maturin-action@v1 +# with: +# target: ${{ matrix.platform.target }} +# manylinux: auto +# docker-options: ${{ matrix.platform.maturin_docker_options }} +# args: --release --locked --out dist --features self-update +# - uses: uraimo/run-on-arch-action@v2 +# if: matrix.platform.arch != 'ppc64' +# name: Test wheel +# with: +# arch: ${{ matrix.platform.arch }} +# distro: ubuntu20.04 +# githubToken: ${{ github.token }} +# install: | +# apt-get update +# apt-get install -y --no-install-recommends python3 python3-pip +# pip3 install -U pip +# run: | +# pip3 install ${{ env.PACKAGE_NAME }} --no-index --find-links dist/ --force-reinstall +# ${{ env.MODULE_NAME }} --help +# uvx --help +# - name: "Upload wheels" +# uses: actions/upload-artifact@v4 +# with: +# name: wheels-${{ matrix.platform.target }} +# path: dist +# - name: "Archive binary" +# shell: bash +# run: | +# set -euo pipefail +# +# TARGET=${{ matrix.platform.target }} +# ARCHIVE_NAME=uv-$TARGET +# ARCHIVE_FILE=$ARCHIVE_NAME.tar.gz +# +# mkdir -p $ARCHIVE_NAME +# cp target/$TARGET/release/uv $ARCHIVE_NAME/uv +# cp target/$TARGET/release/uvx $ARCHIVE_NAME/uvx +# tar czvf $ARCHIVE_FILE $ARCHIVE_NAME +# shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256 +# - name: "Upload binary" +# uses: actions/upload-artifact@v4 +# with: +# name: artifacts-${{ matrix.platform.target }} +# path: | +# *.tar.gz +# *.sha256 +# +# # Like `linux-arm`, but install the `gcc-powerpc64-linux-gnu` package. +# linux-powerpc: +# if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} +# runs-on: ubuntu-latest +# strategy: +# matrix: +# platform: +# - target: powerpc64le-unknown-linux-gnu +# arch: ppc64le +# # see https://github.com/astral-sh/uv/issues/6528 +# maturin_docker_options: -e JEMALLOC_SYS_WITH_LG_PAGE=16 +# - target: powerpc64-unknown-linux-gnu +# arch: ppc64 +# # see https://github.com/astral-sh/uv/issues/6528 +# maturin_docker_options: -e JEMALLOC_SYS_WITH_LG_PAGE=16 +# +# steps: +# - uses: actions/checkout@v4 +# with: +# submodules: recursive +# - uses: actions/setup-python@v5 +# with: +# python-version: ${{ env.PYTHON_VERSION }} +# - name: "Prep README.md" +# run: python scripts/transform_readme.py --target pypi +# - name: "Build wheels" +# uses: PyO3/maturin-action@v1 +# with: +# target: ${{ matrix.platform.target }} +# manylinux: auto +# docker-options: ${{ matrix.platform.maturin_docker_options }} +# args: --release --locked --out dist --features self-update +# before-script-linux: | +# if command -v yum &> /dev/null; then +# yum update -y +# yum -y install epel-release +# yum repolist +# yum install -y gcc-powerpc64-linux-gnu +# fi +# - uses: uraimo/run-on-arch-action@v2 +# if: matrix.platform.arch != 'ppc64' +# name: Test wheel +# with: +# arch: ${{ matrix.platform.arch }} +# distro: ubuntu20.04 +# githubToken: ${{ github.token }} +# install: | +# apt-get update +# apt-get install -y --no-install-recommends python3 python3-pip +# pip3 install -U pip +# run: | +# pip3 install ${{ env.PACKAGE_NAME }} --no-index --find-links dist/ --force-reinstall +# ${{ env.MODULE_NAME }} --help +# uvx --help +# - name: "Upload wheels" +# uses: actions/upload-artifact@v4 +# with: +# name: wheels-${{ matrix.platform.target }} +# path: dist +# - name: "Archive binary" +# shell: bash +# run: | +# set -euo pipefail +# +# TARGET=${{ matrix.platform.target }} +# ARCHIVE_NAME=uv-$TARGET +# ARCHIVE_FILE=$ARCHIVE_NAME.tar.gz +# +# mkdir -p $ARCHIVE_NAME +# cp target/$TARGET/release/uv $ARCHIVE_NAME/uv +# cp target/$TARGET/release/uvx $ARCHIVE_NAME/uvx +# tar czvf $ARCHIVE_FILE $ARCHIVE_NAME +# shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256 +# - name: "Upload binary" +# uses: actions/upload-artifact@v4 +# with: +# name: artifacts-${{ matrix.platform.target }} +# path: | +# *.tar.gz +# *.sha256 +# +# musllinux: +# if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} +# runs-on: ubuntu-latest +# strategy: +# matrix: +# target: +# - x86_64-unknown-linux-musl +# - i686-unknown-linux-musl +# steps: +# - uses: actions/checkout@v4 +# with: +# submodules: recursive +# - uses: actions/setup-python@v5 +# with: +# python-version: ${{ env.PYTHON_VERSION }} +# architecture: x64 +# - name: "Prep README.md" +# run: python scripts/transform_readme.py --target pypi +# - name: "Build wheels" +# uses: PyO3/maturin-action@v1 +# with: +# target: ${{ matrix.target }} +# manylinux: musllinux_1_1 +# args: --release --locked --out dist --features self-update +# - name: "Test wheel" +# if: matrix.target == 'x86_64-unknown-linux-musl' +# uses: addnab/docker-run-action@v3 +# with: +# image: alpine:3.12 +# options: -v ${{ github.workspace }}:/io -w /io +# run: | +# apk add python3 +# python3 -m venv .venv +# .venv/bin/pip install --upgrade pip +# .venv/bin/pip install ${{ env.PACKAGE_NAME }} --no-index --find-links dist/ --force-reinstall +# .venv/bin/${{ env.MODULE_NAME }} --help +# .venv/bin/uvx --help +# - name: "Upload wheels" +# uses: actions/upload-artifact@v4 +# with: +# name: wheels-${{ matrix.target }} +# path: dist +# - name: "Archive binary" +# shell: bash +# run: | +# set -euo pipefail +# +# TARGET=${{ matrix.target }} +# ARCHIVE_NAME=uv-$TARGET +# ARCHIVE_FILE=$ARCHIVE_NAME.tar.gz +# +# mkdir -p $ARCHIVE_NAME +# cp target/$TARGET/release/uv $ARCHIVE_NAME/uv +# cp target/$TARGET/release/uvx $ARCHIVE_NAME/uvx +# tar czvf $ARCHIVE_FILE $ARCHIVE_NAME +# shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256 +# - name: "Upload binary" +# uses: actions/upload-artifact@v4 +# with: +# name: artifacts-${{ matrix.target }} +# path: | +# *.tar.gz +# *.sha256 +# +# musllinux-cross: +# if: ${{ !contains(github.event.pull_request.labels.*.name, 'no-build') }} +# runs-on: ubuntu-latest +# strategy: +# matrix: +# platform: +# - target: aarch64-unknown-linux-musl +# arch: aarch64 +# maturin_docker_options: -e JEMALLOC_SYS_WITH_LG_PAGE=16 +# - target: armv7-unknown-linux-musleabihf +# arch: armv7 +# - target: powerpc64le-unknown-linux-musl +# arch: ppc64le +# # see https://github.com/astral-sh/uv/issues/6528 +# maturin_docker_options: -e JEMALLOC_SYS_WITH_LG_PAGE=16 +# toolchain: nightly +# fail-fast: false +# +# steps: +# - uses: actions/checkout@v4 +# with: +# submodules: recursive +# - uses: actions/setup-python@v5 +# with: +# python-version: ${{ env.PYTHON_VERSION }} +# - name: "Prep README.md" +# run: python scripts/transform_readme.py --target pypi +# - name: "Build wheels" +# uses: PyO3/maturin-action@v1 +# with: +# target: ${{ matrix.platform.target }} +# manylinux: musllinux_1_1 +# args: ${{ matrix.platform.arch == 'ppc64le' && '--profile release-no-lto' || '--release'}} --locked --out dist --features self-update ${{ matrix.platform.arch == 'aarch64' && '--compatibility 2_17' || ''}} +# docker-options: ${{ matrix.platform.maturin_docker_options }} +# rust-toolchain: ${{ matrix.platform.toolchain || null }} +# - uses: uraimo/run-on-arch-action@v2 +# name: Test wheel +# with: +# arch: ${{ matrix.platform.arch }} +# distro: alpine_latest +# githubToken: ${{ github.token }} +# install: | +# apk add python3 +# run: | +# python -m venv .venv +# .venv/bin/pip3 install ${{ env.PACKAGE_NAME }} --no-index --find-links dist/ --force-reinstall +# .venv/bin/${{ env.MODULE_NAME }} --help +# .venv/bin/uvx --help +# - uses: uraimo/run-on-arch-action@v2 +# name: Test wheel (manylinux) +# if: matrix.platform.arch == 'aarch64' +# with: +# arch: aarch64 +# distro: ubuntu20.04 +# githubToken: ${{ github.token }} +# install: | +# apt-get update +# apt-get install -y --no-install-recommends python3 python3-pip +# pip3 install -U pip +# run: | +# pip3 install ${{ env.PACKAGE_NAME }} --no-index --find-links dist/ --force-reinstall +# ${{ env.MODULE_NAME }} --help +# uvx --help +# - name: "Upload wheels" +# uses: actions/upload-artifact@v4 +# with: +# name: wheels-${{ matrix.platform.target }} +# path: dist +# - name: "Archive binary" +# shell: bash +# run: | +# set -euo pipefail +# +# TARGET=${{ matrix.platform.target }} +# ARCHIVE_NAME=uv-$TARGET +# ARCHIVE_FILE=$ARCHIVE_NAME.tar.gz +# PROFILE="${{ matrix.platform.arch == 'ppc64le' && 'release-no-lto' || 'release' }}" +# +# mkdir -p $ARCHIVE_NAME +# cp target/$TARGET/$PROFILE/uv $ARCHIVE_NAME/uv +# cp target/$TARGET/$PROFILE/uvx $ARCHIVE_NAME/uvx +# tar czvf $ARCHIVE_FILE $ARCHIVE_NAME +# shasum -a 256 $ARCHIVE_FILE > $ARCHIVE_FILE.sha256 +# - name: "Upload binary" +# uses: actions/upload-artifact@v4 +# with: +# name: artifacts-${{ matrix.platform.target }} +# path: | +# *.tar.gz +# *.sha256