From 470b3fd796098165e5e59f230f8fd903c7df2267 Mon Sep 17 00:00:00 2001 From: MintoDA1 <51412913+MintoDA1@users.noreply.github.com> Date: Thu, 7 Sep 2023 22:21:04 -0400 Subject: [PATCH 1/8] Upgrading Pip to get past building in the Mac runner --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 8d8eb8761..1ffff0470 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -93,6 +93,7 @@ RANLIB="/usr/bin/ranlib" [tool.cibuildwheel.macos] before-all = [ "brew install coreutils", + "pip install --upgrade pip", "LIBS=\"\" buildscripts/build_dependencies.sh -p ${PREFIX} -d ${TMPDIR}/swiftest.build -m ${MACOSX_DEPLOYMENT_TARGET}" ] From a5e2b012baa5a9a9c2c91bad76022d76b5fc8909 Mon Sep 17 00:00:00 2001 From: MintoDA1 <51412913+MintoDA1@users.noreply.github.com> Date: Thu, 7 Sep 2023 22:36:03 -0400 Subject: [PATCH 2/8] More tweaks attempting to get a working build on a Mac runner --- .github/workflows/build_wheels.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index 3e4330b10..12c68b967 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -9,7 +9,8 @@ jobs: strategy: matrix: os: [ubuntu-20.04, macos-11, macos-12, macos-13] - + env: + SYSTEM_VERSION_COMPAT: 0 steps: - uses: actions/checkout@v3 From 40913f43a33c5c1532c80fa21b9c0b3f150e7509 Mon Sep 17 00:00:00 2001 From: MintoDA1 <51412913+MintoDA1@users.noreply.github.com> Date: Fri, 8 Sep 2023 07:47:21 -0400 Subject: [PATCH 3/8] Attempting to build universal binary libraries for Github mac runners --- pyproject.toml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 1ffff0470..4b025a052 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -71,9 +71,10 @@ LDFLAGS="-Wl,-rpath,${ROOT_DIR}/lib -Wl,-no_compact_unwind -L${PREFIX}/lib -L${ CPATH="/usr/local/include:${PREFIX}/include:${HOMEBREW_PREFIX}/include:${ROOT_DIR}/include" CPPFLAGS="-isystem ${PREFIX}/include -isystem /usr/local/include" LIBS="-lomp" -CFLAGS="-mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET} -Wno-deprecated-non-prototype -arch ${ARCH}" -FCFLAGS="-mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET} -arch ${ARCH}" -FFFLAGS="-mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET} -arch ${ARCH}" +FCFLAGS="-mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" +FFFLAGS="${FCFLAGS}" +CFLAGS="${FCFLAGS} -Wno-deprecated-non-prototype" +CXXFLAGS="${CFLAGS}" HDF5_ROOT="${PREFIX}" HDF5_LIBDIR="${HDF5_ROOT}/lib" HDF5_INCLUDE_DIR="${HDF5_ROOT}/include" @@ -93,8 +94,7 @@ RANLIB="/usr/bin/ranlib" [tool.cibuildwheel.macos] before-all = [ "brew install coreutils", - "pip install --upgrade pip", - "LIBS=\"\" buildscripts/build_dependencies.sh -p ${PREFIX} -d ${TMPDIR}/swiftest.build -m ${MACOSX_DEPLOYMENT_TARGET}" + "LIBS=\"\" FCFLAGS=\"${FCFLAGS} -arch x86_64 -arch arm64\" CFLAGS=\"${CFLAGS} -arch x86_64 -arch arm64\" FFLAGS=$FCFLAGS CXXFLAGS=$CFLAGS buildscripts/build_dependencies.sh -p ${PREFIX} -d ${TMPDIR}/swiftest.build -m ${MACOSX_DEPLOYMENT_TARGET}" ] [tool.cibuildwheel.linux] From 298f1f822a70a79e913dd3bd4ca27b1e0bc494ae Mon Sep 17 00:00:00 2001 From: MintoDA1 <51412913+MintoDA1@users.noreply.github.com> Date: Fri, 8 Sep 2023 07:54:53 -0400 Subject: [PATCH 4/8] Attempting to streamline the universal build on the Mac runner --- .github/workflows/build_wheels.yml | 2 +- pyproject.toml | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index 12c68b967..18b4f4699 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -17,7 +17,7 @@ jobs: - name: Build wheels uses: pypa/cibuildwheel@v2.15.0 env: - CIBW_ARCHS_MACOS: x86_64 arm64 + CIBW_ARCHS_MACOS: universal2 CIBW_ARCHS_LINUX: x86_64 aarch64 with: package-dir: . diff --git a/pyproject.toml b/pyproject.toml index 4b025a052..77790bda5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -62,7 +62,6 @@ build-verbosity = 1 [tool.cibuildwheel.macos.environment] ROOT_DIR="$(pwd)" -ARCH="$(uname -m)" MACOSX_DEPLOYMENT_TARGET="$(sw_vers -productVersion)" PREFIX="${ROOT_DIR}" HOMEBREW_PREFIX="$(brew --prefix)" @@ -71,9 +70,9 @@ LDFLAGS="-Wl,-rpath,${ROOT_DIR}/lib -Wl,-no_compact_unwind -L${PREFIX}/lib -L${ CPATH="/usr/local/include:${PREFIX}/include:${HOMEBREW_PREFIX}/include:${ROOT_DIR}/include" CPPFLAGS="-isystem ${PREFIX}/include -isystem /usr/local/include" LIBS="-lomp" -FCFLAGS="-mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" +FCFLAGS="-mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET} -arch x86_64 -arch arm64" FFFLAGS="${FCFLAGS}" -CFLAGS="${FCFLAGS} -Wno-deprecated-non-prototype" +CFLAGS="${FCFLAGS} -Wno-deprecated-non-prototype -arch x86_64 -arch arm64" CXXFLAGS="${CFLAGS}" HDF5_ROOT="${PREFIX}" HDF5_LIBDIR="${HDF5_ROOT}/lib" @@ -94,7 +93,7 @@ RANLIB="/usr/bin/ranlib" [tool.cibuildwheel.macos] before-all = [ "brew install coreutils", - "LIBS=\"\" FCFLAGS=\"${FCFLAGS} -arch x86_64 -arch arm64\" CFLAGS=\"${CFLAGS} -arch x86_64 -arch arm64\" FFLAGS=$FCFLAGS CXXFLAGS=$CFLAGS buildscripts/build_dependencies.sh -p ${PREFIX} -d ${TMPDIR}/swiftest.build -m ${MACOSX_DEPLOYMENT_TARGET}" + "LIBS=\"\" buildscripts/build_dependencies.sh -p ${PREFIX} -d ${TMPDIR}/swiftest.build -m ${MACOSX_DEPLOYMENT_TARGET}" ] [tool.cibuildwheel.linux] From 97e406e3065733628a07fa5ea302ccaffb97e4ff Mon Sep 17 00:00:00 2001 From: MintoDA1 <51412913+MintoDA1@users.noreply.github.com> Date: Fri, 8 Sep 2023 08:32:35 -0400 Subject: [PATCH 5/8] Added missing F77 environment variable --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 77790bda5..4850d382e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -83,6 +83,7 @@ NETCDF_INCLUDE="${PREFIX}" NCDIR="${PREFIX}" NFDIR="${PREFIX}" FC="$(command -v gfortran-12)" +F77="${FC}" CC="/usr/bin/clang" CXX="/usr/bin/clang++" CPP="/usr/bin/cpp" From cbe43e2a6c80b906d6ef9e8c574c5e18e120bb8a Mon Sep 17 00:00:00 2001 From: MintoDA1 <51412913+MintoDA1@users.noreply.github.com> Date: Fri, 8 Sep 2023 10:04:56 -0400 Subject: [PATCH 6/8] More tweaks to scripts attempting to get arm64 build using a self-hosted runner. --- .github/workflows/build_wheels.yml | 7 +++++-- .gitignore | 2 +- pyproject.toml | 5 +++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index 18b4f4699..5c87756d8 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -9,6 +9,10 @@ jobs: strategy: matrix: os: [ubuntu-20.04, macos-11, macos-12, macos-13] + arch: [x86_64] + include: + - os: self-hosted + arch: arm64 env: SYSTEM_VERSION_COMPAT: 0 steps: @@ -17,7 +21,7 @@ jobs: - name: Build wheels uses: pypa/cibuildwheel@v2.15.0 env: - CIBW_ARCHS_MACOS: universal2 + CIBW_ARCHS_MACOS: ${{ matrix.arch }} CIBW_ARCHS_LINUX: x86_64 aarch64 with: package-dir: . @@ -28,7 +32,6 @@ jobs: with: path: ./wheelhouse/*.whl - build_sdist: name: Build source distribution runs-on: ubuntu-latest diff --git a/.gitignore b/.gitignore index ab0e8d718..8135a42d5 100644 --- a/.gitignore +++ b/.gitignore @@ -57,4 +57,4 @@ netcdf-c-* netcdf-fortran-* zlib-* - +actions-runner* \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 4850d382e..052b2ac32 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -65,14 +65,15 @@ ROOT_DIR="$(pwd)" MACOSX_DEPLOYMENT_TARGET="$(sw_vers -productVersion)" PREFIX="${ROOT_DIR}" HOMEBREW_PREFIX="$(brew --prefix)" +ARCH="$(uname -m)" LD_LIBRARY_PATH="/usr/local/lib:${PREFIX}/lib:${HOMEBREW_PREFIX}/lib" LDFLAGS="-Wl,-rpath,${ROOT_DIR}/lib -Wl,-no_compact_unwind -L${PREFIX}/lib -L${HOMEBREW_PREFIX}/lib" CPATH="/usr/local/include:${PREFIX}/include:${HOMEBREW_PREFIX}/include:${ROOT_DIR}/include" CPPFLAGS="-isystem ${PREFIX}/include -isystem /usr/local/include" LIBS="-lomp" -FCFLAGS="-mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET} -arch x86_64 -arch arm64" +FCFLAGS="-mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET} -arch ${ARCH}" FFFLAGS="${FCFLAGS}" -CFLAGS="${FCFLAGS} -Wno-deprecated-non-prototype -arch x86_64 -arch arm64" +CFLAGS="${FCFLAGS} -Wno-deprecated-non-prototype -arch ${ARCH}" CXXFLAGS="${CFLAGS}" HDF5_ROOT="${PREFIX}" HDF5_LIBDIR="${HDF5_ROOT}/lib" From beedb78f5511a17bfd139389be41e065a5bd8de9 Mon Sep 17 00:00:00 2001 From: MintoDA1 <51412913+MintoDA1@users.noreply.github.com> Date: Fri, 8 Sep 2023 10:12:52 -0400 Subject: [PATCH 7/8] Removed self-hosted runner. Sticking to x86_64 for now and will do arm64 builds manually --- .github/workflows/build_wheels.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index 5c87756d8..f5972f10f 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -9,10 +9,6 @@ jobs: strategy: matrix: os: [ubuntu-20.04, macos-11, macos-12, macos-13] - arch: [x86_64] - include: - - os: self-hosted - arch: arm64 env: SYSTEM_VERSION_COMPAT: 0 steps: @@ -21,7 +17,7 @@ jobs: - name: Build wheels uses: pypa/cibuildwheel@v2.15.0 env: - CIBW_ARCHS_MACOS: ${{ matrix.arch }} + CIBW_ARCHS_MACOS: x86_64 CIBW_ARCHS_LINUX: x86_64 aarch64 with: package-dir: . From ed6165f2557df47afb6f060da9b31d2eaf37d039 Mon Sep 17 00:00:00 2001 From: MintoDA1 <51412913+MintoDA1@users.noreply.github.com> Date: Fri, 8 Sep 2023 13:37:16 -0400 Subject: [PATCH 8/8] Updated workflow to run qemu when building the Linux aarch64 wheel --- .github/workflows/build_wheels.yml | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index f5972f10f..5285629d2 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -1,6 +1,6 @@ name: swiftest -on: push +on: [push, pull_request] jobs: build_wheels: @@ -8,17 +8,25 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-20.04, macos-11, macos-12, macos-13] + os: [ubuntu-latest, macos-11, macos-12, macos-13] + cibw_archs: [x86_64] + include: + - os: ubuntu-latest + cibw_archs: "aarch64" env: SYSTEM_VERSION_COMPAT: 0 + steps: + - name: Set up QEMU + if: matrix.cibw_archs == 'aarch64' + uses: docker/setup-qemu-action@v2 + with: + platforms: arm64 - uses: actions/checkout@v3 - - name: Build wheels uses: pypa/cibuildwheel@v2.15.0 env: - CIBW_ARCHS_MACOS: x86_64 - CIBW_ARCHS_LINUX: x86_64 aarch64 + CIBW_ARCHS: ${{ matrix.cibw_archs }} with: package-dir: . output-dir: wheelhouse