Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Carthage fails to build Nimble: cannot import <Nimble/Nimble-Swift.h> for obj-c file for Xcode bots

Summary When the build server downloads the project and tires to call carthage bootstrap/update on the project it fails to build Nimble.

Details I'll manually download the source and run the following

carthage bootstrap Quick Nimble --platform ios --cache-builds
# or 
carthage update Quick Nimble --platform ios --cache-builds

Should this occur in the ~/Projects directory all is fine and Carthage is happy.

Should I allow Xcode Bots to download and run it, it fails. So I log into the server and build out of the build directory Xcode Bots has created, which is

~/Library/Caches/XCSBuilder/Bots/8e543991f99daae3015cbc6c419dba56/Source/myProject and I get the following in the log

/***someUserDirectory***/Library/Caches/XCSBuilder/Bots/8e543991f99daae3015cbc6c419dba56/Source/airlib/Carthage/Checkouts/Nimble/Sources/NimbleObjectiveC/NMBStringify.m:6:9: fatal error: 'Nimble/Nimble-Swift.h' file not found
#import <Nimble/Nimble-Swift.h>
        ^~~~~~~~~~~~~~~~~~~~~~~
1 error generated.

Here's the compileC command

CompileC /***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/Build/Intermediates.noindex/Nimble.build/Release-iphonesimulator/Nimble-iOS.build/Objects-normal/x86_64/NMBStringify.o /***someUserDirectory***/Library/Caches/XCSBuilder/Bots/8e543991f99daae3015cbc6c419dba56/Source/airlib/Carthage/Checkouts/Nimble/Sources/NimbleObjectiveC/NMBStringify.m normal x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler (in target: Nimble-iOS)
    cd /***someUserDirectory***/Library/Caches/XCSBuilder/Bots/8e543991f99daae3015cbc6c419dba56/Source/airlib/Carthage/Checkouts/Nimble
    export LANG=en_US.US-ASCII
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x objective-c -arch x86_64 -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -std=gnu99 -fobjc-arc -fmodules -gmodules -fmodules-cache-path=/***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/ModuleCache.noindex -fno-autolink -fmodules-prune-interval=86400 -fmodules-prune-after=345600 -fbuild-session-file=/***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/ModuleCache.noindex/Session.modulevalidation -fmodules-validate-once-per-build-session -Wnon-modular-include-in-framework-module -Werror=non-modular-include-in-framework-module -fmodule-name=Nimble -fapplication-extension -Wno-trigraphs -fpascal-strings -Os -fno-common -Werror -Wno-missing-field-initializers -Wno-missing-prototypes -Werror=return-type -Wunreachable-code -Wno-implicit-atomic-properties -Werror=deprecated-objc-isa-usage -Wno-objc-interface-ivars -Werror=objc-root-class -Wno-arc-repeated-use-of-weak -Wimplicit-retain-self -Wduplicate-method-match -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wno-float-conversion -Wnon-literal-null-conversion -Wobjc-literal-conversion -Wshorten-64-to-32 -Wpointer-sign -Wnewline-eof -Wno-selector -Wno-strict-selector-match -Wundeclared-selector -Wdeprecated-implementations -DPRODUCT_NAME=Nimble/Nimble -DNS_BLOCK_ASSERTIONS=1 -DOBJC_OLD_DISPATCH_PROTOTYPES=0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.2.sdk -fasm-blocks -fstrict-aliasing -Wprotocol -Wdeprecated-declarations -mios-simulator-version-min=8.0 -g -Wno-sign-conversion -Winfinite-recursion -Wcomma -Wblock-capture-autoreleasing -Wstrict-prototypes -Wno-semicolon-before-method-body -fobjc-abi-version=2 -fobjc-legacy-dispatch -iquote /***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/Build/Intermediates.noindex/Nimble.build/Release-iphonesimulator/Nimble-iOS.build/Nimble-generated-files.hmap -I/***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/Build/Intermediates.noindex/Nimble.build/Release-iphonesimulator/Nimble-iOS.build/Nimble-own-target-headers.hmap -I/***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/Build/Intermediates.noindex/Nimble.build/Release-iphonesimulator/Nimble-iOS.build/Nimble-all-non-framework-target-headers.hmap -ivfsoverlay /***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/Build/Intermediates.noindex/Nimble.build/Release-iphonesimulator/Nimble-iOS.build/all-product-headers.yaml -iquote /***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/Build/Intermediates.noindex/Nimble.build/Release-iphonesimulator/Nimble-iOS.build/Nimble-project-headers.hmap -I/***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/Build/Products/Release-iphonesimulator/include -I/***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/Build/Intermediates.noindex/Nimble.build/Release-iphonesimulator/Nimble-iOS.build/DerivedSources-normal/x86_64 -I/***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/Build/Intermediates.noindex/Nimble.build/Release-iphonesimulator/Nimble-iOS.build/DerivedSources/x86_64 -I/***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/Build/Intermediates.noindex/Nimble.build/Release-iphonesimulator/Nimble-iOS.build/DerivedSources -F/***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/Build/Products/Release-iphonesimulator -F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks -F/Applications/Xcode.app/Contents/Developer/Library/Frameworks -MMD -MT dependencies -MF /***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/Build/Intermediates.noindex/Nimble.build/Release-iphonesimulator/Nimble-iOS.build/Objects-normal/x86_64/NMBStringify.d --serialize-diagnostics /***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/Build/Intermediates.noindex/Nimble.build/Release-iphonesimulator/Nimble-iOS.build/Objects-normal/x86_64/NMBStringify.dia -c /***someUserDirectory***/Library/Caches/XCSBuilder/Bots/8e543991f99daae3015cbc6c419dba56/Source/airlib/Carthage/Checkouts/Nimble/Sources/NimbleObjectiveC/NMBStringify.m -o /***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/Build/Intermediates.noindex/Nimble.build/Release-iphonesimulator/Nimble-iOS.build/Objects-normal/x86_64/NMBStringify.o

It also gives a similar error for the i386 version of the file. Just change all the x86_64 to i386. So there are two errors for NMBStringify file.

When I run Carthage boostrap/update in the normal projects directory, ~/Projects/myproject/ the build is fine and it prints the following for the same file

CompileC /***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/Build/Intermediates.noindex/Nimble.build/Release-iphonesimulator/Nimble-iOS.build/Objects-normal/x86_64/NMBStringify.o /***someUserDirectory***/Projects/airlib/Carthage/Checkouts/Nimble/Sources/NimbleObjectiveC/NMBStringify.m normal x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler (in target: Nimble-iOS)
    cd /***someUserDirectory***/Projects/airlib/Carthage/Checkouts/Nimble
    export LANG=en_US.US-ASCII
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x objective-c -arch x86_64 -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -std=gnu99 -fobjc-arc -fmodules -gmodules -fmodules-cache-path=/***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/ModuleCache.noindex -fno-autolink -fmodules-prune-interval=86400 -fmodules-prune-after=345600 -fbuild-session-file=/***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/ModuleCache.noindex/Session.modulevalidation -fmodules-validate-once-per-build-session -Wnon-modular-include-in-framework-module -Werror=non-modular-include-in-framework-module -fmodule-name=Nimble -fapplication-extension -Wno-trigraphs -fpascal-strings -Os -fno-common -Werror -Wno-missing-field-initializers -Wno-missing-prototypes -Werror=return-type -Wunreachable-code -Wno-implicit-atomic-properties -Werror=deprecated-objc-isa-usage -Wno-objc-interface-ivars -Werror=objc-root-class -Wno-arc-repeated-use-of-weak -Wimplicit-retain-self -Wduplicate-method-match -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wno-float-conversion -Wnon-literal-null-conversion -Wobjc-literal-conversion -Wshorten-64-to-32 -Wpointer-sign -Wnewline-eof -Wno-selector -Wno-strict-selector-match -Wundeclared-selector -Wdeprecated-implementations -DPRODUCT_NAME=Nimble/Nimble -DNS_BLOCK_ASSERTIONS=1 -DOBJC_OLD_DISPATCH_PROTOTYPES=0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.2.sdk -fasm-blocks -fstrict-aliasing -Wprotocol -Wdeprecated-declarations -mios-simulator-version-min=8.0 -g -Wno-sign-conversion -Winfinite-recursion -Wcomma -Wblock-capture-autoreleasing -Wstrict-prototypes -Wno-semicolon-before-method-body -fobjc-abi-version=2 -fobjc-legacy-dispatch -iquote /***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/Build/Intermediates.noindex/Nimble.build/Release-iphonesimulator/Nimble-iOS.build/Nimble-generated-files.hmap -I/***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/Build/Intermediates.noindex/Nimble.build/Release-iphonesimulator/Nimble-iOS.build/Nimble-own-target-headers.hmap -I/***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/Build/Intermediates.noindex/Nimble.build/Release-iphonesimulator/Nimble-iOS.build/Nimble-all-non-framework-target-headers.hmap -ivfsoverlay /***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/Build/Intermediates.noindex/Nimble.build/Release-iphonesimulator/Nimble-iOS.build/all-product-headers.yaml -iquote /***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/Build/Intermediates.noindex/Nimble.build/Release-iphonesimulator/Nimble-iOS.build/Nimble-project-headers.hmap -I/***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/Build/Products/Release-iphonesimulator/include -I/***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/Build/Intermediates.noindex/Nimble.build/Release-iphonesimulator/Nimble-iOS.build/DerivedSources-normal/x86_64 -I/***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/Build/Intermediates.noindex/Nimble.build/Release-iphonesimulator/Nimble-iOS.build/DerivedSources/x86_64 -I/***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/Build/Intermediates.noindex/Nimble.build/Release-iphonesimulator/Nimble-iOS.build/DerivedSources -F/***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/Build/Products/Release-iphonesimulator -F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks -F/Applications/Xcode.app/Contents/Developer/Library/Frameworks -MMD -MT dependencies -MF /***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/Build/Intermediates.noindex/Nimble.build/Release-iphonesimulator/Nimble-iOS.build/Objects-normal/x86_64/NMBStringify.d --serialize-diagnostics /***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/Build/Intermediates.noindex/Nimble.build/Release-iphonesimulator/Nimble-iOS.build/Objects-normal/x86_64/NMBStringify.dia -c /***someUserDirectory***/Projects/airlib/Carthage/Checkouts/Nimble/Sources/NimbleObjectiveC/NMBStringify.m -o /***someUserDirectory***/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2/Build/Intermediates.noindex/Nimble.build/Release-iphonesimulator/Nimble-iOS.build/Objects-normal/x86_64/NMBStringify.o

Virtually the same but with slightly different pathing. For some reason it can't find the header files required for the Obj-c files in Nimble to build.

For the life of me I don't know why Xcode can't find the header file in one directory yet it can't in another. I have taken the project out of the

More Info

When Carthage fails The following log output is from a script that deletes the old Carthage directory, this should be removed since we don't upload the Carthage files anymore, and then calls

carthage bootstrap --no-build
carthage bootstrap Quick Nimble --platform ios --cache-builds

this is what the log says

Git prune
Delete Old Carthage Directory
rm: Carthage: No such file or directory
Carthage Bootstrap
*** Checking out MBProgressHUD at "1.1.1"
*** Checking out XCGLogger at "7.0.0"
*** Cloning MBProgressHUD
*** Checking out CocoaAsyncSocket at "7.6.3"
*** Checking out Nimble at "v8.0.2"
*** Checking out Quick at "v2.1.0"
*** Checking out BlueSocket at "1.0.46"
*** Checking out Quick at "v2.1.0"
*** Checking out Nimble at "v8.0.2"
*** No cache found for Nimble, building with all downstream dependencies
*** No cache found for Quick, building with all downstream dependencies
*** xcodebuild output can be found in /var/folders/rc/28t61gwn3c1bcsn1b360d0h40000gq/T/carthage-xcodebuild.HH0nlH.log
*** Building scheme "Nimble-iOS" in Nimble.xcodeproj
Build Failed
    Task failed with exit code 65:
    /usr/bin/xcrun xcodebuild -project /Users/XcodeServer/Library/Caches/XCSBuilder/Bots/8e543991f99daae3015cbc6c419dba56/Source/airlib/Carthage/Checkouts/Nimble/Nimble.xcodeproj -scheme Nimble-iOS -configuration Release -derivedDataPath /Users/XcodeServer/Library/Caches/org.carthage.CarthageKit/DerivedData/10.2_10E125/Nimble/v8.0.2 -sdk iphonesimulator -destination platform=iOS\ Simulator,id=5A944081-C045-401A-889E-72B41BB3C8CA -destination-timeout 3 ONLY_ACTIVE_ARCH=NO CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= CARTHAGE=YES build (launched in /Users/XcodeServer/Library/Caches/XCSBuilder/Bots/8e543991f99daae3015cbc6c419dba56/Source/airlib/Carthage/Checkouts/Nimble)

This usually indicates that project itself failed to compile. Please check the xcodebuild log for more details: /var/folders/rc/28t61gwn3c1bcsn1b360d0h40000gq/T/carthage-xcodebuild.HH0nlH.log

This is what happens when I manually do it

Git prune
Delete Old Carthage Directory
rm: Carthage: No such file or directory
Carthage Bootstrap
*** Checking out Quick at "v2.1.0"
*** Checking out SVProgressHUD at "2.2.5"
*** Checking out XCGLogger at "7.0.0"
*** Checking out Nimble at "v8.0.2"
*** Checking out BlueSocket at "1.0.46"
*** Checking out CocoaAsyncSocket at "7.6.3"
*** Checking out Nimble at "v8.0.2"
*** Checking out Quick at "v2.1.0"
*** No cache found for Nimble, building with all downstream dependencies
*** No cache found for Quick, building with all downstream dependencies
*** xcodebuild output can be found in /var/folders/rc/28t61gwn3c1bcsn1b360d0h40000gq/T/carthage-xcodebuild.GnvVo9.log
*** Building scheme "Nimble-iOS" in Nimble.xcodeproj
*** Building scheme "Quick-iOS" in Quick.xcworkspace
like image 535
Biclops Avatar asked Nov 24 '25 04:11

Biclops


2 Answers

I upgraded to XCode 11 and now it builds correctly.

In case the Nimble team is listening, the issue seemed to only pop up when building for release.

like image 105
Biclops Avatar answered Nov 26 '25 18:11

Biclops


I ran into this same issue with Nimble when trying to use Xcode11.2. What fixed it was deleting the Nimble folder from my Carthage/Checkouts folder. That got Carthage to checkout the files again, and from there it built just fine. I'm not sure why that worked, but I suspect folder/file permissions.

like image 43
Jacob Ewald Avatar answered Nov 26 '25 19:11

Jacob Ewald