Skip to content

WIP: patch OpenBLAS build for quadmath symbols #310

WIP: patch OpenBLAS build for quadmath symbols

WIP: patch OpenBLAS build for quadmath symbols #310

Workflow file for this run

name: posix
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch: null
schedule:
- cron: '0 0 * * 0'
env:
REPO_DIR: OpenBLAS
OPENBLAS_COMMIT: "d11e7340"
MACOSX_DEPLOYMENT_TARGET: 10.9
jobs:
build:
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-13]
PLAT: [i686, x86_64]
INTERFACE64: ['0', '1']
MB_ML_VER: ['2014']
MB_ML_LIBC: ['manylinux']
include:
- os: macos-13
PLAT: arm64
INTERFACE64: '1'
- os: macos-13
PLAT: arm64
INTERFACE64: '0'
- os: ubuntu-latest
PLAT: x86_64
INTERFACE64: '1'
MB_ML_LIBC: musllinux
MB_ML_VER: _1_1
- os: ubuntu-latest
PLAT: x86_64
INTERFACE64: '0'
MB_ML_LIBC: musllinux
MB_ML_VER: _1_1
# - os: ubuntu-latest
# PLAT: aarch64
# INTERFACE64: '0'
# MB_ML_VER: '2014'
# - os: ubuntu-latest
# PLAT: aarch64
# INTERFACE64: '1'
# MB_ML_VER: '2014'
# - os: ubuntu-latest
# PLAT: aarch64
# INTERFACE64: '0'
# MB_ML_LIBC: musllinux
# MB_ML_VER: _1_1
# - os: ubuntu-latest
# PLAT: aarch64
# INTERFACE64: '1'
# MB_ML_LIBC: musllinux
# MB_ML_VER: _1_1
exclude:
- PLAT: i686
os: macos-13
- PLAT: i686
INTERFACE64: '1'
env:
NIGHTLY: ${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }}
MB_PYTHON_VERSION: ${{ matrix.python-version }}
TRAVIS_PYTHON_VERSION: ${{ matrix.python-version }}
MB_ML_LIBC: ${{ matrix.MB_ML_LIBC }}
MB_ML_VER: ${{ matrix.MB_ML_VER }}
INTERFACE64: ${{ matrix.INTERFACE64 }}
BUILD_DIR: ${{ github.workspace }}
PLAT: ${{ matrix.PLAT }}
steps:
- uses: actions/[email protected]
with:
submodules: recursive
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.9
- name: Set extra env
run: |
echo "DOCKER_TEST_IMAGE=$(echo multibuild/xenial_${{ matrix.PLAT}})" >> $GITHUB_ENV;
- uses: maxim-lobanov/[email protected]
if: ${{ matrix.os == 'macos-13' }}
with:
xcode-version: '14.3'
- name: Allow docker with qemu
if: ${{ matrix.PLAT == 'aarch64' }}
run: |
sudo apt-get update -q -y
sudo apt-get -qq install -y qemu qemu-user-static
sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes --credential yes
- name: Print some Environment variable
run: |
echo "PLAT: ${PLAT}"
echo "DOCKER_TEST_IMAGE: ${DOCKER_TEST_IMAGE}"
- name: Install VirtualEnv
run: |
python3 -m pip install --upgrade pip
pip install virtualenv
- name: Build OpenBLAS
run: |
set -xeo pipefail
source tools/build_steps.sh
echo "------ BEFORE BUILD ---------"
before_build
if [[ "$NIGHTLY" = "true" ]]; then
echo "------ CLEAN CODE --------"
clean_code $REPO_DIR develop
echo "------ BUILD LIB --------"
build_lib "$PLAT" "$INTERFACE64" "1"
else
echo "------ CLEAN CODE --------"
clean_code $REPO_DIR $OPENBLAS_COMMIT
echo "------ BUILD LIB --------"
build_lib "$PLAT" "$INTERFACE64" "0"
fi
# - name: Setup tmate session
# if: ${{ failure() }}
# uses: mxschmitt/action-tmate@v3
# with:
# limit-access-to-actor: true
- name: Build and test wheel
run: |
if [[ "$NIGHTLY" = "true" ]]; then
# Set the pyproject.toml version: convert v0.3.24-30-g138ed79f to 0.3.34.30
version=$(cd OpenBLAS && git describe --tags --abbrev=8 | sed -e "s/^v\(.*\)-g.*/\1/" | sed -e "s/-/./g")
sed -e "s/^version = .*/version = \"${version}\"/" -i.bak pyproject.toml
fi
if [ "macos-13" == "${{ matrix.os }}" ]; then
source tools/build_wheel.sh
else
libc=${MB_ML_LIBC:-manylinux}
docker_image=quay.io/pypa/${libc}${MB_ML_VER}_${PLAT}
docker run --rm -e INTERFACE64="${INTERFACE64}" \
-e MB_ML_LIBC="${MB_ML_LIBC}" \
-v $(pwd):/openblas $docker_image \
/bin/bash -xe /openblas/tools/build_wheel.sh
sudo chmod -R a+w dist
fi
- uses: actions/[email protected]
with:
name: wheels-${{ matrix.os }}-${{ matrix.PLAT }}-${{ matrix.INTERFACE64 }}-${{ matrix.MB_ML_LIBC }}
path: dist/scipy_openblas*.whl
- uses: actions/[email protected]
with:
name: openblas-${{ matrix.os }}-${{ matrix.PLAT }}-${{ matrix.INTERFACE64 }}-${{ matrix.MB_ML_LIBC }}
path: libs/openblas*.tar.gz
- uses: conda-incubator/[email protected]
with:
channels: conda-forge
channel-priority: true
activate-environment: upload
miniforge-version: latest
- name: Upload
# see https://github.com/marketplace/actions/setup-miniconda for why
# `-el {0}` is required.
shell: bash -el {0}
env:
ANACONDA_SCIENTIFIC_PYTHON_UPLOAD: ${{ secrets.ANACONDA_SCIENTIFIC_PYTHON_UPLOAD }}
run: |
# Pin urllib3<2 due to github.com/Anaconda-Platform/anaconda-client/issues/654
conda install -y anaconda-client 'urllib3<2.0.0'
source tools/upload_to_anaconda_staging.sh
upload_wheels