Feature: Build and publish macOS Universal Binary release archive #28
@@ -64,6 +64,12 @@ jobs:
|
|||||||
echo "SHORT_SHA=${SHORT_SHA}" >> $GITHUB_ENV
|
echo "SHORT_SHA=${SHORT_SHA}" >> $GITHUB_ENV
|
||||||
mv Argyll_V*_${{ matrix.artifact }}.tgz "Argyll_${TAG}_${SHORT_SHA}_${{ matrix.artifact }}.tgz"
|
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
|
- name: Upload Artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
@@ -77,3 +83,83 @@ jobs:
|
|||||||
name: Release ${{ github.ref_name }}
|
name: Release ${{ github.ref_name }}
|
||||||
body: "Release ${{ github.ref_name }} built from commit ${{ github.sha }}"
|
body: "Release ${{ github.ref_name }} built from commit ${{ github.sha }}"
|
||||||
files: Argyll_*_${{ matrix.artifact }}.tgz
|
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
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
<h1>[V3.4.1 -> V3.5.0] 4th February 2026<br>
|
<h1>[V3.4.1 -> V3.5.0] 4th February 2026<br>
|
||||||
</h1>
|
</h1>
|
||||||
<ul>
|
<ul>
|
||||||
|
<li>Added macOS Universal Binary release archive (Intel x86_64 + Apple Silicon arm64).</li>
|
||||||
<li>Fixed non-blocking stdin polling deadlock on MSWindows anonymous pipes when running interactive measurement tools in subprocess mode.</li>
|
<li>Fixed non-blocking stdin polling deadlock on MSWindows anonymous pipes when running interactive measurement tools in subprocess mode.</li>
|
||||||
<li>Added -d switch to printtarg to allow custom chart label strings or omit labelling entirely.</li>
|
<li>Added -d switch to printtarg to allow custom chart label strings or omit labelling entirely.</li>
|
||||||
<li>Added MSWindows ARM release.</li>
|
<li>Added MSWindows ARM release.</li>
|
||||||
|
|||||||
+17
-8
@@ -113,6 +113,13 @@ else if [ "${OSTYPE#*darwin*}" != "$OSTYPE" ] ; then
|
|||||||
echo "We're on MacOS arm64!"
|
echo "We're on MacOS arm64!"
|
||||||
PACKAGE=${PRODUCT}_V${VERSION}_macOS_arm64_bin.tgz
|
PACKAGE=${PRODUCT}_V${VERSION}_macOS_arm64_bin.tgz
|
||||||
export MACOSX_DEPLOYMENT_TARGET="11.0" # Minimum target platform version
|
export MACOSX_DEPLOYMENT_TARGET="11.0" # Minimum target platform version
|
||||||
|
else if [ X$HOSTTYPE = "Xuniversal" \
|
||||||
|
-o X$MACHTYPE = "Xuniversal-apple-darwin" \
|
||||||
|
-o X$COMPILER = "XUNIVERSAL" ] ; then
|
||||||
|
echo "We're on MacOS Universal!"
|
||||||
|
PACKAGE=${PRODUCT}_V${VERSION}_macOS_universal_bin.tgz
|
||||||
|
export MACOSX_DEPLOYMENT_TARGET="10.15" # Minimum target platform version
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -145,23 +152,25 @@ fi
|
|||||||
|
|
||||||
echo "Making GNU $PRODUCT binary distribution $PACKAGE for Version $VERSION"
|
echo "Making GNU $PRODUCT binary distribution $PACKAGE for Version $VERSION"
|
||||||
|
|
||||||
# Clean up so we get a solid build
|
if [ X$NO_BUILD = "X" ] ; then
|
||||||
# .sp come from profile, .cht from scanin and .ti3 from spectro
|
# Clean up so we get a solid build
|
||||||
rm -f bin/*.exe bin/*.dll
|
# .sp come from profile, .cht from scanin and .ti3 from spectro
|
||||||
rm -f ref/*.sp ref/*.cht ref/*.ti2
|
rm -f bin/*.exe bin/*.dll
|
||||||
|
rm -f ref/*.sp ref/*.cht ref/*.ti2
|
||||||
|
|
||||||
if [ X$CROSS_COMPILE = "X" ] ; then # If not cross compiling
|
if [ X$CROSS_COMPILE = "X" ] ; then # If not cross compiling
|
||||||
echo "Cleaning before build ..."
|
echo "Cleaning before build ..."
|
||||||
if ! jam -fJambase -sBUILTIN_TIFF=true -sBUILTIN_JPEG=true -sBUILTIN_PNG=true -sBUILTIN_Z=true -sBUILTIN_SSL=true clean ; then
|
if ! jam -fJambase -sBUILTIN_TIFF=true -sBUILTIN_JPEG=true -sBUILTIN_PNG=true -sBUILTIN_Z=true -sBUILTIN_SSL=true clean ; then
|
||||||
echo "Clean failed!"
|
echo "Clean failed!"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Make sure it's built and installed
|
# Make sure it's built and installed
|
||||||
if ! jam -q -fJambase -j${NUMBER_OF_PROCESSORS:-1} -sBUILTIN_TIFF=true -sBUILTIN_JPEG=true -sBUILTIN_PNG=true -sBUILTIN_Z=true -sBUILTIN_SSL=true install ; then
|
if ! jam -q -fJambase -j${NUMBER_OF_PROCESSORS:-1} -sBUILTIN_TIFF=true -sBUILTIN_JPEG=true -sBUILTIN_PNG=true -sBUILTIN_Z=true -sBUILTIN_SSL=true install ; then
|
||||||
echo "Build failed!"
|
echo "Build failed!"
|
||||||
exit 1
|
exit 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
rm -rf $TOPDIR
|
rm -rf $TOPDIR
|
||||||
|
|||||||
Reference in New Issue
Block a user