envoyproxy / envoy-mobile

Client HTTP and networking library based on the Envoy project for iOS, Android, and more.
https://envoymobile.io
Apache License 2.0
561 stars 84 forks source link

[CI] Update to Xcode 14 #2544

Closed jpsim closed 2 years ago

jpsim commented 2 years ago

This is now the latest stable Xcode release and we should update to it in order to compile against the latest iOS SDK.

Will require EngFlow to update their executors just as was done for #1997 and #2100. This version of Xcode also requires macOS 12.5 to run, so an OS update to the workers may also be needed.

cc @lfpino @Yannic

Yannic commented 2 years ago

Starting the process on our side. ETA later this week.

Yannic commented 2 years ago

cc @saraadams

Yannic commented 2 years ago

FYI, we tried to update today but it seems to have caused problems downstream: https://engflow.slack.com/archives/C02QMNG92A3/p1663268271326349

Investigating tomorrow.

jpsim commented 2 years ago

@Yannic how's the update process going? Is there anything I can do to help?

Yannic commented 2 years ago

We deployed the change to the cluster but had to revert because it was causing other issues (missing python3?). We need to investigate whether Apple changed anything in Xcode (I do see a new Xcode-related download on developer.apply.com).

Do you know what's up with that?

jpsim commented 2 years ago

Python 2.7 was removed in macOS 12.3: https://developer.apple.com/documentation/macos-release-notes/macos-12_3-release-notes

But as far as I can tell Python 3 is still installed:

$ sw_vers 
ProductName:    macOS
ProductVersion: 12.6
BuildVersion:   21G115
$ ~ /usr/bin/python3 --version
Python 3.9.6
keith commented 2 years ago

I don't think anything from bazel relies on py2 at this point because of this, and since it's long deprecated, I'm not in the engflow slack but is it an engflow thing hitting the issue?

Augustyniak commented 2 years ago

An example of a full error can be found at https://github.com/envoyproxy/envoy-mobile/actions/runs/3063500567/jobs/4945798180.

Copy-pasted version so that we do not lose it:

Run ./bazelw build --config=ios --config=remote-ci-macos --remote_header="Authorization=***" //examples/swift/hello_world:app
WARNING: Option 'auth_enabled' is deprecated: Use --google_default_credentials instead
WARNING: option '--google_default_credentials' was expanded to from both option '--config=remote-ci-macos' (source command line options) and option '--config=remote-ci-macos' (source command line options)
INFO: Invocation ID: 9ac70508-aa6f-4ae4-904d-326dd4f1355b
INFO: Streaming build results to: https://envoy.cluster.engflow.com/invocation/9ac70508-aa6f-4ae4-904d-326dd4f1355b
Loading: 
Loading: 2 packages loaded
Analyzing: target //examples/swift/hello_world:app (4 packages loaded, 0 targets configured)
Analyzing: target //examples/swift/hello_world:app (6 packages loaded, 1 target configured)
Analyzing: target //examples/swift/hello_world:app (10 packages loaded, 11 targets configured)
Analyzing: target //examples/swift/hello_world:app (10 packages loaded, 11 targets configured)
WARNING: The major revision of the Android NDK referenced by android_ndk_repository rule 'androidndk' is 25. The major revisions supported by Bazel are [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]. Bazel will attempt to treat the NDK as if it was r21. This may cause compilation and linkage problems. Please download a supported NDK version.
Analyzing: target //examples/swift/hello_world:app (56 packages loaded, 11 targets configured)
Analyzing: target //examples/swift/hello_world:app (60 packages loaded, 11 targets configured)
Analyzing: target //examples/swift/hello_world:app (60 packages loaded, 11 targets configured)
Analyzing: target //examples/swift/hello_world:app (76 packages loaded, 403 targets configured)
Analyzing: target //examples/swift/hello_world:app (76 packages loaded, 403 targets configured)
WARNING: /Users/runner/work/envoy-mobile/envoy-mobile/library/common/jni/BUILD:90:27: target 'libndk_envoy_jni.jnilib' is both a rule and a file; please choose another name for the rule
Analyzing: target //examples/swift/hello_world:app (229 packages loaded, 5473 targets configured)
Analyzing: target //examples/swift/hello_world:app (425 packages loaded, 19518 targets configured)
Analyzing: target //examples/swift/hello_world:app (425 packages loaded, 19518 targets configured)
Analyzing: target //examples/swift/hello_world:app (425 packages loaded, 19518 targets configured)
INFO: Analyzed target //examples/swift/hello_world:app (487 packages loaded, 22127 targets configured).
INFO: Found 1 target...
[0 / 53] [Prepa] Writing file examples/swift/hello_world/app-intermediates/Info.plist-root-control
INFO: From Generating C++ proto_library @com_github_cncf_udpa//xds/type/matcher/v3:pkg:
xds/type/matcher/v3/http_inputs.proto:7:1: warning: Import validate/validate.proto is unused.
INFO: From Generating C++ proto_library //library/common/extensions/retry/options/network_configuration:predicate:
library/common/extensions/retry/options/network_configuration/predicate.proto:5:1: warning: Import validate/validate.proto is unused.
INFO: From Generating Descriptor Set proto_library //library/common/extensions/retry/options/network_configuration:predicate:
library/common/extensions/retry/options/network_configuration/predicate.proto:5:1: warning: Import validate/validate.proto is unused.
INFO: From Generating Descriptor Set proto_library @com_github_cncf_udpa//xds/type/matcher/v3:pkg:
xds/type/matcher/v3/http_inputs.proto:7:1: warning: Import validate/validate.proto is unused.
[2,228 / 3,334] Compiling src/crypto/asn1/tasn_enc.c; 21s remote ... (40 actions, 0 running)
[4,161 / 4,167] Linking examples/swift/hello_world/app_bin; 15s remote
[4,161 / 4,167] Linking examples/swift/hello_world/app_bin; 58s remote
[4,161 / 4,167] Linking examples/swift/hello_world/app_bin; 107s remote
ERROR: /Users/runner/work/envoy-mobile/envoy-mobile/examples/swift/hello_world/BUILD:13:16: Bundling app failed: (Exit 72): bundletool failed: error executing command (from target //examples/swift/hello_world:app) 
  (cd /private/var/tmp/_bazel_runner/b225883c33850f3f191a570e7b70ec29/execroot/envoy_mobile && \
  exec env - \
  bazel-out/darwin-opt-exec-B1808895-ST-13190178d52d/bin/external/build_bazel_rules_apple/tools/bundletool/bundletool bazel-out/applebin_ios-ios_x86_64-fastbuild-ST-4f04401fafb6/bin/examples/swift/hello_world/app-intermediates/bundletool_control.json)
# Configuration: 9afeecc7f66a40af53d8a21be040ddaef1f0c12dc9f82de6d94872e6d0031194
# Execution platform: //ci/platform:macos
2022-09-15 20:51:32.077 xcodebuild[32140:187526] [MT] DVTPlugInLoading: Failed to load code for plug-in com.apple.dt.IDESimulatorAvailability (/Applications/engflow/xcode-snap-0fb572901bb30049f/Xcode.app/Contents/PlugIns/IDESimulatorAvailability.ideplugin), error = Error Domain=NSCocoaErrorDomain Code=3588 "dlopen(/Applications/engflow/xcode-snap-0fb572901bb30049f/Xcode.app/Contents/PlugIns/IDESimulatorAvailability.ideplugin/Contents/MacOS/IDESimulatorAvailability, 0x0109): Symbol not found: _OBJC_CLASS_$_SimDiskImage
  Referenced from: /Applications/engflow/xcode-snap-0fb572901bb30049f/Xcode.app/Contents/PlugIns/IDESimulatorAvailability.ideplugin/Contents/MacOS/IDESimulatorAvailability
  Expected in: /Library/Developer/PrivateFrameworks/CoreSimulator.framework/Versions/A/CoreSimulator" UserInfo={NSLocalizedFailureReason=The bundle couldn’t be loaded., NSLocalizedRecoverySuggestion=Try reinstalling the bundle., NSFilePath=/Applications/engflow/xcode-snap-0fb572901bb30049f/Xcode.app/Contents/PlugIns/IDESimulatorAvailability.ideplugin/Contents/MacOS/IDESimulatorAvailability, NSDebugDescription=dlopen(/Applications/engflow/xcode-snap-0fb572901bb30049f/Xcode.app/Contents/PlugIns/IDESimulatorAvailability.ideplugin/Contents/MacOS/IDESimulatorAvailability, 0x0109): Symbol not found: _OBJC_CLASS_$_SimDiskImage
  Referenced from: /Applications/engflow/xcode-snap-0fb572901bb30049f/Xcode.app/Contents/PlugIns/IDESimulatorAvailability.ideplugin/Contents/MacOS/IDESimulatorAvailability
  Expected in: /Library/Developer/PrivateFrameworks/CoreSimulator.framework/Versions/A/CoreSimulator, NSBundlePath=/Applications/engflow/xcode-snap-0fb572901bb30049f/Xcode.app/Contents/PlugIns/IDESimulatorAvailability.ideplugin, NSLocalizedDescription=The bundle “IDESimulatorAvailability” couldn’t be loaded.}, dyldError = dlopen(/Applications/engflow/xcode-snap-0fb572901bb30049f/Xcode.app/Contents/PlugIns/IDESimulatorAvailability.ideplugin/Contents/MacOS/IDESimulatorAvailability, 0x0000): Symbol not found: _OBJC_CLASS_$_SimDiskImage
  Referenced from: /Applications/engflow/xcode-snap-0fb572901bb30049f/Xcode.app/Contents/PlugIns/IDESimulatorAvailability.ideplugin/Contents/MacOS/IDESimulatorAvailability
  Expected in: /Library/Developer/PrivateFrameworks/CoreSimulator.framework/Versions/A/CoreSimulator
2022-09-15 20:51:32.147 xcodebuild[32140:187526] [MT] DVTAssertions: ASSERTION FAILURE in /System/Volumes/Data/SWE/Apps/DT/BuildRoots/BuildRoot2/ActiveBuildRoot/Library/Caches/com.apple.xbs/Sources/DVTFrameworks/DVTFrameworks-21303/DVTFoundation/PlugInArchitecture/DataModel/DVTPlugIn.m:374
Details:  Failed to load code for plug-in com.apple.dt.IDESimulatorAvailability (/Applications/engflow/xcode-snap-0fb572901bb30049f/Xcode.app/Contents/PlugIns/IDESimulatorAvailability.ideplugin)
Please ensure Xcode packages are up-to-date — try running 'xcodebuild -runFirstLaunch'.

NSBundle error: Error Domain=NSCocoaErrorDomain Code=3588 "dlopen(/Applications/engflow/xcode-snap-0fb572901bb30049f/Xcode.app/Contents/PlugIns/IDESimulatorAvailability.ideplugin/Contents/MacOS/IDESimulatorAvailability, 0x0109): Symbol not found: _OBJC_CLASS_$_SimDiskImage
  Referenced from: /Applications/engflow/xcode-snap-0fb572901bb30049f/Xcode.app/Contents/PlugIns/IDESimulatorAvailability.ideplugin/Contents/MacOS/IDESimulatorAvailability
  Expected in: /Library/Developer/PrivateFrameworks/CoreSimulator.framework/Versions/A/CoreSimulator" UserInfo={NSLocalizedFailureReason=The bundle couldn’t be loaded., NSLocalizedRecoverySuggestion=Try reinstalling the bundle., NSFilePath=/Applications/engflow/xcode-snap-0fb572901bb30049f/Xcode.app/Contents/PlugIns/IDESimulatorAvailability.ideplugin/Contents/MacOS/IDESimulatorAvailability, NSDebugDescription=dlopen(/Applications/engflow/xcode-snap-0fb572901bb30049f/Xcode.app/Contents/PlugIns/IDESimulatorAvailability.ideplugin/Contents/MacOS/IDESimulatorAvailability, 0x0109): Symbol not found: _OBJC_CLASS_$_SimDiskImage
  Referenced from: /Applications/engflow/xcode-snap-0fb572901bb30049f/Xcode.app/Contents/PlugIns/IDESimulatorAvailability.ideplugin/Contents/MacOS/IDESimulatorAvailability
  Expected in: /Library/Developer/PrivateFrameworks/CoreSimulator.framework/Versions/A/CoreSimulator, NSBundlePath=/Applications/engflow/xcode-snap-0fb572901bb30049f/Xcode.app/Contents/PlugIns/IDESimulatorAvailability.ideplugin, NSLocalizedDescription=The bundle “IDESimulatorAvailability” couldn’t be loaded.}
Object:   <DVTPlugIn: 0x600000540be0>
Method:   -loadAssertingOnError:error:
Thread:   <_NSMainThread: 0x600002110380>{number = 1, name = main}
Hints: 

Backtrace:
  0  0x0000000107422f81
  1  0x00000001074224b5
  2  0x00000001074226c1
  3  0x00000001072993ba
  4  0x0000000107254c73
  5  0x0000000107252a1f
  6  0x00007ff819b65317
  7  0x00007ff819b727ee
  8  0x00000001074715a1
  9  0x00000001074470d8
 10  0x00000001072528a3
 11  0x0000000107252af5
 12  0x0000000108a5cf66
 13  0x0000000108a5c526
 14  0x0000000108a5b919
 15  0x0000000105cbf9a4
 16  0x0000000105a4220a
sh: line 1: 32142 Abort trap: 6           /Applications/engflow/xcode-snap-0fb572901bb30049f/Xcode.app/Contents/Developer/usr/bin/xcodebuild -sdk /Applications/engflow/xcode-snap-0fb572901bb30049f/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -find python3 2> /dev/null
python3: error: sh -c '/Applications/engflow/xcode-snap-0fb572901bb30049f/Xcode.app/Contents/Developer/usr/bin/xcodebuild -sdk /Applications/engflow/xcode-snap-0fb572901bb30049f/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -find python3 2> /dev/null' failed with exit code 34304: (null) (errno=No such file or directory)
xcode-select: Failed to locate 'python3', and no install could be requested (perhaps no UI is present). Please install manually from 'developer.apple.com'.
Target //examples/swift/hello_world:app failed to build
INFO: Elapsed time: 413.877s, Critical Path: 166.33s
INFO: 4166 processes: 3185 remote cache hit, 978 internal, 3 remote.
FAILED: Build did NOT complete successfully
FAILED: Build did NOT complete successfully
INFO: Streaming build results to: https://envoy.cluster.engflow.com/invocation/9ac70508-aa6f-4ae4-904d-326dd4f1355b
FAILED: Build did NOT complete successfully