diff --git a/.github/workflows/macos-build+deploy.yaml b/.github/workflows/macos-build+deploy.yaml index 2a6fae6..55b692c 100644 --- a/.github/workflows/macos-build+deploy.yaml +++ b/.github/workflows/macos-build+deploy.yaml @@ -17,29 +17,39 @@ jobs: fail-fast: false matrix: include: - - { version: ventura, arch: x86_64, runner: macos-13, jobs: 4, prefix: /usr/local, CXXFLAGS="-O2 -g -march=x86-64 -fPIC -DPIC" } - - { version: sonoma, arch: arm64, runner: macos-14, jobs: 3, prefix: /opt/homebrew, CXXFLAGS="-O2 -g -march=armv8.5a -fPIC -DPIC" } + - { version: arm64, arch: arm64, runner: macos-15, jobs: 3, prefix: /opt/homebrew, cxxflags: "-O2 -g -march=armv8.5a -fPIC -DPIC", deployment_target: "14.0" } runs-on: ${{ matrix.runner }} env: JOBS: ${{ matrix.jobs }} DESTDIR: /tmp/DESTDIR OUTPUTDIR: /tmp/OUTPUT PREFIX: ${{ matrix.prefix }} - PYTHON_VERSIONS: "3.9 3.10 3.11 3.12" + PYTHON_VERSIONS: "3.12 3.13 3.14" + CFLAGS: ${{ matrix.cxxflags }} + CXXFLAGS: ${{ matrix.cxxflags }} + MACOSX_DEPLOYMENT_TARGET: ${{ matrix.deployment_target }} permissions: contents: read packages: write steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v7 - name: Install build dependencies and workflow dependencies shell: bash run: | brew install \ - autoconf automake cmake gnu-sed libtool m4 make pkg-config \ + cmake gnu-sed make pkg-config \ oras + - + name: Set up Python (for libboost_python) + uses: actions/setup-python@v7 + with: + python-version: | + 3.12 + 3.13 + 3.14 - name: Create directories shell: bash @@ -54,6 +64,10 @@ jobs: name: Build GSL shell: bash run: ./macos/${{ matrix.version }}/build-gsl.bash + - + name: Build FFTW3 + shell: bash + run: ./macos/${{ matrix.version }}/build-fftw3.bash - name: Build Boost shell: bash @@ -63,7 +77,7 @@ jobs: shell: bash run: | cd ${DESTDIR} - tar zcf ${OUTPUTDIR}/${{ matrix.version }}-${{ matrix.arch }}.tar.gz * + tar zcf ${OUTPUTDIR}/macos-${{ matrix.version }}.tar.gz * - name: Push tarball to ghcr.io shell: bash @@ -71,6 +85,6 @@ jobs: oras login --username "${{ github.actor }}" --password "${{ secrets.GITHUB_TOKEN }}" ghcr.io cd ${OUTPUTDIR} oras push \ - ghcr.io/eos/docker.io:${{ matrix.version }}-${{ matrix.arch }}-${GITHUB_SHA::7} \ + ghcr.io/eos/docker.io:macos-${{ matrix.version }}-${GITHUB_SHA::7} \ -a "org.opencontainers.image.source=https://github.com/eos/docker.io" \ - ${{ matrix.version }}-${{ matrix.arch}}.tar.gz + macos-${{ matrix.version }}.tar.gz diff --git a/.github/workflows/manylinux_2_34-build+deploy.yaml b/.github/workflows/manylinux_2_34-build+deploy.yaml index 6667135..837d949 100644 --- a/.github/workflows/manylinux_2_34-build+deploy.yaml +++ b/.github/workflows/manylinux_2_34-build+deploy.yaml @@ -23,11 +23,11 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v7 - name: Docker meta id: meta - uses: docker/metadata-action@v5 + uses: docker/metadata-action@v6 with: images: eoshep/manylinux_2_34 tags: | @@ -35,20 +35,20 @@ jobs: type=raw,value=latest - name: Set up QEMU - uses: docker/setup-qemu-action@v2 + uses: docker/setup-qemu-action@v4 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v4 - name: Login to DockerHub - uses: docker/login-action@v2 + uses: docker/login-action@v4 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push id: build - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v7 with: push: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} context: manylinux_2_34/${{ matrix.arch }} @@ -63,7 +63,7 @@ jobs: touch "/tmp/digests/${digest#sha256:}" - name: Upload digest - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: digest-${{ matrix.arch }} path: /tmp/digests/* @@ -77,18 +77,18 @@ jobs: steps: - name: Download digests - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 with: pattern: digest-* path: /tmp/digests merge-multiple: true - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v4 - name: Docker meta id: meta - uses: docker/metadata-action@v5 + uses: docker/metadata-action@v6 with: images: eoshep/manylinux_2_34 tags: | @@ -96,7 +96,7 @@ jobs: type=raw,value=latest - name: Login to Docker Hub - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} @@ -109,4 +109,4 @@ jobs: - name: Inspect image run: | - docker buildx imagetools inspect eoshep/manylinux_2_34:${{ steps.meta.outputs.version }} \ No newline at end of file + docker buildx imagetools inspect eoshep/manylinux_2_34:${{ steps.meta.outputs.version }} diff --git a/macos/arm64/build-boost.bash b/macos/arm64/build-boost.bash new file mode 100755 index 0000000..7438e7b --- /dev/null +++ b/macos/arm64/build-boost.bash @@ -0,0 +1,51 @@ +set -eo pipefail +set -x + +mkdir -p /tmp/boost +pushd /tmp/boost + + +echo Download the tarball +curl -L -O https://archives.boost.io/release/1.90.0/source/boost_1_90_0.tar.gz + +echo Untar +tar zxf boost_1_90_0.tar.gz + +echo Build Boost +pushd boost_1_90_0 +gsed -i -e '/^#include user-config.jam < user-config.jam < user-config.jam <