Xcode 9.0.1 Image Release

xcode
mobile

#1

We have released a new version of our Xcode 9 image, which now contains Xcode version 9.0.1.

Since this is purely a bug-fix release of Xcode, we have released the image in-place, so there is no need to update your circle.yml config.

The release notes from Apple are here:

https://developer.apple.com/library/content/releasenotes/DeveloperTools/RN-Xcode/Chapters/Introduction.html#//apple_ref/doc/uid/TP40001051-CH1-DontLinkElementID_1

All changes in the image are listed here: https://github.com/circleci/macos-image-tests/pull/18/files

The notable changes are: that the iOS SDK is now version 11.0.1 rather than 11.0 (this is the version that Xcode 9.0.1 installs). Also fastlane, carthage, node and yarn have all been bumped to the latest minor releases, and the JDK build number has changed from 144 to 152.

Please let us know if you have any questions or feedback.

Marc


#2

We end up getting the error as shown in the attached image. We have used Xcode 9.0.1 for the build


#3

Does your Fastfile specify an exact version of Xcode that is required?

Can you give me a link to the build and I’ll take a look? If you don’t want to post the link here you can email sayhi@


#4

It seems that some confusion can happen between the image and actual Xcode version that is present in it.

We have a large project with multiple pre-compiled Carthage dependencies. After each toolchain update we need to recompile all the dependencies and upload the resulting frameworks to GitHub release pages for each dependency. This is partly automated, but still requires quite a bit of manual effort from our side. Otherwise Carthage starts rebuilding all dependencies from scratch which adds around 15-20 mins to the build (see step bash dependencies.sh in https://circleci.com/gh/wireapp/wire-ios/1921).

So now back to the source of confusion - even specifying version: 9.0.0 in circle.yml we see that Xcode 9.0.1 is used instead. I used to think that when specifying version without patch component (e.g. 9.0) we would get the most recent Xcode version (9.0.1 currently), but when specifying full version 9.0.0 would give us that specific version. This was at least the behaviour with 8.3.2 and 8.3.3 versions several months ago.

In our case the image update in place resulted in increase of build times in some cases by 2x. I understand that this might not be relevant for smaller projects, but it would be very useful to have more granular control on which Xcode version exactly we are dealing with.

Thanks,
Vytis.


#5

With xcode: "9.0", brew doctor reports:

Warning: Your Xcode (9.0) is outdated.
Please update to Xcode 9.0.1 (or delete it).

Specifying xcode: "9.0.1" yields

Specified image is not supported: xcode:9.0.1
❯❯❯ which -a clang
/usr/bin/clang
❯❯❯ clang --version
Apple LLVM version 9.0.0 (clang-900.0.37)
Target: x86_64-apple-darwin16.7.0
Thread model: posix
InstalledDir: /Applications/Xcode-9.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
❯❯❯ xcodebuild -version
Xcode 9.0
Build version 9A235

See https://circleci.com/gh/Linuxbrew/homebrew-bio/71

How do I update to Xcode 9.0.1?

Thanks,
Shaun


#6