mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Fix missing path escape patterns in Xcode scripts for projects with spaces (#53194)
Summary: When running a project in a path that contains any spaces, the scripts have several escape patterns that don't handle this path correctly. For example, `"/absolute/path/with spaces"` may be rendered as `/absolute/path/with spaces` and this shows as an output error such as `No such file or directory /absolute/path/with` This was likely a longstanding issue, but is unexpected for some beginners that first try out React Native. While it's not recommended to create a path like this, it's certainly not hard to make this mistake. ## Changelog: [IOS] [FIXED] - fix scripts for paths containing whitespaces Pull Request resolved: https://github.com/facebook/react-native/pull/53194 Test Plan: tested locally; create a React Native or Expo project in a folder containing a space (e.g. `/my/path/with spaces/new-app` and build the project. With changes applied, the build should succeed. (There's related failures in `expo/expo` that need fixing too) Reviewed By: robhogan Differential Revision: D79993537 Pulled By: cipolleschi fbshipit-source-id: b32697ce2405c403c410b3ceaed7e161e4a48537
This commit is contained in:
committed by
React Native Bot
parent
8ace21f157
commit
03952ba3df
+6
-6
@@ -497,9 +497,9 @@ export RCT_SCRIPT_APP_PATH=\\"$RCT_SCRIPT_POD_INSTALLATION_ROOT/..\\"
|
||||
export RCT_SCRIPT_OUTPUT_DIR=\\"$RCT_SCRIPT_POD_INSTALLATION_ROOT\\"
|
||||
export RCT_SCRIPT_TYPE=\\"withCodegenDiscovery\\"
|
||||
|
||||
SCRIPT_PHASES_SCRIPT=\\"$RCT_SCRIPT_RN_DIR/scripts/react_native_pods_utils/script_phases.sh\\"
|
||||
WITH_ENVIRONMENT=\\"$RCT_SCRIPT_RN_DIR/scripts/xcode/with-environment.sh\\"
|
||||
/bin/sh -c \\"$WITH_ENVIRONMENT $SCRIPT_PHASES_SCRIPT\\"
|
||||
export SCRIPT_PHASES_SCRIPT=\\"$RCT_SCRIPT_RN_DIR/scripts/react_native_pods_utils/script_phases.sh\\"
|
||||
export WITH_ENVIRONMENT=\\"$RCT_SCRIPT_RN_DIR/scripts/xcode/with-environment.sh\\"
|
||||
/bin/sh -c '\\"$WITH_ENVIRONMENT\\" \\"$SCRIPT_PHASES_SCRIPT\\"'
|
||||
SCRIPT
|
||||
}
|
||||
|
||||
@@ -976,9 +976,9 @@ export RCT_SCRIPT_APP_PATH=\\"$RCT_SCRIPT_POD_INSTALLATION_ROOT/..\\"
|
||||
export RCT_SCRIPT_OUTPUT_DIR=\\"$RCT_SCRIPT_POD_INSTALLATION_ROOT\\"
|
||||
export RCT_SCRIPT_TYPE=\\"withCodegenDiscovery\\"
|
||||
|
||||
SCRIPT_PHASES_SCRIPT=\\"$RCT_SCRIPT_RN_DIR/scripts/react_native_pods_utils/script_phases.sh\\"
|
||||
WITH_ENVIRONMENT=\\"$RCT_SCRIPT_RN_DIR/scripts/xcode/with-environment.sh\\"
|
||||
/bin/sh -c \\"$WITH_ENVIRONMENT $SCRIPT_PHASES_SCRIPT\\"
|
||||
export SCRIPT_PHASES_SCRIPT=\\"$RCT_SCRIPT_RN_DIR/scripts/react_native_pods_utils/script_phases.sh\\"
|
||||
export WITH_ENVIRONMENT=\\"$RCT_SCRIPT_RN_DIR/scripts/xcode/with-environment.sh\\"
|
||||
/bin/sh -c '\\"$WITH_ENVIRONMENT\\" \\"$SCRIPT_PHASES_SCRIPT\\"'
|
||||
SCRIPT
|
||||
}
|
||||
|
||||
|
||||
Vendored
+3
-3
@@ -83,9 +83,9 @@ export RCT_SCRIPT_APP_PATH="$RCT_SCRIPT_POD_INSTALLATION_ROOT/${relativeAppPath.
|
||||
export RCT_SCRIPT_OUTPUT_DIR="$RCT_SCRIPT_POD_INSTALLATION_ROOT"
|
||||
export RCT_SCRIPT_TYPE="withCodegenDiscovery"
|
||||
|
||||
SCRIPT_PHASES_SCRIPT="$RCT_SCRIPT_RN_DIR/scripts/react_native_pods_utils/script_phases.sh"
|
||||
WITH_ENVIRONMENT="$RCT_SCRIPT_RN_DIR/scripts/xcode/with-environment.sh"
|
||||
/bin/sh -c "$WITH_ENVIRONMENT $SCRIPT_PHASES_SCRIPT"
|
||||
export SCRIPT_PHASES_SCRIPT="$RCT_SCRIPT_RN_DIR/scripts/react_native_pods_utils/script_phases.sh"
|
||||
export WITH_ENVIRONMENT="$RCT_SCRIPT_RN_DIR/scripts/xcode/with-environment.sh"
|
||||
/bin/sh -c '"$WITH_ENVIRONMENT" "$SCRIPT_PHASES_SCRIPT"'
|
||||
SCRIPT`;
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
# Print commands before executing them (useful for troubleshooting)
|
||||
set -x -e
|
||||
DEST=$CONFIGURATION_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH
|
||||
DEST="$CONFIGURATION_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH"
|
||||
|
||||
# Enables iOS devices to get the IP address of the machine running Metro
|
||||
if [[ ! "$SKIP_BUNDLING_METRO_IP" && "$CONFIGURATION" = *Debug* && ! "$PLATFORM_NAME" == *simulator ]]; then
|
||||
@@ -59,7 +59,7 @@ esac
|
||||
# Path to react-native folder inside node_modules
|
||||
REACT_NATIVE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
# Most projects have their project root, one level up from their Xcode project dir (the "ios" directory)
|
||||
PROJECT_ROOT=${PROJECT_ROOT:-"$PROJECT_DIR/.."}
|
||||
PROJECT_ROOT="${PROJECT_ROOT:-"$PROJECT_DIR/.."}"
|
||||
|
||||
cd "$PROJECT_ROOT" || exit
|
||||
|
||||
|
||||
@@ -43,5 +43,5 @@ fi
|
||||
|
||||
# Execute argument, if present
|
||||
if [ -n "$1" ]; then
|
||||
$1
|
||||
"$1"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user