From c9c572325d47b5616a6cf65a2296d2fc61eb052e Mon Sep 17 00:00:00 2001 From: pszsh Date: Thu, 26 Mar 2026 18:14:24 -0700 Subject: [PATCH] fixed a bug with the build script which prior to had a specific version of the swift toolchain as a strict requirment --- .gitignore | 3 +++ build.sh | 33 ++++++++++++++++++++++++++++++++- debug.sh | 33 ++++++++++++++++++++++++++++++++- 3 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2011f61 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +target/ +build/ +.DS_Store* diff --git a/build.sh b/build.sh index 8bed7de..a456251 100755 --- a/build.sh +++ b/build.sh @@ -7,6 +7,37 @@ APP_BUNDLE="$BUILD_DIR/$APP_NAME.app" CONTENTS="$APP_BUNDLE/Contents" ICON_SVG="resources/shelf.svg" +find_sdk() { + local tmp="/tmp/shelf_sdk_check_$$.swift" + printf 'let _=0\n' > "$tmp" + + local default_sdk + default_sdk="$(xcrun --show-sdk-path 2>/dev/null)" + + if swiftc -sdk "$default_sdk" -typecheck "$tmp" 2>/dev/null; then + rm -f "$tmp" + echo "$default_sdk" + return + fi + + local sdk_dir + sdk_dir="$(dirname "$default_sdk")" + + for sdk in $(ls -rd "$sdk_dir"/MacOSX[0-9]*.sdk 2>/dev/null); do + if swiftc -sdk "$sdk" -typecheck "$tmp" 2>/dev/null; then + rm -f "$tmp" + echo "$sdk" + return + fi + done + + rm -f "$tmp" + echo "Error: no macOS SDK compatible with installed Swift compiler" >&2 + exit 1 +} + +MACOS_SDK="$(find_sdk)" + rm -rf "$APP_BUNDLE" mkdir -p "$CONTENTS/MacOS" "$CONTENTS/Resources" @@ -19,7 +50,7 @@ core/target/release/shelf-icon "$ICON_SVG" "$CONTENTS/Resources/AppIcon.icns" -- # Build Swift swiftc \ -target arm64-apple-macosx14.0 \ - -sdk "$(xcrun --show-sdk-path)" \ + -sdk "$MACOS_SDK" \ -import-objc-header bridge/shelf_core.h \ -L core/target/release \ -lshelf_core \ diff --git a/debug.sh b/debug.sh index 18b3314..e284079 100755 --- a/debug.sh +++ b/debug.sh @@ -7,6 +7,37 @@ APP_BUNDLE="$BUILD_DIR/$APP_NAME.app" CONTENTS="$APP_BUNDLE/Contents" ICON_SVG="resources/shelf.svg" +find_sdk() { + local tmp="/tmp/shelf_sdk_check_$$.swift" + printf 'let _=0\n' > "$tmp" + + local default_sdk + default_sdk="$(xcrun --show-sdk-path 2>/dev/null)" + + if swiftc -sdk "$default_sdk" -typecheck "$tmp" 2>/dev/null; then + rm -f "$tmp" + echo "$default_sdk" + return + fi + + local sdk_dir + sdk_dir="$(dirname "$default_sdk")" + + for sdk in $(ls -rd "$sdk_dir"/MacOSX[0-9]*.sdk 2>/dev/null); do + if swiftc -sdk "$sdk" -typecheck "$tmp" 2>/dev/null; then + rm -f "$tmp" + echo "$sdk" + return + fi + done + + rm -f "$tmp" + echo "Error: no macOS SDK compatible with installed Swift compiler" >&2 + exit 1 +} + +MACOS_SDK="$(find_sdk)" + pkill -f "Shelf.app" 2>/dev/null || true rm -rf "$APP_BUNDLE" @@ -21,7 +52,7 @@ core/target/release/shelf-icon "$ICON_SVG" "$CONTENTS/Resources/AppIcon.icns" -- # Build Swift swiftc \ -target arm64-apple-macosx14.0 \ - -sdk "$(xcrun --show-sdk-path)" \ + -sdk "$MACOS_SDK" \ -import-objc-header bridge/shelf_core.h \ -L core/target/release \ -lshelf_core \