diff --git a/.github/workflows/artifacts.yml b/.github/workflows/artifacts.yml index e2912846..06080781 100644 --- a/.github/workflows/artifacts.yml +++ b/.github/workflows/artifacts.yml @@ -67,7 +67,6 @@ jobs: with: submodules: true - run: rustup update - - uses: Swatinem/rust-cache@v2 - run: sed 's/%arch%/x86_64/g' .github/workflows/manylinux_build.sh | sed 's/%for_each_version%//g' > .github/workflows/manylinux_build_script.sh - run: docker run -v "$(pwd)":/workdir --platform linux/x86_64 quay.io/pypa/manylinux2014_x86_64 /bin/bash /workdir/.github/workflows/manylinux_build_script.sh - uses: actions/upload-artifact@v3 @@ -75,6 +74,20 @@ jobs: name: pyoxigraph_wheel_x86_64_linux path: target/wheels/*.whl + wheel_linux_musl: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + submodules: true + - run: rustup update + - run: sed 's/%arch%/x86_64/g' .github/workflows/musllinux_build.sh | sed 's/%for_each_version%//g' > .github/workflows/musllinux_build_script.sh + - run: docker run -v "$(pwd)":/workdir --platform linux/x86_64 quay.io/pypa/musllinux_1_1_x86_64 /bin/sh /workdir/.github/workflows/musllinux_build_script.sh + - uses: actions/upload-artifact@v3 + with: + name: pyoxigraph_wheel_x86_64_linux_musl + path: target/wheels/*.whl + wheel_mac: runs-on: macos-latest env: diff --git a/.github/workflows/musllinux_build.sh b/.github/workflows/musllinux_build.sh new file mode 100644 index 00000000..7dd2fb4c --- /dev/null +++ b/.github/workflows/musllinux_build.sh @@ -0,0 +1,19 @@ +cd /workdir +apk add clang-dev +curl https://static.rust-lang.org/rustup/dist/%arch%-unknown-linux-musl/rustup-init --output rustup-init +chmod +x rustup-init +./rustup-init -y --profile minimal +source "$HOME/.cargo/env" +export PATH="${PATH}:/opt/python/cp37-cp37m/bin:/opt/python/cp38-cp38/bin:/opt/python/cp39-cp39/bin:/opt/python/cp310-cp310/bin:/opt/python/cp311-cp311/bin" +cd python +python3.10 -m venv venv +source venv/bin/activate +pip install -r requirements.dev.txt +maturin develop --release -m Cargo.toml +python generate_stubs.py pyoxigraph pyoxigraph.pyi --black +maturin build --release -m Cargo.toml --features abi3 --compatibility musllinux_1_1 +if [ %for_each_version% ]; then + for VERSION in 7 8 9 10 11; do + maturin build --release -m Cargo.toml --interpreter "python3.$VERSION" --compatibility musllinux_1_1 + done +fi diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ab1de3fa..1a9191f5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -97,6 +97,31 @@ jobs: with: files: target/wheels/*.whl + publish_pypi_linux_musl: + runs-on: ubuntu-latest + strategy: + matrix: + architecture: [ "x86_64", "aarch64" ] + continue-on-error: true + steps: + - uses: actions/checkout@v3 + with: + submodules: true + - uses: docker/setup-qemu-action@v2 + with: + platforms: linux/${{ matrix.architecture }} + if: matrix.architecture != 'x86_64' + - run: sed 's/%arch%/${{ matrix.architecture }}/g' .github/workflows/musllinux_build.sh | sed 's/%for_each_version%/true/g' > .github/workflows/musllinux_build_script.sh + - run: docker run -v "$(pwd)":/workdir --platform linux/${{ matrix.architecture }} quay.io/pypa/musllinux_1_1_${{ matrix.architecture }} /bin/bash /workdir/.github/workflows/musllinux_build_script.sh + - uses: pypa/gh-action-pypi-publish@release/v1 + with: + user: __token__ + password: ${{ secrets.PYPI_PASSWORD }} + packages_dir: target/wheels + - uses: softprops/action-gh-release@v1 + with: + files: target/wheels/*.whl + publish_pypi_mac: runs-on: macos-latest env: