From 1da608f6f17bf61b42b35517db470bb656e6d52e Mon Sep 17 00:00:00 2001 From: Janic Duplessis Date: Mon, 16 Jun 2025 02:05:30 -0700 Subject: [PATCH] Fix RNTester hermesc build issue on iOS (#51989) Summary: I am not sure exactly why, but I've been getting this error when running RNTester on iOS, when it tries to build hermesc from source. We're clearing the env using `env -i` which seems to cause the issue. If I add PATH to the env we set then it builds fine. ``` ++ hermesc_dir_path=/Users/janicduplessis/Developer/react-native/packages/rn-tester/Pods/hermes-engine/build_host_hermesc ++ shift ++ jsi_path=/Users/janicduplessis/Developer/react-native/packages/rn-tester/Pods/../../react-native/ReactCommon/jsi +++ xcode-select -p ++ SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk ++ env -i SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk /opt/homebrew/bin/cmake -S /Users/janicduplessis/Developer/react-native/packages/rn-tester/Pods/hermes-engine -B /Users/janicduplessis/Developer/react-native/packages/rn-tester/Pods/hermes-engine/build_host_hermesc -DJSI_DIR=/Users/janicduplessis/Developer/react-native/packages/rn-tester/Pods/../../react-native/ReactCommon/jsi CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool. CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage -- Configuring incomplete, errors occurred! Command PhaseScriptExecution failed with a nonzero exit code ``` ## Changelog: [INTERNAL] [FIXED] - Fix RNTester hermesc build issue on iOS Pull Request resolved: https://github.com/facebook/react-native/pull/51989 Test Plan: Build RN tester locally Reviewed By: cortinico Differential Revision: D76606335 Pulled By: cipolleschi fbshipit-source-id: f442b77aefb3afacd6d9fb1f3d515b8d63c526ba --- .../hermes-engine/utils/build-hermesc-xcode.sh | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/react-native/sdks/hermes-engine/utils/build-hermesc-xcode.sh b/packages/react-native/sdks/hermes-engine/utils/build-hermesc-xcode.sh index 132ee54c734..7567ad11aa8 100755 --- a/packages/react-native/sdks/hermes-engine/utils/build-hermesc-xcode.sh +++ b/packages/react-native/sdks/hermes-engine/utils/build-hermesc-xcode.sh @@ -10,9 +10,17 @@ hermesc_dir_path="$1"; shift jsi_path="$1" # This script is supposed to be executed from Xcode "run script" phase. -# Xcode sets up its build environment based on the build target (iphone, iphonesimulator, macodsx). +# Xcode sets up its build environment based on the build target (iphone, iphonesimulator, macosx). # We want to make sure that hermesc is built for mac. # So we clean the environment with env -i, and explicitly set SDKROOT to macosx SDKROOT=$(xcode-select -p)/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -env -i SDKROOT="$SDKROOT" "$CMAKE_BINARY" -S "${PODS_ROOT}/hermes-engine" -B "$hermesc_dir_path" -DJSI_DIR="$jsi_path" -env -i SDKROOT="$SDKROOT" "$CMAKE_BINARY" --build "$hermesc_dir_path" --target hermesc -j "$(sysctl -n hw.ncpu)" + +env -i \ + PATH="$PATH" \ + SDKROOT="$SDKROOT" \ + "$CMAKE_BINARY" -S "${PODS_ROOT}/hermes-engine" -B "$hermesc_dir_path" -DJSI_DIR="$jsi_path" + +env -i \ + PATH="$PATH" \ + SDKROOT="$SDKROOT" \ + "$CMAKE_BINARY" --build "$hermesc_dir_path" --target hermesc -j "$(sysctl -n hw.ncpu)"