testing macos-14 release #78
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release | |
# Do this on every push with a version tag | |
on: | |
push: | |
tags: | |
- "v*" | |
env: | |
CARGO_TERM_COLOR: always | |
CARGO_INCREMENTAL: 0 | |
jobs: | |
build-release: | |
name: Build release for ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macOS-latest, macOS-14] | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: (macos) install automake and autoconf | |
if: ${{ startsWith(matrix.os, 'macOS') }} | |
run: | | |
brew install automake autoconf | |
- name: Install stable toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
- name: Add Python 3.8 | |
uses: actions/setup-python@v5 | |
continue-on-error: true | |
with: | |
python-version: "3.8" | |
- name: Add Python 3.9 | |
uses: actions/setup-python@v5 | |
continue-on-error: true | |
with: | |
python-version: "3.9" | |
- name: Add Python 3.10 | |
uses: actions/setup-python@v5 | |
continue-on-error: true | |
with: | |
python-version: "3.10" | |
- name: Add Python 3.11 | |
uses: actions/setup-python@v5 | |
continue-on-error: true | |
with: | |
python-version: "3.11" | |
- name: Add Python 3.12 | |
uses: actions/setup-python@v5 | |
continue-on-error: true | |
with: | |
python-version: "3.12" | |
- name: install cfitsio | |
run: | | |
cd /tmp | |
curl "https://heasarc.gsfc.nasa.gov/FTP/software/fitsio/c/cfitsio-3.49.tar.gz" -o cfitsio.tar.gz | |
tar -xf cfitsio.tar.gz | |
rm cfitsio.tar.gz | |
cd cfitsio-3.49 | |
./configure --prefix=/usr/local --enable-reentrant --disable-curl | |
sudo make shared | |
sudo make install | |
cd .. | |
if [[ "$OSTYPE" == "linux-gnu"* ]]; then | |
sudo ldconfig | |
fi | |
- name: install maturin | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install maturin # [patchelf] ? | |
- name: build mwalib | |
env: | |
MWALIB_LINK_STATIC_CFITSIO: 1 | |
run: | | |
export TAG="$(git describe --tags)" | |
# determine which target cpus for rustc to build for from machine type | |
export ARCH="$(uname -m)" | |
case $ARCH in | |
x86_64) export TARGETS="x86-64 x86-64-v2 x86-64-v3" ;; | |
arm64) export TARGETS="arm64" ;; | |
*) echo "unknown arch (uname -m) $ARCH"; exit 1 ;; | |
esac | |
# determine which library file extensions to include in archive from kernel | |
export KERNEL="$(uname -s | tr '[:upper:]' '[:lower:]')" | |
case $KERNEL in | |
darwin*) export LIB_GLOB="{a,dylib}" ;; | |
linux*) export LIB_GLOB="{a,so}" ;; | |
*) echo "unknown kernel (uname -s) $KERNEL"; exit 1 ;; | |
esac | |
for TARGET in $TARGETS; do | |
echo "building target $TARGET" | |
export RUSTFLAGS="-C target-cpu=$TARGET" | |
# Build python first | |
maturin build --release --features python --strip | |
# Build C objects | |
cargo build --release --features examples | |
# Create new release asset tarballs | |
mv target/wheels/*.whl target/release/libmwalib.${LIB_GLOB} include/mwalib.h . | |
tar -acvf mwalib-${TAG}-${KERNEL}-${ARCH}.tar.gz \ | |
LICENSE LICENSE-cfitsio README.md CHANGELOG.md \ | |
libmwalib.${LIB_GLOB} mwalib.h | |
tar -acvf mwalib-${TAG}-${KERNEL}-${ARCH}-python.tar.gz \ | |
LICENSE LICENSE-cfitsio README.md CHANGELOG.md \ | |
./*.whl | |
done | |
- name: Upload tarball | |
uses: actions/upload-artifact@v2 | |
with: | |
name: ${{ matrix.os }}.tar.gz | |
path: "*.tar.gz" | |
if-no-files-found: error | |
create-release: | |
name: Create a new release | |
runs-on: ubuntu-latest | |
needs: [build-release] | |
steps: | |
- name: Download Linux artifact | |
uses: actions/download-artifact@v2 | |
with: | |
name: ubuntu-latest.tar.gz | |
- name: Download MacOS x86_64 artifact | |
uses: actions/download-artifact@v2 | |
with: | |
name: macOS-latest.tar.gz | |
- name: Download MacOS arm64 artifact | |
uses: actions/download-artifact@v2 | |
with: | |
name: macOS-14.tar.gz | |
- name: Provide new release asset | |
uses: "marvinpinto/action-automatic-releases@latest" | |
with: | |
repo_token: "${{ secrets.GITHUB_TOKEN }}" | |
prerelease: false | |
files: | | |
*.tar.gz | |
# build-macos-release: | |
# name: Build release for MacOS | |
# runs-on: macos-latest | |
# steps: | |
# - name: Checkout sources | |
# uses: actions/checkout@v3 | |
# with: | |
# fetch-depth: 0 | |
# - name: Install stable toolchain | |
# uses: actions-rs/toolchain@v1 | |
# with: | |
# profile: minimal | |
# toolchain: stable | |
# override: true | |
# - name: Add Python versions | |
# uses: actions/setup-python@v2 | |
# with: | |
# python-version: | | |
# "3.8" | |
# "3.9" | |
# "3.10" | |
# "3.11" | |
# "3.12" | |
# architecture: "x64" | |
# - name: Build mwalib | |
# run: ./.github/workflows/build.sh | |
# shell: bash | |
# - name: Upload tarball | |
# uses: actions/upload-artifact@v2 | |
# with: | |
# name: macos-x86_64.tar.gz | |
# path: "*.tar.gz" | |
# if-no-files-found: error | |
# build-apple-silicon-release: | |
# name: Build release for Apple Sillycon | |
# runs-on: macos-14 | |
# steps: | |
# - name: Show env | |
# run: set -x; env; uname -m; uname -s | |
# - name: Checkout sources | |
# uses: actions/checkout@v3 | |
# with: | |
# fetch-depth: 0 | |
# - name: Install stable toolchain | |
# uses: actions-rs/toolchain@v1 | |
# with: | |
# profile: minimal | |
# toolchain: stable | |
# override: true | |
# - name: Add Python versions | |
# uses: actions/setup-python@v2 | |
# with: | |
# python-version: | | |
# "3.10" | |
# "3.11" | |
# "3.12" | |
# architecture: "x64" | |
# - name: show env | |
# run: whereis python | |
# - name: Build mwalib | |
# run: ./.github/workflows/build.sh | |
# shell: bash | |
# - name: Upload tarball | |
# uses: actions/upload-artifact@v2 | |
# with: | |
# name: macos-arm64.tar.gz | |
# path: "*.tar.gz" | |
# if-no-files-found: error | |
# create-release: | |
# name: Create a new release | |
# runs-on: ubuntu-latest | |
# needs: [build-linux-release, build-macos-release, build-apple-silicon-release] | |
# steps: | |
# - name: Download Linux artifact | |
# uses: actions/download-artifact@v2 | |
# with: | |
# name: linux.tar.gz | |
# - name: Download MacOS x86_64 artifact | |
# uses: actions/download-artifact@v2 | |
# with: | |
# name: macos-x86_64.tar.gz | |
# - name: Download MacOS arm64 artifact | |
# uses: actions/download-artifact@v2 | |
# with: | |
# name: macos-arm64.tar.gz | |
# - name: Provide new release asset | |
# uses: "marvinpinto/action-automatic-releases@latest" | |
# with: | |
# repo_token: "${{ secrets.GITHUB_TOKEN }}" | |
# prerelease: false | |
# files: | | |
# *.tar.gz |