Jerry Lin
Jerry Lin

Reputation: 51

XCode 13 compiling old SwiftUI with error of Command CompileSwiftSources failed with a nonzero exit code

I can build, run, and archive the same SwiftUI project by use of previous Xcode version with no longer any problem, but the issue is always occurred since upgraded to XCode 13. In fact, it's stuck on building....and the error is shown as long as clicking stop button.

CompileSwiftSources normal arm64 com.apple.xcode.tools.swift.compiler (in target 'FML' from project 'FML')
cd /Users/jerry/Bitbucket/fightmenios
export DEVELOPER_DIR\=/Applications/Xcode.app/Contents/Developer
export SDKROOT\=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc -incremental -module-name FML -Onone -enable-batch-mode -enforce-exclusivity\=checked @/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/FML.build/Debug-iphoneos/FML.build/Objects-normal/arm64/FML.SwiftFileList -DDEBUG -Xcc -fmodule-map-file\=/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/GeneratedModuleMaps-iphoneos/GoogleUtilities_UserDefaults.modulemap -Xcc -fmodule-map-file\=/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/GeneratedModuleMaps-iphoneos/FirebaseInstanceID.modulemap -Xcc -fmodule-map-file\=/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/GeneratedModuleMaps-iphoneos/FirebaseInstallations.modulemap -Xcc -fmodule-map-file\=/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/GeneratedModuleMaps-iphoneos/FirebaseMessaging.modulemap -Xcc -fmodule-map-file\=/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/GeneratedModuleMaps-iphoneos/SDWebImage.modulemap -Xcc -fmodule-map-file\=/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/GeneratedModuleMaps-iphoneos/GoogleDataTransport.modulemap -Xcc -fmodule-map-file\=/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/GeneratedModuleMaps-iphoneos/nanopb.modulemap -Xcc -fmodule-map-file\=/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/GeneratedModuleMaps-iphoneos/GoogleUtilities_Network.modulemap -Xcc -fmodule-map-file\=/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/GeneratedModuleMaps-iphoneos/GoogleUtilities_Reachability.modulemap -Xcc -fmodule-map-file\=/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/GeneratedModuleMaps-iphoneos/GoogleUtilities_NSData.modulemap -Xcc -fmodule-map-file\=/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/GeneratedModuleMaps-iphoneos/GoogleUtilities_Logger.modulemap -Xcc -fmodule-map-file\=/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/GeneratedModuleMaps-iphoneos/GoogleUtilities_Environment.modulemap -Xcc -fmodule-map-file\=/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/GeneratedModuleMaps-iphoneos/GoogleUtilities_AppDelegateSwizzler.modulemap -Xcc -fmodule-map-file\=/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/GeneratedModuleMaps-iphoneos/FirebaseCore.modulemap -Xcc -fmodule-map-file\=/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/GeneratedModuleMaps-iphoneos/FirebaseCoreDiagnostics.modulemap -Xcc -fmodule-map-file\=/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/GeneratedModuleMaps-iphoneos/FirebaseAuth.modulemap -sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS15.0.sdk -target arm64-apple-ios14.0 -g -module-cache-path /Users/jerry/Library/Developer/Xcode/DerivedData/ModuleCache.noindex -Xfrontend -serialize-debugging-options -embed-bitcode-marker -enable-testing -index-store-path /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Index/DataStore -swift-version 5 -I /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Products/Debug-iphoneos -F /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Products/Debug-iphoneos/PackageFrameworks -F /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Products/Debug-iphoneos/PackageFrameworks -F /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Products/Debug-iphoneos/PackageFrameworks -F /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Products/Debug-iphoneos/PackageFrameworks -F /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Products/Debug-iphoneos/PackageFrameworks -F /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Products/Debug-iphoneos/PackageFrameworks -F /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Products/Debug-iphoneos/PackageFrameworks -F /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Products/Debug-iphoneos/PackageFrameworks -F /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Products/Debug-iphoneos/PackageFrameworks -F /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Products/Debug-iphoneos/PackageFrameworks -F /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Products/Debug-iphoneos/PackageFrameworks -F /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Products/Debug-iphoneos/PackageFrameworks -F /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Products/Debug-iphoneos/PackageFrameworks -F /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Products/Debug-iphoneos/PackageFrameworks -F /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Products/Debug-iphoneos/PackageFrameworks -F /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Products/Debug-iphoneos/PackageFrameworks -F /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Products/Debug-iphoneos/PackageFrameworks -F /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Products/Debug-iphoneos/PackageFrameworks -F /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Products/Debug-iphoneos/PackageFrameworks -F /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Products/Debug-iphoneos/PackageFrameworks -F /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Products/Debug-iphoneos/PackageFrameworks -F /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Products/Debug-iphoneos/PackageFrameworks -F /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Products/Debug-iphoneos -c -j8 -output-file-map /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/FML.build/Debug-iphoneos/FML.build/Objects-normal/arm64/FML-OutputFileMap.json -parseable-output -serialize-diagnostics -emit-dependencies -emit-module -emit-module-path /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/FML.build/Debug-iphoneos/FML.build/Objects-normal/arm64/FML.swiftmodule -Xcc -I/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/FML.build/Debug-iphoneos/FML.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/FML.build/Debug-iphoneos/FML.build/FML-generated-files.hmap -Xcc -I/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/FML.build/Debug-iphoneos/FML.build/FML-own-target-headers.hmap -Xcc -I/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/FML.build/Debug-iphoneos/FML.build/FML-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/FML.build/Debug-iphoneos/FML.build/all-product-headers.yaml -Xcc -iquote -Xcc /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/FML.build/Debug-iphoneos/FML.build/FML-project-headers.hmap -Xcc -I/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/SourcePackages/checkouts/GoogleUtilities/GoogleUtilities/UserDefaults/Public -Xcc -I/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/SourcePackages/checkouts/firebase-ios-sdk/Firebase/InstanceID/Public -Xcc -I/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/SourcePackages/checkouts/firebase-ios-sdk/FirebaseInstallations/Source/Library/Public -Xcc -I/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/SourcePackages/checkouts/firebase-ios-sdk/FirebaseMessaging/Sources/Public -Xcc -I/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/SourcePackages/checkouts/SDWebImage/SDWebImage/include -Xcc -I/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/SourcePackages/checkouts/GoogleDataTransport/GoogleDataTransport/GDTCORLibrary/Public -Xcc -I/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/SourcePackages/checkouts/nanopb/spm_headers -Xcc -I/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/SourcePackages/checkouts/promises/Sources/FBLPromises/include -Xcc -I/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/SourcePackages/checkouts/GoogleUtilities/GoogleUtilities/Network/Public -Xcc -I/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/SourcePackages/checkouts/GoogleUtilities/GoogleUtilities/Reachability/Public -Xcc -I/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/SourcePackages/checkouts/GoogleUtilities/GoogleUtilities/NSData+zlib/Public -Xcc -I/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/SourcePackages/checkouts/GoogleUtilities/GoogleUtilities/Logger/Public -Xcc -I/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/SourcePackages/checkouts/GoogleUtilities/GoogleUtilities/Environment/Public -Xcc -I/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/SourcePackages/checkouts/GoogleUtilities/GoogleUtilities/AppDelegateSwizzler/Public -Xcc -I/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/SourcePackages/checkouts/gtm-session-fetcher/Source/SwiftPackage -Xcc -I/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/SourcePackages/checkouts/firebase-ios-sdk/FirebaseCore/Sources/Public -Xcc -I/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/SourcePackages/checkouts/firebase-ios-sdk/Firebase/CoreDiagnostics/FIRCDLibrary -Xcc -I/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/SourcePackages/checkouts/firebase-ios-sdk/CoreOnly/Sources -Xcc -I/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/SourcePackages/checkouts/firebase-ios-sdk/FirebaseAuth/Sources/Public -Xcc -I/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Products/Debug-iphoneos/include -Xcc -I/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/FML.build/Debug-iphoneos/FML.build/DerivedSources-normal/arm64 -Xcc -I/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/FML.build/Debug-iphoneos/FML.build/DerivedSources/arm64 -Xcc -I/Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/FML.build/Debug-iphoneos/FML.build/DerivedSources -Xcc -DDEBUG\=1 -emit-objc-header -emit-objc-header-path /Users/jerry/Library/Developer/Xcode/DerivedData/FML-eemcqzlghksubkadinjahagclbmc/Build/Intermediates.noindex/FML.build/Debug-iphoneos/FML.build/Objects-normal/arm64/FML-Swift.h -working-directory /Users/jerry/Bitbucket/fightmenios

Command CompileSwiftSources failed with a nonzero exit code

Though I found Command CompileSwiftSources failed with a nonzero exit code XCode 13 however, my project doesn't use Pods at all

Upvotes: 4

Views: 3885

Answers (3)

Alex Peterson
Alex Peterson

Reputation: 96

My issue was as Jerry Lin states. I had a complicated switch statement within my SwiftUI view which apparently was too much for the compiler to handle, causing it to get stuck during the build. Hope this helps!

Upvotes: 0

Jerry Lin
Jerry Lin

Reputation: 51

I kept the compiler running till the end (around hours), and showed error as " The compiler is unable to type-check this expression in reasonable time。". Well, I googled the error and found there're too many "if" operators, and causing too complicated for SWIFT to handle. So, changing most of "if" in a function like this https://www.hackingwithswift.com/forums/swiftui/the-compiler-is-unable-to-type-check-this-expression-in-reasonable-time/12595

Upvotes: 1

phnmnn
phnmnn

Reputation: 13240

Finally I found the solution. Source: Fixing the dreaded SwiftUI paused previews

What happened

For some reason, previews are building in a non-standard environment, and my shell script was failing. Xcode 13 however didn’t check the error code after running the script, but it continued with a compile phase, and then showed the script’s error code as an error code coming from build step. I guess this can be very confusing in lot of other cases when you have a failing pre-build step. Another issue is that I was copying the files into the project with cp, and this always changed the file modification time, leading Xcode to rebuild the project and invalidate the caches every time the build script ran. Here is what Apple said about that (FB9634311):

If a project has a shell script build phase that modifies the source, what happens is:

  1. Previews kicks off a build
  2. The build modifies the project’s source
  3. Previews detects the changes to the project’s source and kicks off another update
  4. But the build from # 1 didn’t finish, so we cancel and do it again
  5. Which then modifies the project’s source again…
  6. (and the earth melts) While the breakage is surfaced the worst with previews, it’s also silently and constantly invalidating your build cache and making incremental builds impossible for the build system, so it’s a good thing to fix in the long term.

Solution, part 1: skip ‘run script‘ phase when building previews

You can detect if the project is being built in preview mode, and handle it in script. In my case, I would assume that the changes were made in preceding build already, so I just terminated the script prematurely. And to be extra sure, I cleaned up the error code at the end of the script:

#!/usr/bin/env bash

if [ "${ENABLE_PREVIEWS}" = "YES" ]; then
  echo "Previews enabled, quitting to prevent 'preview paused'."
  exit 0;
fi

# ... rest of the script ...

# Success? Clear the exit code that might have been left here by a last command of the script.
exit 0

Solution, part 2: use rsync -t instead of cp

Instead of cp, which modifies the destination file’s modification timestamp, and causes Xcode to think that the file changed, I used rsync -t (it’s just a drop-in replacement: cp sourceFile destinationFile → rsync -t sourceFile destinationFile). This preserves the original file’s timestamp, so when a build step is run with a same parameters as before, the file doesn’t appear changed, and Xcode is happy reusing it’s caches.

Upvotes: 2

Related Questions