From fb5b7f7434fb4c82b72db3dbe6b68d6143f5e76c Mon Sep 17 00:00:00 2001 From: Leo Date: Sat, 19 Sep 2026 09:19:47 -0700 Subject: [PATCH 1/3] build: skip unchanged diff sidecar builds The phase already declares its Rust source inputs and generated binary output, so Xcode can avoid rerunning the release sidecar build for unrelated app edits. Prior-art: teamleaderleo/Glaeda and teamleaderleo/Tact --- cmux.xcodeproj/project.pbxproj | 4 ++-- scripts/build-diff-sidecar.sh | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/cmux.xcodeproj/project.pbxproj b/cmux.xcodeproj/project.pbxproj index 426ba041cd90..5a6a2daacf2a 100644 --- a/cmux.xcodeproj/project.pbxproj +++ b/cmux.xcodeproj/project.pbxproj @@ -12297,7 +12297,6 @@ }; D1FF50000000000000000001 /* Build Diff Sidecar */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); @@ -12322,10 +12321,11 @@ ); outputPaths = ( "$(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/bin/cmux-diff-sidecar", + "$(TARGET_TEMP_DIR)/cmux-diff-sidecar.arch-$(ARCHS).min-$(MACOSX_DEPLOYMENT_TARGET).stamp", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/scripts/build-diff-sidecar.sh\"\n"; + shellScript = "CMUX_DIFF_SIDECAR_ARCHS=\"${ARCHS}\" CMUX_DIFF_SIDECAR_MIN_MACOS=\"${MACOSX_DEPLOYMENT_TARGET}\" CMUX_DIFF_SIDECAR_STAMP=\"${TARGET_TEMP_DIR}/cmux-diff-sidecar.arch-${ARCHS}.min-${MACOSX_DEPLOYMENT_TARGET}.stamp\" \"${SRCROOT}/scripts/build-diff-sidecar.sh\"\n"; }; A9E030000000000000000009 /* Reject Bundled Provider Binaries */ = { isa = PBXShellScriptBuildPhase; diff --git a/scripts/build-diff-sidecar.sh b/scripts/build-diff-sidecar.sh index 13ec8d1689fd..53e517e18d3b 100755 --- a/scripts/build-diff-sidecar.sh +++ b/scripts/build-diff-sidecar.sh @@ -96,3 +96,17 @@ chmod +x "$destination" if [[ "${CODE_SIGNING_ALLOWED:-YES}" != "NO" && -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" ]]; then codesign --force --sign "$EXPANDED_CODE_SIGN_IDENTITY" "$destination" >/dev/null fi + +# Xcode's dependency-analysis output is keyed by the normal architecture and +# deployment-target settings. The Xcode phase pins the script overrides to +# those same build settings before invoking this script. The stamp is +# intentionally optional so direct script callers retain override support. +if [[ -n "${CMUX_DIFF_SIDECAR_STAMP:-}" ]]; then + stamp_tmp="${CMUX_DIFF_SIDECAR_STAMP}.tmp.$$" + { + printf 'requested_archs=%s\n' "$requested_archs" + printf 'min_macos=%s\n' "${CMUX_DIFF_SIDECAR_MIN_MACOS:-14.0}" + shasum -a 256 "$destination" + } > "$stamp_tmp" + mv -f "$stamp_tmp" "$CMUX_DIFF_SIDECAR_STAMP" +fi From c72c034a442a885b896c59148d5da684593b988d Mon Sep 17 00:00:00 2001 From: Leo Date: Sat, 19 Sep 2026 09:19:52 -0700 Subject: [PATCH 2/3] build: harden diff sidecar stamp writes --- scripts/build-diff-sidecar.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/scripts/build-diff-sidecar.sh b/scripts/build-diff-sidecar.sh index 53e517e18d3b..3eb644445b21 100755 --- a/scripts/build-diff-sidecar.sh +++ b/scripts/build-diff-sidecar.sh @@ -102,11 +102,16 @@ fi # those same build settings before invoking this script. The stamp is # intentionally optional so direct script callers retain override support. if [[ -n "${CMUX_DIFF_SIDECAR_STAMP:-}" ]]; then - stamp_tmp="${CMUX_DIFF_SIDECAR_STAMP}.tmp.$$" + stamp_tmp="$(mktemp "${CMUX_DIFF_SIDECAR_STAMP}.tmp.XXXXXX")" + cleanup_stamp_tmp() { + [[ -e "$stamp_tmp" ]] && rm -f "$stamp_tmp" + } + trap cleanup_stamp_tmp EXIT { printf 'requested_archs=%s\n' "$requested_archs" printf 'min_macos=%s\n' "${CMUX_DIFF_SIDECAR_MIN_MACOS:-14.0}" shasum -a 256 "$destination" } > "$stamp_tmp" mv -f "$stamp_tmp" "$CMUX_DIFF_SIDECAR_STAMP" + trap - EXIT fi From 0a824a1331fc24ccc850989274f68e9435deab56 Mon Sep 17 00:00:00 2001 From: Leo Date: Sat, 19 Sep 2026 09:19:57 -0700 Subject: [PATCH 3/3] fix: retire stale diff-sidecar configuration stamps --- cmux.xcodeproj/project.pbxproj | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cmux.xcodeproj/project.pbxproj b/cmux.xcodeproj/project.pbxproj index 5a6a2daacf2a..517575010c83 100644 --- a/cmux.xcodeproj/project.pbxproj +++ b/cmux.xcodeproj/project.pbxproj @@ -12325,8 +12325,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "CMUX_DIFF_SIDECAR_ARCHS=\"${ARCHS}\" CMUX_DIFF_SIDECAR_MIN_MACOS=\"${MACOSX_DEPLOYMENT_TARGET}\" CMUX_DIFF_SIDECAR_STAMP=\"${TARGET_TEMP_DIR}/cmux-diff-sidecar.arch-${ARCHS}.min-${MACOSX_DEPLOYMENT_TARGET}.stamp\" \"${SRCROOT}/scripts/build-diff-sidecar.sh\"\n"; - }; + shellScript = "rm -f \"${TARGET_TEMP_DIR}\"/cmux-diff-sidecar.arch-*.min-*.stamp\nCMUX_DIFF_SIDECAR_ARCHS=\"${ARCHS}\" CMUX_DIFF_SIDECAR_MIN_MACOS=\"${MACOSX_DEPLOYMENT_TARGET}\" CMUX_DIFF_SIDECAR_STAMP=\"${TARGET_TEMP_DIR}/cmux-diff-sidecar.arch-${ARCHS}.min-${MACOSX_DEPLOYMENT_TARGET}.stamp\" \"${SRCROOT}/scripts/build-diff-sidecar.sh\"\n"; }; A9E030000000000000000009 /* Reject Bundled Provider Binaries */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1;