Local build server - Xcode toolchain problem

I’m attempting to run a local standalone mac/iOS build server to reduce our reliance on the Defold-hosted one, but it’s not going smoothly.

The local_sdks folder exists, and other setup looks ok.After cloning the dev branch of extender and running run-standalone-local.sh I attempted to bundle an iOS project using a native extension.

I probably ought to be using the master branch but I get Gradle errors with that, and made more progress with the dev branch. Will try that again once I resolve this, which feels like a smaller problem.

The error is:
com.defold.extender.ExtenderException: java.io.IOException: Cannot run program "/usr/local/extender/platformsdk/XcodeDefault15.1.xctoolchain/usr/bin/swiftc" (in directory "/var/folders/ny/05wk595149v2zs2zz5jtwct40000gn/T/job3679290524677329754"): error=2, No such file or directory

That file (swiftc) is certainly missing, but it does exist within the Xcode app that the package was created from.
It is not present at Xcode/Contents/Developer/usr/bin
But it is present in usr/bin within Xcode/Contents/Developer/Toolchains/XcodeDefault.xctoolchain

The output of ./scripts/package/package_xcode_and_sdks.sh is pretty big - is there anything I can look for to see that everything in that step went well?

package_xcode_and_sdks.sh output
dri@dris-mbp-2 defold % ./scripts/package/package_xcode_and_sdks.sh
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs ~/Documents/GitHub/Defold/defold
FOUND ./iPhoneOS17.2.sdk -> iPhoneOS.sdk
Packaging iPhoneOS.sdk to /Users/dri/Documents/GitHub/Defold/defold/local_sdks/iPhoneOS17.2.sdk.tar.gz
EXTRA ARGS:
tar -cz -f /Users/dri/Documents/GitHub/Defold/defold/local_sdks/iPhoneOS17.2.sdk.tar.gz iPhoneOS.sdk
~/Documents/GitHub/Defold/defold
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs ~/Documents/GitHub/Defold/defold
FOUND ./iPhoneSimulator17.2.sdk -> iPhoneSimulator.sdk
Packaging iPhoneSimulator.sdk to /Users/dri/Documents/GitHub/Defold/defold/local_sdks/iPhoneSimulator17.2.sdk.tar.gz
EXTRA ARGS:
tar -cz -f /Users/dri/Documents/GitHub/Defold/defold/local_sdks/iPhoneSimulator17.2.sdk.tar.gz iPhoneSimulator.sdk
~/Documents/GitHub/Defold/defold
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs ~/Documents/GitHub/Defold/defold
FOUND ./MacOSX14.2.sdk -> MacOSX.sdk
Packaging MacOSX.sdk to /Users/dri/Documents/GitHub/Defold/defold/local_sdks/MacOSX14.2.sdk.tar.gz
EXTRA ARGS:
tar -cz -f /Users/dri/Documents/GitHub/Defold/defold/local_sdks/MacOSX14.2.sdk.tar.gz MacOSX.sdk
~/Documents/GitHub/Defold/defold
SPLIT XcodeDefault  and  xctoolchain
FOUND /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain -> XcodeDefault15.1.xctoolchain.darwin
/Applications/Xcode.app/Contents/Developer/Toolchains ~/Documents/GitHub/Defold/defold
Packaging XcodeDefault.xctoolchain to /Users/dri/Documents/GitHub/Defold/defold/local_sdks/XcodeDefault15.1.xctoolchain.darwin.tar.gz
EXTRA ARGS: --exclude=XcodeDefault.xctoolchain/usr/metal --exclude=XcodeDefault.xctoolchain/usr/lib/sourcekitdlnProc.framework --exclude=XcodeDefault.xctoolchain/usr/lib/sourcekitd.framework --exclude=XcodeDefault.xctoolchain/Developer/Platforms --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.5/appletvsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.5/appletvos --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.5/watchsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.5/watchos --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.0/appletvsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.0/appletvos --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.0/watchsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.0/watchos --exclude=XcodeDefault.xctoolchain/usr/lib/swift/appletvsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift/appletvos --exclude=XcodeDefault.xctoolchain/usr/lib/swift/watchsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift/watchos --exclude=XcodeDefault.xctoolchain/usr/bin/swiftc --exclude=XcodeDefault.xctoolchain/usr/bin/swift-test --exclude=XcodeDefault.xctoolchain/usr/bin/swift-symbolgraph-extract --exclude=XcodeDefault.xctoolchain/usr/bin/swift-stdlib-tool --exclude=XcodeDefault.xctoolchain/usr/bin/swift-run --exclude=XcodeDefault.xctoolchain/usr/bin/swift-plugin-server --exclude=XcodeDefault.xctoolchain/usr/bin/swift-package-registry --exclude=XcodeDefault.xctoolchain/usr/bin/swift-package-collection --exclude=XcodeDefault.xctoolchain/usr/bin/swift-package --exclude=XcodeDefault.xctoolchain/usr/bin/swift-help --exclude=XcodeDefault.xctoolchain/usr/bin/swift-frontend --exclude=XcodeDefault.xctoolchain/usr/bin/swift-experimental-sdk --exclude=XcodeDefault.xctoolchain/usr/bin/swift-driver --exclude=XcodeDefault.xctoolchain/usr/bin/swift-demangle --exclude=XcodeDefault.xctoolchain/usr/bin/swift-build-tool --exclude=XcodeDefault.xctoolchain/usr/bin/swift-build --exclude=XcodeDefault.xctoolchain/usr/bin/swift-api-extract --exclude=XcodeDefault.xctoolchain/usr/bin/swift-api-digester --exclude=XcodeDefault.xctoolchain/usr/bin/swift
tar -cz --exclude=XcodeDefault.xctoolchain/usr/metal --exclude=XcodeDefault.xctoolchain/usr/lib/sourcekitdlnProc.framework --exclude=XcodeDefault.xctoolchain/usr/lib/sourcekitd.framework --exclude=XcodeDefault.xctoolchain/Developer/Platforms --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.5/appletvsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.5/appletvos --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.5/watchsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.5/watchos --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.0/appletvsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.0/appletvos --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.0/watchsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.0/watchos --exclude=XcodeDefault.xctoolchain/usr/lib/swift/appletvsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift/appletvos --exclude=XcodeDefault.xctoolchain/usr/lib/swift/watchsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift/watchos --exclude=XcodeDefault.xctoolchain/usr/bin/swiftc --exclude=XcodeDefault.xctoolchain/usr/bin/swift-test --exclude=XcodeDefault.xctoolchain/usr/bin/swift-symbolgraph-extract --exclude=XcodeDefault.xctoolchain/usr/bin/swift-stdlib-tool --exclude=XcodeDefault.xctoolchain/usr/bin/swift-run --exclude=XcodeDefault.xctoolchain/usr/bin/swift-plugin-server --exclude=XcodeDefault.xctoolchain/usr/bin/swift-package-registry --exclude=XcodeDefault.xctoolchain/usr/bin/swift-package-collection --exclude=XcodeDefault.xctoolchain/usr/bin/swift-package --exclude=XcodeDefault.xctoolchain/usr/bin/swift-help --exclude=XcodeDefault.xctoolchain/usr/bin/swift-frontend --exclude=XcodeDefault.xctoolchain/usr/bin/swift-experimental-sdk --exclude=XcodeDefault.xctoolchain/usr/bin/swift-driver --exclude=XcodeDefault.xctoolchain/usr/bin/swift-demangle --exclude=XcodeDefault.xctoolchain/usr/bin/swift-build-tool --exclude=XcodeDefault.xctoolchain/usr/bin/swift-build --exclude=XcodeDefault.xctoolchain/usr/bin/swift-api-extract --exclude=XcodeDefault.xctoolchain/usr/bin/swift-api-digester --exclude=XcodeDefault.xctoolchain/usr/bin/swift -f /Users/dri/Documents/GitHub/Defold/defold/local_sdks/XcodeDefault15.1.xctoolchain.darwin.tar.gz XcodeDefault.xctoolchain
~/Documents/GitHub/Defold/defold
SPLIT XcodeDefault  and  xctoolchain
FOUND /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain -> XcodeDefault15.1.xctoolchain.linux
/Applications/Xcode.app/Contents/Developer/Toolchains ~/Documents/GitHub/Defold/defold
Packaging XcodeDefault.xctoolchain to /Users/dri/Documents/GitHub/Defold/defold/local_sdks/XcodeDefault15.1.xctoolchain.linux.tar.gz
EXTRA ARGS: --exclude=XcodeDefault.xctoolchain/usr/metal --exclude=XcodeDefault.xctoolchain/usr/lib/sourcekitdlnProc.framework --exclude=XcodeDefault.xctoolchain/usr/lib/sourcekitd.framework --exclude=XcodeDefault.xctoolchain/Developer/Platforms --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.5/appletvsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.5/appletvos --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.5/watchsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.5/watchos --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.0/appletvsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.0/appletvos --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.0/watchsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.0/watchos --exclude=XcodeDefault.xctoolchain/usr/lib/swift/appletvsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift/appletvos --exclude=XcodeDefault.xctoolchain/usr/lib/swift/watchsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift/watchos --exclude=XcodeDefault.xctoolchain/usr/lib/libtapi.dylib --exclude=XcodeDefault.xctoolchain/usr/lib/libswiftDemangle.dylib --exclude=XcodeDefault.xctoolchain/usr/lib/libcodedirectory.dylib --exclude=XcodeDefault.xctoolchain/usr/lib/libclang.dylib --exclude=XcodeDefault.xctoolchain/usr/lib/libSwiftDriver.dylib --exclude=XcodeDefault.xctoolchain/usr/lib/libLTO.dylib --exclude=XcodeDefault.xctoolchain/usr/lib/libIndexStore.dylib --exclude=XcodeDefault.xctoolchain/usr/bin --exclude=XcodeDefault.xctoolchain/usr/metal --exclude=XcodeDefault.xctoolchain/usr/lib/sourcekitdlnProc.framework --exclude=XcodeDefault.xctoolchain/usr/lib/sourcekitd.framework --exclude=XcodeDefault.xctoolchain/Developer/Platforms --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.5/appletvsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.5/appletvos --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.5/watchsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.5/watchos --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.0/appletvsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.0/appletvos --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.0/watchsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.0/watchos --exclude=XcodeDefault.xctoolchain/usr/lib/swift/appletvsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift/appletvos --exclude=XcodeDefault.xctoolchain/usr/lib/swift/watchsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift/watchos --exclude=XcodeDefault.xctoolchain/usr/bin/swiftc --exclude=XcodeDefault.xctoolchain/usr/bin/swift-test --exclude=XcodeDefault.xctoolchain/usr/bin/swift-symbolgraph-extract --exclude=XcodeDefault.xctoolchain/usr/bin/swift-stdlib-tool --exclude=XcodeDefault.xctoolchain/usr/bin/swift-run --exclude=XcodeDefault.xctoolchain/usr/bin/swift-plugin-server --exclude=XcodeDefault.xctoolchain/usr/bin/swift-package-registry --exclude=XcodeDefault.xctoolchain/usr/bin/swift-package-collection --exclude=XcodeDefault.xctoolchain/usr/bin/swift-package --exclude=XcodeDefault.xctoolchain/usr/bin/swift-help --exclude=XcodeDefault.xctoolchain/usr/bin/swift-frontend --exclude=XcodeDefault.xctoolchain/usr/bin/swift-experimental-sdk --exclude=XcodeDefault.xctoolchain/usr/bin/swift-driver --exclude=XcodeDefault.xctoolchain/usr/bin/swift-demangle --exclude=XcodeDefault.xctoolchain/usr/bin/swift-build-tool --exclude=XcodeDefault.xctoolchain/usr/bin/swift-build --exclude=XcodeDefault.xctoolchain/usr/bin/swift-api-extract --exclude=XcodeDefault.xctoolchain/usr/bin/swift-api-digester --exclude=XcodeDefault.xctoolchain/usr/bin/swift
tar -cz --exclude=XcodeDefault.xctoolchain/usr/metal --exclude=XcodeDefault.xctoolchain/usr/lib/sourcekitdlnProc.framework --exclude=XcodeDefault.xctoolchain/usr/lib/sourcekitd.framework --exclude=XcodeDefault.xctoolchain/Developer/Platforms --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.5/appletvsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.5/appletvos --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.5/watchsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.5/watchos --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.0/appletvsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.0/appletvos --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.0/watchsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.0/watchos --exclude=XcodeDefault.xctoolchain/usr/lib/swift/appletvsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift/appletvos --exclude=XcodeDefault.xctoolchain/usr/lib/swift/watchsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift/watchos --exclude=XcodeDefault.xctoolchain/usr/lib/libtapi.dylib --exclude=XcodeDefault.xctoolchain/usr/lib/libswiftDemangle.dylib --exclude=XcodeDefault.xctoolchain/usr/lib/libcodedirectory.dylib --exclude=XcodeDefault.xctoolchain/usr/lib/libclang.dylib --exclude=XcodeDefault.xctoolchain/usr/lib/libSwiftDriver.dylib --exclude=XcodeDefault.xctoolchain/usr/lib/libLTO.dylib --exclude=XcodeDefault.xctoolchain/usr/lib/libIndexStore.dylib --exclude=XcodeDefault.xctoolchain/usr/bin --exclude=XcodeDefault.xctoolchain/usr/metal --exclude=XcodeDefault.xctoolchain/usr/lib/sourcekitdlnProc.framework --exclude=XcodeDefault.xctoolchain/usr/lib/sourcekitd.framework --exclude=XcodeDefault.xctoolchain/Developer/Platforms --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.5/appletvsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.5/appletvos --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.5/watchsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.5/watchos --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.0/appletvsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.0/appletvos --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.0/watchsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift-5.0/watchos --exclude=XcodeDefault.xctoolchain/usr/lib/swift/appletvsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift/appletvos --exclude=XcodeDefault.xctoolchain/usr/lib/swift/watchsimulator --exclude=XcodeDefault.xctoolchain/usr/lib/swift/watchos --exclude=XcodeDefault.xctoolchain/usr/bin/swiftc --exclude=XcodeDefault.xctoolchain/usr/bin/swift-test --exclude=XcodeDefault.xctoolchain/usr/bin/swift-symbolgraph-extract --exclude=XcodeDefault.xctoolchain/usr/bin/swift-stdlib-tool --exclude=XcodeDefault.xctoolchain/usr/bin/swift-run --exclude=XcodeDefault.xctoolchain/usr/bin/swift-plugin-server --exclude=XcodeDefault.xctoolchain/usr/bin/swift-package-registry --exclude=XcodeDefault.xctoolchain/usr/bin/swift-package-collection --exclude=XcodeDefault.xctoolchain/usr/bin/swift-package --exclude=XcodeDefault.xctoolchain/usr/bin/swift-help --exclude=XcodeDefault.xctoolchain/usr/bin/swift-frontend --exclude=XcodeDefault.xctoolchain/usr/bin/swift-experimental-sdk --exclude=XcodeDefault.xctoolchain/usr/bin/swift-driver --exclude=XcodeDefault.xctoolchain/usr/bin/swift-demangle --exclude=XcodeDefault.xctoolchain/usr/bin/swift-build-tool --exclude=XcodeDefault.xctoolchain/usr/bin/swift-build --exclude=XcodeDefault.xctoolchain/usr/bin/swift-api-extract --exclude=XcodeDefault.xctoolchain/usr/bin/swift-api-digester --exclude=XcodeDefault.xctoolchain/usr/bin/swift -f /Users/dri/Documents/GitHub/Defold/defold/local_sdks/XcodeDefault15.1.xctoolchain.linux.tar.gz XcodeDefault.xctoolchain
~/Documents/GitHub/Defold/defold
PACKAGES
-rw-r--r--@ 1 dri  staff   88894886 29 Feb 21:35 /Users/dri/Documents/GitHub/Defold/defold/local_sdks/MacOSX14.2.sdk.tar.gz
-rw-r--r--@ 1 dri  staff  779743709 29 Feb 21:36 /Users/dri/Documents/GitHub/Defold/defold/local_sdks/XcodeDefault15.1.xctoolchain.darwin.tar.gz
-rw-r--r--@ 1 dri  staff  396743677 29 Feb 21:37 /Users/dri/Documents/GitHub/Defold/defold/local_sdks/XcodeDefault15.1.xctoolchain.linux.tar.gz
-rw-r--r--@ 1 dri  staff   25792311 29 Feb 21:35 /Users/dri/Documents/GitHub/Defold/defold/local_sdks/iPhoneOS17.2.sdk.tar.gz
-rw-r--r--@ 1 dri  staff   25621722 29 Feb 21:35 /Users/dri/Documents/GitHub/Defold/defold/local_sdks/iPhoneSimulator17.2.sdk.tar.gz

It looks like you are using an old package script. Since November the package script should include swift compiler etc:

Can you please check which version you’re using?

You’re right, my defold/defold working directory was stale.

I hit another problem later, which was making sure I had the correct versions of Xcode / iOS SDK packaged. If I did this regularly then the local_sdks folder would over time accumulate all the required packages, but to package up Xcode 14.2 and Xcode 15.0 as a one-off step required a few additional downloads.

There was also some confusion caused by this issue which I submitted a fix for.

And all working now.

1 Like