'Xcode 10: unable to attach DB error
When updating to Xcode 10, iOS static library target fails to build. Way how I am trying to build it is following:
xcodebuild -target TargetName -configuration Release clean build
With Xcode 9 everything runs smoothly, but when Xcode 10 is used for build, I am getting following error (after clean runs smoothly):
note: Using new build system
note: Planning build
note: Constructing build description Build system information error: unable to attach DB: error: accessing build database "/Users/uerceg/random-path/build/XCBuildData/build.db": database is locked Possibly there are two concurrent builds running in the same filesystem location.
** BUILD FAILED **
** BUILD FAILED **
The following build commands failed: PhaseScriptExecution MultiPlatform\ Build /Users/uerceg/random-path/build/Library.build/Release-iphoneos/LibraryTarget.build/Script-9DE7C9021AE68FA5001556E5.sh (1 failure)
This probably unrelated, but I noticed that new Xcode 10 build system flags duplicated Copy Bundle Resource Info.plist files as errors, so I did make sure that there're no duplicated entries, but probably this error is not related to this fact.
Does anyone have any idea what might be wrong?
Solution 1:[1]
Open XCode File->Project Settings
Build System->Legacy Build System
Configure XCode of version 10.0 project settings can solve the problem.
Solution 2:[2]
If you use build script to build submodule's libraries like me.
You also need to disable new build system in your build script explicitly by using -UseModernBuildSystem=NO in your xcodebuild command.
For example:
xcodebuild -configuration "${CONFIGURATION}" -project "${PROJECT_NAME}.xcodeproj" -target "${TARGET_NAME}" -sdk "${OTHER_SDK_TO_BUILD}" ${ACTION} RUN_CLANG_STATIC_ANALYZER=NO BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" SYMROOT="${SYMROOT}" -UseModernBuildSystem=NO
Solution 3:[3]
Deleting the Derived Data worked for me. See how you can do it: https://programmingwithswift.com/delete-derived-data-xcode/
Solution 4:[4]
I have the same issues and try everything from the hints but this error still continues. Sometimes the project is built, next time there is no and error. And the solution that helps me is to edit scheme and switch off Parallelize Build. After that everything works fine.
Solution 5:[5]
Use this script it will it is working fine with new build system
# Step 1 search RECURSION and if detected stop "*/
if [ "true" == ${ALREADYINVOKED:-false} ]
then
echo "RECURSION: Detected, stopping"
else
export ALREADYINVOKED="true"
UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal
# Step 2. Build Device and Simulator versions
xcodebuild -target logger ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"
xcodebuild -target logger-configuration ${CONFIGURATION} -sdk iphonesimulator -arch i386 -arch x86_64 BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"
# make sure the output directory exists
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"
# Step 3. Create universal binary file using lipo
lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/lib${PROJECT_NAME}universal.a" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/lib${PROJECT_NAME}.a" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/lib${PROJECT_NAME}.a"
# Last touch. copy the header files. Just for convenience
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/include" "${UNIVERSAL_OUTPUTFOLDER}/"
fi
before Xcode 10 build system uses single thread, but in Xcode 10 usees new build system with multiple threads, so every time you run your build Xcode run button this script
xcodebuild -target logger ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}".
will call one more time for build so on, that will create RECURSION
Don't forgot to end you Script With (fi) its end of IF condition
Step 1 is to Detect RECURSION and stop them
Solution 6:[6]
If you want to keep the XCode 10 default build system but still running your build outside of the IDE (in a CI machine for instance), just replace your -target parameter for the -scheme parameter in your xcodebuild command like:
xcodebuild -scheme SchemeName -configuration Release clean build
Thanks to this post from 2015 that talks about a very similar problem and it gave me the hint to solve this problem. As the same author says,
I would hazard a guess, that
xcodebuildwithout a scheme goes wrongly through the "modern build system", giving the mentioned error
Solution 7:[7]
Adding a Clean derived data step in my build scripts (before an Xcode build) seems to fix the problem for me.
Not sure if it's related, but my project uses Realm (installed with CocoaPods). This is the GitHub issue that inspired the "fix" -> https://github.com/realm/realm-cocoa/issues/5812.
Solution 8:[8]
I encountered this issue when running swift run <your_proj>.
A quick fix can be achieved by deleting the build.db file, along with its sibling files and directories. This may seem trifle, but it worked for me.
Solution 9:[9]
I am reposting this because a moderator saw it fit to delete my previous answer.
I encountered the same issues when I upgraded by builds to New Build System because of xcframeworks requirements.
Error: ".....Build/Intermediates.noindex/XCBuildData/build.db": database is locked Possibly there are two concurrent builds running in the same filesystem location."
The build was previously working fine when triggered with xcodebuild( )
None of the above/approved answered worked for me.
What worked for me was a switch from xcodebuild( ) to build_app( ) in my Fastlane script.
Hope this answer helps someone in the future.
Solution 10:[10]
For me, I just cleaned my project. Restarted the IDE & rebuilt the project & it worked like a charm.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
