diff --git a/.github/workflows/build-macos.yml b/.github/workflows/build-macos.yml index 0440c67..4e03b15 100644 --- a/.github/workflows/build-macos.yml +++ b/.github/workflows/build-macos.yml @@ -64,6 +64,12 @@ jobs: echo "SHORT_SHA=${SHORT_SHA}" >> $GITHUB_ENV mv Argyll_V*_${{ matrix.artifact }}.tgz "Argyll_${TAG}_${SHORT_SHA}_${{ matrix.artifact }}.tgz" + - name: Upload Raw Binaries + uses: actions/upload-artifact@v4 + with: + name: raw-bin-${{ matrix.arch }} + path: bin/ + - name: Upload Artifact uses: actions/upload-artifact@v4 with: @@ -77,3 +83,83 @@ jobs: name: Release ${{ github.ref_name }} body: "Release ${{ github.ref_name }} built from commit ${{ github.sha }}" files: Argyll_*_${{ matrix.artifact }}.tgz + + universal: + needs: build + runs-on: macos-15 + permissions: + contents: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Download x86_64 binaries + uses: actions/download-artifact@v4 + with: + name: raw-bin-x86_64 + path: raw-bin-x86_64 + + - name: Download arm64 binaries + uses: actions/download-artifact@v4 + with: + name: raw-bin-arm64 + path: raw-bin-arm64 + + - name: Create Universal Binaries + run: | + mkdir -p bin + for file in raw-bin-arm64/*; do + bin_name=$(basename "$file") + if [ -f "raw-bin-x86_64/$bin_name" ]; then + echo "Creating universal binary with lipo: $bin_name" + lipo -create "raw-bin-x86_64/$bin_name" "raw-bin-arm64/$bin_name" -output "bin/$bin_name" + chmod +x "bin/$bin_name" + else + echo "Warning: $bin_name not found in raw-bin-x86_64, copying arm64 version" + cp "$file" "bin/$bin_name" + fi + done + + - name: Verify Architecture & Smoke Tests + env: + ARGYLL_NOT_INTERACTIVE: "1" + ARGYLL_EXCLUDE_SERIAL_SCAN: "1" + run: | + echo "=== Binary Architecture Verification ===" + for file in bin/*; do + if [ -f "$file" ]; then + file "$file" + fi + done + echo "=== Smoke Tests ===" + ./bin/dispcal -? || true + ./bin/chartread -? || true + ./bin/colprof -? || true + ./bin/targen -? || true + + - name: Package Universal Release + run: | + export OSTYPE=darwin + export MACHTYPE=universal-apple-darwin + export HOSTTYPE=universal + export NO_BUILD=1 + ./makepackagebin.sh + TAG="${{ github.ref_name }}" + SHORT_SHA="$(git rev-parse --short HEAD)" + echo "SHORT_SHA=${SHORT_SHA}" >> $GITHUB_ENV + mv Argyll_V*_macOS_universal_bin.tgz "Argyll_${TAG}_${SHORT_SHA}_macOS_universal_bin.tgz" + + - name: Upload Universal Artifact + uses: actions/upload-artifact@v4 + with: + name: Argyll_${{ github.ref_name }}_${{ env.SHORT_SHA }}_macOS_universal_bin + path: Argyll_*_macOS_universal_bin.tgz + + - name: Upload Universal Release Asset + if: startsWith(github.ref, 'refs/tags/') + uses: softprops/action-gh-release@v2 + with: + name: Release ${{ github.ref_name }} + body: "Release ${{ github.ref_name }} built from commit ${{ github.sha }}" + files: Argyll_*_macOS_universal_bin.tgz diff --git a/doc/ChangesSummary.html b/doc/ChangesSummary.html index b5b5bbc..a4122bb 100755 --- a/doc/ChangesSummary.html +++ b/doc/ChangesSummary.html @@ -19,6 +19,7 @@

[V3.4.1 -> V3.5.0] 4th February 2026