0

My Monterey has both Xcode 14 beta and Xcode 14.0 installed. Today I removed Xcode 14 beta and it breaks the setup for React Native 0.70.1 project (was built with Xcode 14.0 from beginning). After resetting the cli command tool in Xcode 14, the project was able to finish pod deintegrate successfully. However the following pod install throws c compile related error with /bin/bash -c. The cocoa pod version is 1.11.x:

Downloading dependencies
Installing AliyunOSSiOS (2.10.15)
Installing AppCenter (4.4.3)
Installing AppCenterReactNativeShared (4.4.5)
Installing Base64 (1.1.2)
Installing CocoaAsyncSocket (7.6.5)
Installing CodePush (7.0.5)
Installing DoubleConversion (1.1.6)
Installing FBLazyVector (0.70.1)
Installing FBReactNativeSpec (0.70.1)
Installing Flipper (0.125.0)
Installing Flipper-Boost-iOSX (1.76.0.1.11)
Installing Flipper-DoubleConversion (3.2.0.1)
Installing Flipper-Fmt (7.1.7)
Installing Flipper-Folly (2.6.10)
Installing Flipper-Glog (0.5.0.5)
Installing Flipper-PeerTalk (0.0.4)
Installing Flipper-RSocket (1.4.3)
Installing FlipperKit (0.125.0)
Installing JWT (3.0.0-beta.14)
Installing OpenSSL-Universal (1.1.1100)
Installing RCT-Folly (2021.07.22.00)
Installing RCTRequired (0.70.1)
Installing RCTTypeSafety (0.70.1)
Installing RNCMaskedView (0.2.7)
Installing RNCPicker (2.4.4)
Installing RNDeviceInfo (10.2.0)
Installing RNGestureHandler (2.6.1)
Installing RNReanimated (2.10.0)
Installing RNScreens (3.17.0)
Installing RNVectorIcons (9.2.0)
Installing React (0.70.1)
Installing React-Codegen (0.70.1)
Installing React-Core (0.70.1)
Installing React-CoreModules (0.70.1)
Installing React-RCTActionSheet (0.70.1)
Installing React-RCTAnimation (0.70.1)
Installing React-RCTBlob (0.70.1)
Installing React-RCTImage (0.70.1)
Installing React-RCTLinking (0.70.1)
Installing React-RCTNetwork (0.70.1)
Installing React-RCTSettings (0.70.1)
Installing React-RCTText (0.70.1)
Installing React-RCTVibration (0.70.1)
Installing React-bridging (0.70.1)
Installing React-callinvoker (0.70.1)
Installing React-cxxreact (0.70.1)
Installing React-hermes (0.70.1)
Installing React-jsi (0.70.1)
Installing React-jsiexecutor (0.70.1)
Installing React-jsinspector (0.70.1)
Installing React-logger (0.70.1)
Installing React-perflogger (0.70.1)
Installing React-runtimeexecutor (0.70.1)
Installing ReactCommon (0.70.1)
Installing SSZipArchive (2.2.3)
Installing SocketRocket (0.6.0)
Installing Yoga (1.14.0)
Installing YogaKit (1.18.1)
Installing appcenter-analytics (4.4.5)
Installing appcenter-core (4.4.5)
Installing appcenter-crashes (4.4.5)
Installing boost (1.76.0)
Installing fmt (6.2.1)
Installing glog (0.3.5)
[!] /bin/bash -c 
set -e
#!/bin/bash
# Copyright (c) Meta Platforms, Inc. and affiliates.
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.

set -e

PLATFORM_NAME="${PLATFORM_NAME:-iphoneos}"
CURRENT_ARCH="${CURRENT_ARCH}"

if [ -z "$CURRENT_ARCH" ] || [ "$CURRENT_ARCH" == "undefined_arch" ]; then
    # Xcode 10 beta sets CURRENT_ARCH to "undefined_arch", this leads to incorrect linker arg.
    # it's better to rely on platform name as fallback because architecture differs between simulator and device

    if [[ "$PLATFORM_NAME" == *"simulator"* ]]; then
        CURRENT_ARCH="x86_64"
    else
        CURRENT_ARCH="arm64"
    fi
fi

# @lint-ignore-every TXT2 Tab Literal
if [ "$CURRENT_ARCH" == "arm64" ]; then
    cat <<\EOF >>fix_glog_0.3.5_apple_silicon.patch
diff --git a/config.sub b/config.sub
index 1761d8b..43fa2e8 100755
--- a/config.sub
+++ b/config.sub
@@ -1096,6 +1096,9 @@ case $basic_machine in
        basic_machine=z8k-unknown
        os=-sim
        ;;
+   arm64-*)
+       basic_machine=$(echo $basic_machine | sed 's/arm64/aarch64/')
+       ;;
    none)
        basic_machine=none-none
        os=-none
EOF

    patch -p1 config.sub fix_glog_0.3.5_apple_silicon.patch
fi

export CC="$(xcrun -find -sdk $PLATFORM_NAME cc) -arch $CURRENT_ARCH -isysroot $(xcrun -sdk $PLATFORM_NAME --show-sdk-path)"
export CXX="$CC"

# Remove automake symlink if it exists
if [ -h "test-driver" ]; then
    rm test-driver
fi

# Manually disable gflags include to fix issue https://github.com/facebook/react-native/issues/28446
sed -i.bak -e 's/\@ac_cv_have_libgflags\@/0/' src/glog/logging.h.in && rm src/glog/logging.h.in.bak
sed -i.bak -e 's/HAVE_LIB_GFLAGS/HAVE_LIB_GFLAGS_DISABLED/' src/config.h.in && rm src/config.h.in.bak

./configure --host arm-apple-darwin

cat << EOF >> src/config.h
/* Add in so we have Apple Target Conditionals */
#ifdef __APPLE__
#include <TargetConditionals.h>
#include <Availability.h>
#endif

/* Special configuration for ucontext */
#undef HAVE_UCONTEXT_H
#undef PC_FROM_UCONTEXT
#if defined(__x86_64__)
#define PC_FROM_UCONTEXT uc_mcontext->__ss.__rip
#elif defined(__i386__)
#define PC_FROM_UCONTEXT uc_mcontext->__ss.__eip
#endif
EOF

# Prepare exported header include
EXPORTED_INCLUDE_DIR="exported/glog"
mkdir -p exported/glog
cp -f src/glog/log_severity.h "$EXPORTED_INCLUDE_DIR/"
cp -f src/glog/logging.h "$EXPORTED_INCLUDE_DIR/"
cp -f src/glog/raw_logging.h "$EXPORTED_INCLUDE_DIR/"
cp -f src/glog/stl_logging.h "$EXPORTED_INCLUDE_DIR/"
cp -f src/glog/vlog_is_on.h "$EXPORTED_INCLUDE_DIR/"

patching file config.sub
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for arm-apple-darwin-strip... no
checking for strip... strip
checking for a thread-safe mkdir -p... ./install-sh -c -d
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for arm-apple-darwin-gcc... /Applications/Xcode 14.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -arch arm64 -isysroot /Applications/Xcode 14.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.0.sdk
checking whether the C compiler works... no
/Users/macair/Library/Caches/CocoaPods/Pods/External/glog/2263bd123499e5b93b5efe24871be317-04b94/missing: Unknown `--is-lightweight' option
Try `/Users/macair/Library/Caches/CocoaPods/Pods/External/glog/2263bd123499e5b93b5efe24871be317-04b94/missing --help' for more information
configure: WARNING: 'missing' script is too old or missing
configure: error: in `/Users/macair/Library/Caches/CocoaPods/Pods/External/glog/2263bd123499e5b93b5efe24871be317-04b94':
configure: error: C compiler cannot create executables
See `config.log' for more details

I don't have clue about this error. What is missing with Xcode config here?

Update

$xcode-select -p outputs /Applications/Xcode 14.app/Contents/Developer which seems correct.

Here is podfile:

require_relative '../node_modules/react-native/scripts/react_native_pods'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'

platform :ios, '13'  #12.4
install! 'cocoapods', :deterministic_uuids => false

target 'xyz_app6' do
  config = use_native_modules!

  # Flags change depending on the env values.
  flags = get_default_flags()

  use_react_native!(
    :path => config[:reactNativePath],
    # Hermes is now enabled by default. Disable by setting this flag to false.
    # Upcoming versions of React Native may rely on get_default_flags(), but
    # we make it explicit here to aid in the React Native upgrade process.
    :hermes_enabled => true,
    :fabric_enabled => flags[:fabric_enabled],
    # Enables Flipper.
    #
    # Note that if you have use_frameworks! enabled, Flipper will not work and
    # you should disable the next line.
    :flipper_configuration => FlipperConfiguration.enabled,
    # An absolute path to your application root.
    :app_path => "#{Pod::Config.instance.installation_root}/.."
  )

  target 'xyz_app6Tests' do
    inherit! :complete
    # Pods for testing
  end

  #post_install do |installer|
    #installer.pods_project.targets.each do |target|
      #target.build_configurations.each do |config|
      # some older pods don't support some architectures, anything over iOS 11 resolves that
      #  config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0' #'12.0'
      #end
    #end
  #end

  post_install do |installer|
    react_native_post_install(
      installer,
      # Set `mac_catalyst_enabled` to `true` in order to apply patches
      # necessary for Mac Catalyst builds
      :mac_catalyst_enabled => false
    )
    __apply_Xcode_12_5_M1_post_install_workaround(installer)

  end
end
halfer
  • 19,824
  • 17
  • 99
  • 186
user938363
  • 9,990
  • 38
  • 137
  • 303
  • 1
    Does this answer your question? [Glog : configure: WARNING: 'missing' script is too old or missing](https://stackoverflow.com/questions/53028367/glog-configure-warning-missing-script-is-too-old-or-missing) – Abe Oct 04 '22 at 01:43
  • unfortunately No, tried `sudo xcode-select --switch /Applications/"Xcode 14.app" and error is the same for pod install. – user938363 Oct 04 '22 at 05:33
  • `Xcode-select -p` returns `/Applications/Xcode 14.app/Contents/Developer` – user938363 Oct 04 '22 at 05:50
  • 1
    The error disappeared after renaming app `Xcode 14` to `Xcode` and reset cli command line tools under Xcode preference->general->location. Not a conventional solution. – user938363 Oct 04 '22 at 18:22
  • 2
    nice, might be worth answering and accepting that then! – Abe Oct 04 '22 at 22:08

1 Answers1

0

The error disappeared after renaming app Xcode 14 to Xcode and reset cli command line tools under Xcode preference->general->location. Not a conventional solution

user938363
  • 9,990
  • 38
  • 137
  • 303