diff --git a/.github/workflows/multibuild.yml b/.github/workflows/multibuild.yml index ac69cd89..086c86fb 100644 --- a/.github/workflows/multibuild.yml +++ b/.github/workflows/multibuild.yml @@ -29,6 +29,18 @@ jobs: PLAT: arm64 INTERFACE64: '' platform: [x64] + - os: ubuntu-latest + PLAT: x86_64 + INTERFACE64: '1' + MB_ML_LIBC: musllinux + MB_ML_VER: _1_1 + platform: [x64] + - os: ubuntu-latest + PLAT: x86_64 + INTERFACE64: '' + MB_ML_LIBC: musllinux + MB_ML_VER: _1_1 + platform: [x64] exclude: - os: macos-latest PLAT: i686 @@ -44,6 +56,7 @@ jobs: MACOSX_DEPLOYMENT_TARGET: 10.9 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 }} diff --git a/.gitmodules b/.gitmodules index ae67f995..9a0ddc0f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -3,7 +3,7 @@ url = https://github.com/xianyi/OpenBLAS.git [submodule "multibuild"] path = multibuild - url = https://github.com/matthew-brett/multibuild.git + url = https://github.com/multi-build/multibuild.git [submodule "gfortran-install"] path = gfortran-install url = https://github.com/MacPython/gfortran-install.git diff --git a/.travis.yml b/.travis.yml index 6baff477..62128da0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,6 +23,21 @@ services: docker matrix: include: + - os: linux + arch: arm64 + env: + - PLAT=aarch64 + - MB_ML_VER=_1_1 + - MB_ML_LIBC=musllinux + - DOCKER_TEST_IMAGE=multibuild/xenial_{PLAT} + - os: linux + arch: arm64 + env: + - PLAT=aarch64 + - INTERFACE64=1 + - MB_ML_VER=_1_1 + - MB_ML_LIBC=musllinux + - DOCKER_TEST_IMAGE=multibuild/xenial_{PLAT} - os: linux arch: arm64 env: diff --git a/multibuild b/multibuild index 7684e52b..4b6eb06a 160000 --- a/multibuild +++ b/multibuild @@ -1 +1 @@ -Subproject commit 7684e52bcb023d511c4f17b638d497203f218a68 +Subproject commit 4b6eb06af94d39b04a4136bb6781bd0100816c7d diff --git a/travis-ci/build_steps.sh b/travis-ci/build_steps.sh index 761370ac..6b13ca37 100644 --- a/travis-ci/build_steps.sh +++ b/travis-ci/build_steps.sh @@ -26,6 +26,33 @@ function before_build { fi } +function get_plat_tag { + # Copied from gfortran-install/gfortran_utils.sh, modified for MB_ML_LIBC + + # Modify fat architecture tags on macOS to reflect compiled architecture + # For non-darwin, report manylinux version + local plat=$1 + local mb_ml_ver=${MB_ML_VER:-1} + local mb_ml_libc=${MB_ML_LIBC:-manylinux} + case $plat in + i686|x86_64|arm64|universal2|intel|aarch64|s390x|ppc64le) ;; + *) echo Did not recognize plat $plat; return 1 ;; + esac + local uname=${2:-$(uname)} + if [ "$uname" != "Darwin" ]; then + if [ "$plat" == "intel" ]; then + echo plat=intel not allowed for Manylinux + return 1 + fi + echo "${mb_ml_libc}${mb_ml_ver}_${plat}" + return + fi + # macOS 32-bit arch is i386 + [ "$plat" == "i686" ] && plat="i386" + local target=$(echo $MACOSX_DEPLOYMENT_TARGET | tr .- _) + echo "macosx_${target}_${plat}" +} + function build_lib { # OSX or manylinux build # @@ -48,7 +75,8 @@ function build_lib { return fi # Manylinux wrapper - local docker_image=quay.io/pypa/manylinux${manylinux}_${plat} + local libc=${MB_ML_LIBC:-manylinux} + local docker_image=quay.io/pypa/${libc}${manylinux}_${plat} docker pull $docker_image # Docker sources this script, and runs `do_build_lib` docker run --rm \ @@ -57,6 +85,7 @@ function build_lib { -e INTERFACE64="${interface64}" \ -e PYTHON_VERSION="$MB_PYTHON_VERSION" \ -e MB_ML_VER=${manylinux} \ + -e MB_ML_LIBC=${libc} \ -v $PWD:/io \ $docker_image /io/travis-ci/docker_build_wrap.sh } @@ -137,7 +166,7 @@ function do_build_lib { && make PREFIX=$BUILD_PREFIX $interface64_flags install ) stop_spinner local version=$(cd OpenBLAS && git describe --tags --abbrev=8) - local plat_tag=$(get_distutils_platform_ex $plat) + local plat_tag=$(get_plat_tag $plat) local suff="" [ -n "$suffix" ] && suff="-$suffix" if [ "$interface64" = "1" ]; then