diff --git a/CHANGELOG.md b/CHANGELOG.md index fc634f92b4..5837019405 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,12 @@ > make sure you follow our [migration guide](https://docs.sentry.io/platforms/react-native/migration/) first. +## Unreleased + +### Fixes + +- Fix the issue with uploading iOS Debug Symbols in EAS Build when using pnpm ([#6076](https://github.com/getsentry/sentry-react-native/issues/6076)) + ## 8.10.0 ### Features diff --git a/packages/core/scripts/sentry-xcode-debug-files.sh b/packages/core/scripts/sentry-xcode-debug-files.sh index 8bbd18a6f7..fe65325aa6 100755 --- a/packages/core/scripts/sentry-xcode-debug-files.sh +++ b/packages/core/scripts/sentry-xcode-debug-files.sh @@ -29,7 +29,6 @@ RN_PROJECT_ROOT="${SENTRY_PROJECT_ROOT:-${PROJECT_DIR}/..}" [ -z "$SENTRY_PROPERTIES" ] && export SENTRY_PROPERTIES=sentry.properties [ -z "$SENTRY_DOTENV_PATH" ] && [ -f "$RN_PROJECT_ROOT/.env.sentry-build-plugin" ] && export SENTRY_DOTENV_PATH="$RN_PROJECT_ROOT/.env.sentry-build-plugin" -[ -z "$SENTRY_CLI_EXECUTABLE" ] && SENTRY_CLI_PACKAGE_PATH=$("$LOCAL_NODE_BINARY" --print "require('path').dirname(require.resolve('@sentry/cli/package.json'))") [ -z "$SOURCEMAP_FILE" ] && export SOURCEMAP_FILE="$DERIVED_FILE_DIR/main.jsbundle.map" if [ -z "$SENTRY_CLI_EXECUTABLE" ]; then @@ -44,12 +43,17 @@ if [ -z "$SENTRY_CLI_EXECUTABLE" ]; then PNPM_BIN_PATH="$PWD/../node_modules/@sentry/react-native/node_modules/.bin/sentry-cli" if [ -f "$PNPM_BIN_PATH" ]; then - CLI_FILE_TEXT=$(cat "$PNPM_BIN_PATH") - - # Filter where PNPM stored Sentry CLI - NODE_PATH_LINE=$(echo "$CLI_FILE_TEXT" | grep -oE 'NODE_PATH="[^"]+"' | head -n1) - NODE_PATH_VALUE=$(echo "$NODE_PATH_LINE" | sed -E 's/^NODE_PATH="([^"]+)".*/\1/') - SENTRY_CLI_PACKAGE_PATH=${NODE_PATH_VALUE%%/bin*} + NODE_PATH_VALUE=$(grep -oE 'NODE_PATH="[^"]+"' "$PNPM_BIN_PATH" | head -n1 | sed -E 's/^NODE_PATH="([^"]*)"/\1/') + # Split on ':' and pick the first entry containing `@sentry/cli/`. Handling each + # entry separately avoids producing colon-joined garbage when the matching entry + # isn't the first one in NODE_PATH. + IFS=':' read -ra NODE_PATH_ENTRIES <<< "$NODE_PATH_VALUE" + for entry in "${NODE_PATH_ENTRIES[@]}"; do + if [[ "$entry" == *@sentry/cli/* ]]; then + SENTRY_CLI_PACKAGE_PATH="${entry%%@sentry/cli/*}@sentry/cli/bin/sentry-cli" + break + fi + done fi fi fi diff --git a/packages/core/scripts/sentry-xcode.sh b/packages/core/scripts/sentry-xcode.sh index ca83e7f2d9..924b5141b2 100755 --- a/packages/core/scripts/sentry-xcode.sh +++ b/packages/core/scripts/sentry-xcode.sh @@ -38,12 +38,17 @@ if [ -z "$SENTRY_CLI_EXECUTABLE" ]; then PNPM_BIN_PATH="$PWD/../node_modules/@sentry/react-native/node_modules/.bin/sentry-cli" if [ -f "$PNPM_BIN_PATH" ]; then - CLI_FILE_TEXT=$(cat "$PNPM_BIN_PATH") - - # Filter where PNPM stored Sentry CLI - NODE_PATH_LINE=$(echo "$CLI_FILE_TEXT" | grep -oE 'NODE_PATH="[^"]+"' | head -n1) - NODE_PATH_VALUE=$(echo "$NODE_PATH_LINE" | sed -E 's/^NODE_PATH="([^"]+)".*/\1/') - SENTRY_CLI_PACKAGE_PATH=${NODE_PATH_VALUE%%/bin*} + NODE_PATH_VALUE=$(grep -oE 'NODE_PATH="[^"]+"' "$PNPM_BIN_PATH" | head -n1 | sed -E 's/^NODE_PATH="([^"]*)"/\1/') + # Split on ':' and pick the first entry containing `@sentry/cli/`. Handling each + # entry separately avoids producing colon-joined garbage when the matching entry + # isn't the first one in NODE_PATH. + IFS=':' read -ra NODE_PATH_ENTRIES <<< "$NODE_PATH_VALUE" + for entry in "${NODE_PATH_ENTRIES[@]}"; do + if [[ "$entry" == *@sentry/cli/* ]]; then + SENTRY_CLI_PACKAGE_PATH="${entry%%@sentry/cli/*}@sentry/cli/bin/sentry-cli" + break + fi + done fi fi fi