Skip to content

fix regression related to bundled libraries #137

fix regression related to bundled libraries

fix regression related to bundled libraries #137

Workflow file for this run

name: Release
on:
push:
branches: [main]
tags:
- "v*"
paths-ignore:
- "examples/**"
- "README.md"
- "CONTRIBUTING.md"
workflow_dispatch:
env:
CARGO_TERM_COLOR: always
WASI_SDK_VERSION: 20.46gf3a1f8991535
WASI_SDK_RELEASE: wasi-sockets-alpha-5
permissions:
contents: write
pull-requests: write
jobs:
linux:
name: Populate cache
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: "recursive"
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install latest Rust nightly toolchain
uses: dtolnay/rust-toolchain@nightly
with:
targets: wasm32-wasi wasm32-unknown-unknown
- name: Install latest Rust stable toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: wasm32-wasi wasm32-unknown-unknown
components: clippy, rustfmt
- name: Install Rust std source
shell: bash
run: rustup component add rust-src --toolchain nightly
- uses: Swatinem/rust-cache@v2
with:
shared-key: "rust-cache-${{ hashFiles('./Cargo.lock') }}"
cache-on-failure: false
- name: Install WASI-SDK
shell: bash
run: |
cd /tmp
curl -LO https://github.com/dicej/wasi-sdk/releases/download/${WASI_SDK_RELEASE}/wasi-sdk-${WASI_SDK_VERSION}-linux.tar.gz
tar xf wasi-sdk-${WASI_SDK_VERSION}-linux.tar.gz
mv wasi-sdk-${WASI_SDK_VERSION} /opt/wasi-sdk
- name: Cache CPython
id: cache-cpython-wasi
uses: actions/cache@v4
with:
path: cpython/builddir/wasi
key: cpython-wasi
enableCrossOsArchive: true
- name: Build
shell: bash
run: cargo build --release
release:
name: Build and release
needs: linux
runs-on: ${{ matrix.config.os }}
strategy:
fail-fast: false
matrix:
config:
- {
os: "ubuntu-latest",
arch: "amd64",
maturin_target: "x86_64",
wasiSDK: "linux",
extension: "",
buildArgs: "",
target: "",
targetDir: "target/release",
}
- {
os: "ubuntu-latest",
arch: "aarch64",
maturin_target: "aarch64",
wasiSDK: "linux",
extension: "",
buildArgs: "--target aarch64-unknown-linux-gnu",
target: "aarch64-unknown-linux-gnu",
targetDir: "target/aarch64-unknown-linux-gnu/release",
}
- {
os: "macos-latest",
arch: "amd64",
maturin_target: "x86_64",
wasiSDK: "macos",
extension: "",
buildArgs: "",
target: "",
targetDir: "target/release",
}
- {
os: "macos-latest",
arch: "aarch64",
maturin_target: "aarch64",
wasiSDK: "macos",
extension: "",
buildArgs: "--target aarch64-apple-darwin",
target: "aarch64-apple-darwin",
targetDir: "target/aarch64-apple-darwin/release",
}
- {
os: "windows-latest",
arch: "amd64",
maturin_target: "x64",
wasiSDK: "mingw",
extension: ".exe",
buildArgs: "",
target: "",
targetDir: "target/release",
}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: "recursive"
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install latest Rust nightly toolchain
uses: dtolnay/rust-toolchain@nightly
with:
targets: ${{ matrix.config.target }}
- name: Install latest Rust stable toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.config.target }}
- name: Install Rust std source
shell: bash
run: rustup component add rust-src --toolchain nightly
- uses: Swatinem/rust-cache@v2
if: matrix.config.os == 'ubuntu-latest' && matrix.config.arch == 'amd64'
with:
shared-key: "rust-cache-${{ hashFiles('./Cargo.lock') }}"
cache-on-failure: "false"
save-if: "false"
- name: Set the release version (tag)
if: startsWith(github.ref, 'refs/tags/v')
shell: bash
run: echo "RELEASE_VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV
- name: Set the release version (canary)
if: github.ref == 'refs/heads/main'
shell: bash
run: echo "RELEASE_VERSION=canary" >> $GITHUB_ENV
- name: Lowercase the runner OS name
shell: bash
run: |
OS=$(echo "${{ runner.os }}" | tr '[:upper:]' '[:lower:]')
echo "RUNNER_OS=$OS" >> $GITHUB_ENV
- name: Download WASI-SDK
shell: bash
run: |
cd /tmp
curl -LO https://github.com/dicej/wasi-sdk/releases/download/${WASI_SDK_RELEASE}/wasi-sdk-${WASI_SDK_VERSION}-${{ matrix.config.wasiSDK }}.tar.gz
tar xf wasi-sdk-${WASI_SDK_VERSION}-${{ matrix.config.wasiSDK }}.tar.gz
- name: Install WASI-SDK
if: runner.os != 'Windows'
shell: bash
run: sudo mv /tmp/wasi-sdk-${WASI_SDK_VERSION} /opt/wasi-sdk
- name: Install WASI-SDK on Windows
if: runner.os == 'Windows'
shell: bash
run: echo "WASI_SDK_PATH=$(cygpath -m /tmp/wasi-sdk-${WASI_SDK_VERSION})" >> ${GITHUB_ENV}
- name: Restore CPython
id: cache-cpython-wasi
uses: actions/cache/restore@v4
with:
path: cpython/builddir/wasi
key: cpython-wasi
enableCrossOsArchive: true
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.config.maturin_target }}
args: --release --out dist --features pyo3
manylinux: 2_28
docker-options: -v /opt/wasi-sdk:/opt/wasi-sdk
before-script-linux: |
rustup install nightly
rustup component add rust-src --toolchain nightly
rustup target add wasm32-wasi wasm32-unknown-unknown
- name: Set up cross-compiled linux aarch64 build
if: matrix.config.target == 'aarch64-unknown-linux-gnu'
run: |
sudo apt update
sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
echo '[target.aarch64-unknown-linux-gnu]' >> ${HOME}/.cargo/config.toml
echo 'linker = "aarch64-linux-gnu-gcc"' >> ${HOME}/.cargo/config.toml
- name: Build
shell: bash
run: cargo build --release ${{ matrix.config.buildArgs }}
- name: Package as tarfile
shell: bash
run: |
mkdir -v _dist
cp ${{ matrix.config.targetDir }}/componentize-py${{ matrix.config.extension }} \
_dist/componentize-py${{ matrix.config.extension }}
cd _dist
tar czf componentize-py-${{ env.RELEASE_VERSION }}-${{ env.RUNNER_OS }}-${{ matrix.config.arch }}.tar.gz \
componentize-py${{ matrix.config.extension }}
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: componentize-py-${{ matrix.config.wasiSDK }}-${{ matrix.config.arch }}
path: dist
- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
name: componentize-py-${{ matrix.config.wasiSDK }}-${{ matrix.config.arch }}-tar
path: _dist/componentize-py-${{ env.RELEASE_VERSION }}-${{ env.RUNNER_OS }}-${{ matrix.config.arch }}.tar.gz
- name: Upload binary to Github release (tag)
if: startsWith(github.ref, 'refs/tags/v')
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: _dist/componentize-py-${{ env.RELEASE_VERSION }}-${{ env.RUNNER_OS }}-${{ matrix.config.arch }}.tar.gz
tag: ${{ github.ref }}
checksums:
name: Generate checksums
runs-on: ubuntu-latest
needs: release
steps:
- name: Set the release version (tag)
if: startsWith(github.ref, 'refs/tags/v')
shell: bash
run: echo "RELEASE_VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV
- name: Set the release version (canary)
if: github.ref == 'refs/heads/main'
shell: bash
run: echo "RELEASE_VERSION=canary" >> $GITHUB_ENV
- name: Download release assets
uses: actions/download-artifact@v4
with:
pattern: componentize-py-*
merge-multiple: true
- name: Generate checksums
run: |
sha256sum componentize-py-${{ env.RELEASE_VERSION }}*.tar.gz > checksums-${{ env.RELEASE_VERSION }}.txt
- uses: actions/upload-artifact@v4
with:
name: componentize-py-checksums
path: checksums-${{ env.RELEASE_VERSION }}.txt
- name: Upload checksums to Github release (tag)
if: startsWith(github.ref, 'refs/tags/v')
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: checksums-${{ env.RELEASE_VERSION }}.txt
tag: ${{ github.ref }}
sdist:
name: Build Python sdist
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: "recursive"
- name: Build sdist
uses: PyO3/maturin-action@v1
with:
command: sdist
args: --out dist
- name: Upload sdist
uses: actions/upload-artifact@v4
with:
name: componentize-py-sdist
path: dist
update_canary_release:
name: Update canary release
needs: [checksums, sdist]
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: "recursive"
- name: Download release assets
uses: actions/download-artifact@v4
with:
pattern: componentize-py-*
merge-multiple: true
- name: Delete canary tag
run: gh release delete canary --cleanup-tag -y
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Recreate canary tag and release
uses: ncipollo/release-action@v1
with:
tag: canary
allowUpdates: true
prerelease: true
artifacts: "checksums-canary.txt,componentize-py-canary*,componentize_py-*.whl,componentize_py-*.tar.gz"