Skip to content

[iOS] FBReactNativeSpec pod checksum is not stable (RN 0.64.0) #31193

Description

@thaapasa

Description

The SPEC CHECKSUM for FBReactNativeSpec in ios/Podfile.lock varies between development machines. This is caused by local paths in the output of pod ipc spec FBReactNativeSpec.podspec, such as output_files and prepare_command. This causes the Podfile.lock to constantly change when pod install is run on different developers' machines.

React Native version: 0.64.0

This happens for a clean install of React Native 0.64.0. Previous versions are not affected (pod ipc spec does not include local paths).

System:
    OS: macOS 11.2.3
    CPU: (16) x64 Intel(R) Core(TM) i9-9980HK CPU @ 2.40GHz
    Memory: 5.41 GB / 32.00 GB
    Shell: 5.8 - /bin/zsh
  Binaries:
    Node: 14.15.5 - /var/folders/tq/3s__skh57_300l201pdk9gjh0000gn/T/yarn--1616135350751-0.5787894354182639/node
    Yarn: 1.22.0 - /var/folders/tq/3s__skh57_300l201pdk9gjh0000gn/T/yarn--1616135350751-0.5787894354182639/yarn
    npm: 6.14.11 - ~/.nvm/versions/node/v14.15.5/bin/npm
    Watchman: 4.9.0 - /usr/local/bin/watchman
  Managers:
    CocoaPods: 1.10.1 - /usr/local/bin/pod
  SDKs:
    iOS SDK:
      Platforms: iOS 14.4, DriverKit 20.2, macOS 11.1, tvOS 14.3, watchOS 7.2
    Android SDK:
      API Levels: 28, 29
      Build Tools: 28.0.3, 29.0.2, 29.0.3, 30.0.0
      System Images: android-21 | Google APIs ARM EABI v7a, android-21 | Google APIs Intel x86 Atom, android-29 | Google Play Intel x86 Atom
      Android NDK: Not Found
  IDEs:
    Android Studio: 4.1 AI-201.8743.12.41.7042882
    Xcode: 12.4/12D4e - /usr/bin/xcodebuild
  Languages:
    Java: 1.8.0_252 - /usr/bin/javac
  npmPackages:
    @react-native-community/cli: Not Found
    react: 17.0.1 => 17.0.1
    react-native: 0.64.0 => 0.64.0
    react-native-macos: Not Found
  npmGlobalPackages:
    *react-native*: Not Found
✨  Done in 4.48s.

Steps To Reproduce

  1. npx react-native init TestProject
  2. cd TestProject/ios && pod install

ios/Podfile.lock now has a checksum that matches pod ipc spec FBReactNativeSpec.podspec | openssl sha1 in node_modules/react-native/React/FBReactNativeSpec, and pod ipc spec FBReactNativeSpec.podspec contains local paths, such as:

{
  "script_phases": {
    "name": "Generate Specs",
    "input_files": [
      "/Users/thaapasa/rn/PodTestProject/node_modules/react-native/scripts/../Libraries"
    ],
    "output_files": [
      "$(DERIVED_FILE_DIR)/codegen-FBReactNativeSpec.log",
      "/Users/thaapasa/rn/PodTestProject/node_modules/react-native/scripts/../React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h",
      "/Users/thaapasa/rn/PodTestProject/node_modules/react-native/scripts/../React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm"
    ],
    "script": "set -o pipefail\n\nbash -l -c 'SRCS_DIR=/Users/thaapasa/rn/PodTestProject/node_modules/react-native/scripts/../Libraries CODEGEN_MODULES_OUTPUT_DIR=/Users/thaapasa/rn/PodTestProject/node_modules/react-native/scripts/../React/FBReactNativeSpec/FBReactNativeSpec CODEGEN_MODULES_LIBRARY_NAME=FBReactNativeSpec /Users/thaapasa/rn/PodTestProject/node_modules/react-native/scripts/generate-specs.sh' 2>&1 | tee \"${SCRIPT_OUTPUT_FILE_0}\"",
    "execution_position": "before_compile",
    "show_env_vars_in_log": true
  },
  "prepare_command": "mkdir -p /Users/thaapasa/rn/PodTestProject/node_modules/react-native/scripts/../React/FBReactNativeSpec/FBReactNativeSpec && touch /Users/thaapasa/rn/PodTestProject/node_modules/react-native/scripts/../React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h /Users/thaapasa/rn/PodTestProject/node_modules/react-native/scripts/../React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm"
}

Expected Results

pod ipc spec FBReactNativeSpec.podspec should give identical output on different developer machines; i.e. not containing absolute local paths.

Snack, code example, screenshot, or link to a repository:

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions