name: Publish_py on: [ workflow_dispatch ] permissions: contents: read jobs: pypi_publish: name: Publish (pypi.org) runs-on: ubuntu-latest env: CARGO_HOME: ${{ github.workspace }}/.cargo RUSTUP_HOME: ${{ github.workspace }}/.rustup RUSTUP_TOOLCHAIN: stable steps: - uses: actions/checkout@v6 with: submodules: true - uses: actions/setup-python@v5 with: python-version: 3.x - name: Restore cache uses: actions/cache/restore@v4 with: path: | ~/.cache/pip ~/.cache/pip-wheel ~/.cache/sccache ~/.cache/cargo-xwin ${{ env.CARGO_HOME }} ~/.osxcross key: cache-ubuntu-maturin-cross-compile - name: Install llvm and cmake run: | if ! command -v llvm-dlltool >/dev/null 2>&1; then sudo apt update sudo apt install -y llvm cmake fi shell: bash - name: Install Rust run: | export PATH="$CARGO_HOME/bin:$PATH" if ! command -v rustup >/dev/null 2>&1; then curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y fi rustup toolchain install stable --profile minimal rustup default stable echo "$CARGO_HOME/bin" >> "$GITHUB_PATH" cargo --version shell: bash - name: Install sccache and maturin run: | python -m pip install --upgrade pip python -m pip install --upgrade maturin ziglang if ! command -v sccache >/dev/null 2>&1; then cargo install sccache || pip install sccache fi shell: bash - name: Install xwin run: | if ! command -v cargo-xwin >/dev/null 2>&1; then cargo install cargo-xwin || pip install cargo-xwin cargo xwin cache xwin fi shell: bash - name: Install osxcross run: | export PATH="$HOME/.osxcross/bin:$PATH" if [ ! -d "$HOME/.osxcross/bin" ]; then wget ${{ secrets.OSXCROSS_LINK }} -O osxcross.tar.gz tar -xzf osxcross.tar.gz -C ~/ mv ~/osxcross ~/.osxcross fi - name: Build wheels shell: bash run: | export PATH="$HOME/.osxcross/bin:$PATH" echo "HOME=$HOME CARGO_HOME=$CARGO_HOME RUSTUP_HOME=$RUSTUP_HOME" command -v rustup command -v cargo rustup show cargo --version rm -rf dist maturin sdist --out dist -m ndbioimage/Cargo.toml rustup target add x86_64-apple-darwin maturin build --release --out dist --target x86_64-apple-darwin --zig --auditwheel repair -m ndbioimage/Cargo.toml rustup target add aarch64-apple-darwin maturin build --release --out dist --target aarch64-apple-darwin --zig --auditwheel repair -m ndbioimage/Cargo.toml rustup target add x86_64-unknown-linux-gnu maturin build --release --out dist --target x86_64-unknown-linux-gnu --zig --auditwheel repair -m ndbioimage/Cargo.toml rustup target add aarch64-unknown-linux-gnu maturin build --release --out dist --target aarch64-unknown-linux-gnu --zig --auditwheel repair -m ndbioimage/Cargo.toml rustup target add x86_64-unknown-linux-musl maturin build --release --out dist --target x86_64-unknown-linux-musl --zig --auditwheel repair -m ndbioimage/Cargo.toml rustup target add aarch64-unknown-linux-musl maturin build --release --out dist --target aarch64-unknown-linux-musl --zig --auditwheel repair -m ndbioimage/Cargo.toml rustup target add x86_64-pc-windows-msvc maturin build --release --out dist --target x86_64-pc-windows-msvc --auditwheel repair -m ndbioimage/Cargo.toml rustup target add aarch64-pc-windows-msvc maturin build --release --out dist --target aarch64-pc-windows-msvc --auditwheel repair -m ndbioimage/Cargo.toml - name: Store cache uses: actions/cache/save@v4 with: path: | ~/.cache/pip ~/.cache/pip-wheel ~/.cache/sccache ~/.cache/cargo-xwin ${{ env.CARGO_HOME }} ~/.osxcross key: cache-ubuntu-maturin-cross-compile - name: Publish to PyPI uses: pypa/gh-action-pypi-publish@release/v1 with: password: ${{ secrets.PYPI_API_TOKEN }} env: GITHUB_WORKFLOW_REF: 1.10.1