Xcode 10.2.1 image released

We have released an Xcode 10.2.1 image today. You can select the image by adding the following to a job in config.yml :

macos:
  xcode: 10.2.1

These are the changes in this image compared to Xcode 10.2:

  • The host OS is now macOS Mojave version 10.14.4.
  • Xcode is now version 10.2.1 Build 10E1001 .
  • The included simulators are:
    • iOS 12.2
    • iOS 11.4
    • iOS 10.3.1
    • watchOS 5.2

The system Ruby is unchanged at 2.3.7p456. We also have Ruby 2.4.6 and 2.5.5 available to use via chruby.

The full manifest of the installed software is available here.

A raw diff of the changes is available here.

1 Like

Great news!
I just want a simple confirmation: in the examples it’s like that

    macos:
      xcode: "10.2.1"

We need to specify a string or a number?

Our config processor will accept either a string or a number for this field, although YAML will always treat 10.2.1 as a string internally.

If you want to check your config locally, you can always use circleci config process .circleci/config.yml. If you are using version: 2.1 in your config, then you should get very detailed feedback if the schema does not match.

1 Like

HI,

I have changed my xcode version to 10.2.1 but its failing on CIrcle CI while installing wget. Below is the full trace for the error I am getting.

#!/bin/bash --login -o pipefail
brew install wget --with-libressl
^D^DUsage: brew install [options] formula

Install formula.

formula is usually the name of the formula to install, but it can be specified
in several different ways.

Unless HOMEBREW_NO_INSTALL_CLEANUP is set, brew cleanup will be run for the
installed formulae or, every 30 days, for all formulae.

-d, --debug                      If brewing fails, open an interactive
                                 debugging session with access to IRB or a
                                 shell inside the temporary build directory
    --env                        If std is passed, use the standard build
                                 environment instead of superenv.If super
                                 is passed, use superenv even if the formula
                                 specifies the standard build environment.
    --ignore-dependencies        An unsupported Homebrew development flag to
                                 skip installing any dependencies of any
                                 kind. If the dependencies are not already
                                 present, the formula will have issues. If
                                 you're not developing Homebrew, consider
                                 adjusting your PATH rather than using this
                                 flag.
    --only-dependencies          Install the dependencies with specified
                                 options but do not install the specified
                                 formula.
    --cc                         Attempt to compile using provided
                                 compiler. compiler should be the name
                                 of the compiler's executable, for instance
                                 gcc-7 for GCC 7. In order to use LLVM's
                                 clang, use llvm_clang. To specify the
                                 Apple-provided clang, use clang. This
                                 parameter will only accept compilers that
                                 are provided by Homebrew or bundled with
                                 macOS. Please do not file issues if you
                                 encounter errors while using this flag.
-s, --build-from-source          Compile the specified formula from source
                                 even if a bottle is provided. Dependencies
                                 will still be installed from bottles if
                                 they are available.
    --force-bottle               Install from a bottle if it exists for the
                                 current or newest version of macOS, even if
                                 it would not normally be used for
                                 installation.
    --include-test               Install testing dependencies required to
                                 run brew test.
    --devel                      If formula defines it, install the
                                 development version.
    --HEAD                       If formula defines it, install the HEAD
                                 version, aka. master, trunk, unstable.
    --fetch-HEAD                 Fetch the upstream repository to detect if
                                 the HEAD installation of the formula is
                                 outdated. Otherwise, the repository's HEAD
                                 will be checked for updates when a new
                                 stable or development version has been
                                 released.
    --keep-tmp                   Don't delete the temporary files created
                                 during installation.
    --build-bottle               Prepare the formula for eventual bottling
                                 during installation.
    --bottle-arch                Optimise bottles for the given architecture
                                 rather than the oldest architecture
                                 supported by the version of macOS the
                                 bottles are built on.
-f, --force                      Install without checking for previously
                                 installed keg-only or non-migrated
                                 versions.
-v, --verbose                    Print the verification and postinstall
                                 steps.
    --display-times              Print install times for each formula at the
                                 end of the run.
-i, --interactive                Download and patch formula, then open a
                                 shell. This allows the user to run
                                 ./configure --help and otherwise
                                 determine how to turn the software package
                                 into a Homebrew package.
-g, --git                        Create a Git repository, useful for
                                 creating patches to the software.
-h, --help                       Show this message.

Error: invalid option: --with-libressl
Exited with code 1

Please suggest how to solve this issue?

We’ve noticed that with the image for Xcode 10.2.1 there’s a change when it comes to java. It looks like we switched from built-in java to the open jdk.

In our builds we use the tool to fetch java home:

/usr/libexec/java_home

For previous images (e.g. one for Xcode 10.2.0) it returns standard macOS path:

/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home

while for image with Xcode 10.2.1 it returns:

/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jre/Contents/Home

Was this change done on purpose?

The main problem we face that java binary is in under different path in this java_home.

Regards,
Aleksander Zubala

1 Like

The java change is down to some licensing changes made by oracle that affected the homebrew package we use to install java.

You can get the full details in https://github.com/Homebrew/homebrew-cask-versions/issues/7253

1 Like

Do we have any resolution for the issue we are facing for Xcode 10.2.1

I believe you are getting this error because of this. What happens if you try brew install wget?

1 Like

I’m not too familiar with using wget, but the error message suggests that the problem is with your brew install command:

brew install wget --with-libressl

and the output:

Error: invalid option: --with-libressl

What happens when you just run brew install wget? This seems to work for me:

version: 2.1
jobs:
  build:
    macos:
      xcode: 10.2.1
    steps:
      - checkout
      - run:
          environment:
            HOMEBREW_NO_AUTO_UPDATE: "1"
          command: brew install wget
      - run: wget "https://circleci.com"
1 Like

Hi,

we were using java to build our cordova base Android app. Worked like a charm in Xcode 10.2.0, but with the new one (and new java), there is no javac binary present on the system and also JAVA_HOME is somehow totally wrong. Any advice on that?

Thanks, Jan.

For what it’s worth, this is how we had to solve it:

sudo rm -rf /Library/Java/JavaVirtualMachines/*

curl -sL https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u212-b03/OpenJDK8U-jdk_x64_mac_hotspot_8u212b03.pkg \
  > OpenJDK8U-jdk_x64_mac_hotspot_8u212b03.pkg

curl -sL https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u212-b03/OpenJDK8U-jre_x64_mac_hotspot_8u212b03.pkg \
  > OpenJDK8U-jre_x64_mac_hotspot_8u212b03.pkg

sudo installer -pkg OpenJDK8U-jdk_x64_mac_hotspot_8u212b03.pkg -target /
sudo installer -pkg OpenJDK8U-jre_x64_mac_hotspot_8u212b03.pkg -target /
2 Likes

It worked for me.
Thanks for your support

I just have started facing another issue on circle ci and below issue failing my build on circle ci: -

#!/bin/bash --login -o pipefail
rake verify
bundle exec fastlane unit_test

[20:37:49]: $ set -o pipefail && env NSUnbufferedIO=YES xcodebuild -workspace NedBankApp.xcworkspace -scheme NedBankApp -destination ‘platform=iOS Simulator,name=iPhone 5s,OS=12.2’ -derivedDataPath ‘./build’ test-without-building | tee ‘/Users/distiller/Library/Logs/scan/NedBankApp-NedBankApp.log’ | xcpretty --report html --output ‘/Users/distiller/banking-app-ios/fastlane/test_output/report.html’ --report junit --output ‘/Users/distiller/banking-app-ios/fastlane/test_output/report.junit’ --report junit --output ‘/var/folders/1b/gl7yt7ds26vcyr1pkgld6l040000gn/T/junit_report20190610-1896-10bfv8o’
[20:37:49]: ▸ Loading…
[20:37:55]: ▸ 2019-06-10 20:37:55.713 xcodebuild[2036:10556] IDETestOperationsObserverDebug: Writing diagnostic log for test session to:
[20:37:55]: ▸ /Users/distiller/banking-app-ios/build/Logs/Test/Test-NedBankApp-2019.06.10_20-37-54–0700.xcresult/1_Test/Diagnostics/NedBankAppTests-F3F4F051-3061-4BDD-8A3B-2F5C6BBA82E3/NedBankAppTests-B7F3FD94-EB78-47C9-B5FE-0F0F865FFAFB/Session-NedBankAppTests-2019-06-10_203755-X0VuzJ.log
[20:37:55]: ▸ 2019-06-10 20:37:55.714 xcodebuild[2036:10486] [MT] IDETestOperationsObserverDebug: (74954FA9-542A-42C5-9DF6-6D2A120395E2) Beginning test session NedBankAppTests-74954FA9-542A-42C5-9DF6-6D2A120395E2 at 2019-06-10 20:37:55.714 with Xcode 10E1001 on target <DVTiPhoneSimulator: 0x7fd57865e790> {
[20:37:55]: ▸ SimDevice: iPhone 5s (763DB20A-AD6B-4602-BB4F-E5AC0B62DF3D, iOS 12.2, Shutdown)
[20:37:55]: ▸ } (12.2 (16E226))

[20:46:06]: ▸ 2019-06-10 20:46:06.223 xcodebuild[2036:10486] [MT] IDETestOperationsObserverDebug: 490.527 elapsed – Testing started completed.
[20:46:06]: ▸ 2019-06-10 20:46:06.223 xcodebuild[2036:10486] [MT] IDETestOperationsObserverDebug: 0.000 sec, +0.000 sec – start
[20:46:06]: ▸ 2019-06-10 20:46:06.223 xcodebuild[2036:10486] [MT] IDETestOperationsObserverDebug: 490.527 sec, +490.527 sec – end
[20:46:06]: ▸ Testing failed:
[20:46:06]: ▸ NedBankAppTests:

[20:46:06]: ▸ /Users/distiller/banking-app-ios/build/Logs/Test/Test-NedBankApp-2019.06.10_20-37-54–0700.xcresult
[20:46:06]: ▸ ** TEST EXECUTE FAILED **

Testing failed:
XXXXAppTests:
XXXXApp.app (2177) encountered an error (Early unexpected exit, operation never finished bootstrapping - no restart will be attempted. (Underlying error: Test runner exited before starting test execution.))

Test session results and logs:
/Users/distiller/banking-app-ios/build/Logs/Test/Test-NedBankApp-2019.06.10_20-37-54–0700.xcresult

** TEST EXECUTE FAILED **
[20:46:12]: Exit status: 65

Could anyone help me in this?

Do we have any resolution for this?

@glenjamin.circleci the java change is annoying for your users. You have control over the xcode images, we can’t customize them. Adding java install in the workflow for every build is just a waste of time.
You can just include the lines provided by @jkotrlik in your image build. Is that possible?

I appreciate you might be a bit frustrated @amine, but please try to treat CircleCI employees with respect and kindness. They are still your fellow professionals.

1 Like

Hi @amine

I’m sorry that this bug in our image has affected you. The change to the Java runtime wasn’t intentional - we had to change how we install Java using Homebrew, and we have installed a JRE insread of the JDK.

We have identified the issue, and we will fix it soon. We have an Xcode 11 beta 2 image that is currently being distributed to the mac fleet, that we will GA tomorrow. This does not have the Java fix in place, we didn’t find the problem in time.

We will fix the Java issue and ship it as soon as we can. It will be fixed in the next Xcode 11 beta image that we ship, and I hope to ship a fix before then. We’ll also be adding a regression test to the image to ensure that javac is on the path. We currently only test that java -version outputs the expected version, which both the JDK and JRE satisfy.

Marc

@halfer I don’t think my message was disrespectful. @glenjamin.circleci I am sorry if you felt that way.

Thanks @marc

1 Like

Hi Guys,
I am still stuck in this problem. If anyone has any idea on how to solve this then please suggest.

What did you try?