question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

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

See original GitHub issue

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:

Issue Analytics

  • State:closed
  • Created 3 years ago
  • Reactions:51
  • Comments:17

github_iconTop GitHub Comments

17reactions
swushicommented, Jul 27, 2021

We are also still running into this issue with our team, and are constantly ping-ponging changes to our Podfile.lock with just this one line.

11reactions
thaapasacommented, Mar 22, 2021

For reference, this is what I now run to fix this bug (and a bug with nvm) in yarn postinstall script:

#!/bin/bash

OS=`uname`

echo "Fixing RN 0.64.0 bugs:"
cd node_modules/react-native/scripts
echo "- unset PREFIX in find-node.sh"
if [ `cat find-node.sh | grep 'unset PREFIX' | wc -l` -lt 1 ]
then
  cp find-node.sh tmp
  head -n 1 tmp >find-node.sh
  echo "unset PREFIX" >>find-node.sh
  tail -n +2 tmp >>find-node.sh
  rm tmp
fi

if [ "$OS" = 'Darwin' ]
then
  # for MacOS; cannot install Pods on Win/Linux
  echo "- switch to relative paths in react_native_pods.rb "
  sed -i '' -e "s/File[.]join[(]__dir__, \"[.][.]\"[)]/\"..\/..\/node_modules\/react-native\"/" react_native_pods.rb
  sed -i '' -e "s/#{File[.]join[(]__dir__, \"generate-specs.sh\"[)]}/..\/..\/node_modules\/react-native\/scripts\/generate-specs.sh/" react_native_pods.rb
  sed -i '' -e "s/spec[.]prepare_command = \"#/spec.prepare_command = \"cd ..\/.. \&\& #/" react_native_pods.rb
fi

cd - >/dev/null
Read more comments on GitHub >

github_iconTop Results From Across the Web

React Native Version 0.64 - No podspec found for ` ...
Using a 0.63 version gives errors like the following error: CocoaPods could not find compatible versions for pod "ReactCommon/jscallinvoker" ...
Read more >
Troubleshooting
Within that folder, go to Build → Intermediates.noindex → Pods.build → Debug-iphonesimulator (or the equivalent for your iOS device, ...
Read more >
command phasescriptexecution failed with a nonzero exit ...
React Native - FBReactNativeSpec Command PhaseScriptExecution failed with a ... not work for me solution delete pod install pod again Any one can...
Read more >
Managed EAS iOS build fails on Glob (pod install)
I wouldn't have expected to see your app name there. But if I build an Expo SDK 44 app then I do not...
Read more >
The Boost C library source code used to build React - kandi
cd ios && pod install && cd .. && npm run ios # Enables Flipper. # Note that if you have use_frameworks! enabled,...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found