-
Notifications
You must be signed in to change notification settings - Fork 24.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[iOS] FBReactNativeSpec pod checksum is not stable (RN 0.64.0) #31193
Comments
The culprit seems to be line 152 of prefix = options[:path] ||= File.join(__dir__, "..") and line 195 with another
If I change line 152 to prefix = options[:path] ||= "../../node_modules/react-native" and line 195 to :script => "set -o pipefail\n\nbash -l -c '#{env_vars} CODEGEN_MODULES_LIBRARY_NAME=#{codegen_modules_library_name} ../../node_modules/react-native/scripts/generate-specs.sh' 2>&1 | tee \"${SCRIPT_OUTPUT_FILE_0}\"", and line 200 to spec.prepare_command = "cd ../.. && #{mkdir_command} && touch #{generated_files.reduce() { |str, file| str + " " + file }}" it seems to work. Generated pod spec now looks like this, and should be stable. {
"name": "FBReactNativeSpec",
"version": "0.64.0",
"summary": "-",
"homepage": "https://reactnative.dev/",
"license": "MIT",
"authors": "Facebook, Inc. and its affiliates",
"platforms": {
"ios": "10.0"
},
"compiler_flags": "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32 -Wno-nullability-completeness",
"source": {
"git": "https://github.com/facebook/react-native.git",
"tag": "v0.64.0"
},
"source_files": "**/*.{c,h,m,mm,cpp}",
"header_dir": "FBReactNativeSpec",
"pod_target_xcconfig": {
"USE_HEADERMAP": "YES",
"CLANG_CXX_LANGUAGE_STANDARD": "c++14",
"HEADER_SEARCH_PATHS": "\"$(PODS_TARGET_SRCROOT)/React/FBReactNativeSpec\" \"$(PODS_ROOT)/RCT-Folly\""
},
"dependencies": {
"RCT-Folly": [
"2020.01.13.00"
],
"RCTRequired": [
"0.64.0"
],
"RCTTypeSafety": [
"0.64.0"
],
"React-Core": [
"0.64.0"
],
"React-jsi": [
"0.64.0"
],
"ReactCommon/turbomodule/core": [
"0.64.0"
]
},
"script_phases": {
"name": "Generate Specs",
"input_files": [
"../../node_modules/react-native/Libraries"
],
"output_files": [
"$(DERIVED_FILE_DIR)/codegen-FBReactNativeSpec.log",
"../../node_modules/react-native/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h",
"../../node_modules/react-native/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm"
],
"script": "set -o pipefail\n\nbash -l -c 'SRCS_DIR=../../node_modules/react-native/Libraries CODEGEN_MODULES_OUTPUT_DIR=../../node_modules/react-native/React/FBReactNativeSpec/FBReactNativeSpec CODEGEN_MODULES_LIBRARY_NAME=FBReactNativeSpec ../../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": "cd ../.. && mkdir -p ../../node_modules/react-native/React/FBReactNativeSpec/FBReactNativeSpec && touch ../../node_modules/react-native/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h ../../node_modules/react-native/React/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec-generated.mm"
} |
Hey! We are running into the same and having failing builds because of this, as the Pods-folder is versioned in our project as recommended here: https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control. We can of course unversion the Pods-folder and add @thaapasa is there a way to apply your fix on |
Someone suggested using patch-package (https://www.npmjs.com/package/patch-package), but I think I'll go with a custom postinstall script with some sort of |
Made a PR for this small fix: #31195 |
This is a duplicate: #31121 (sorry, did not find that one before) |
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 |
@thaapasa I only just noticed when trying to apply the same fix, there is still an absolute path left in the value of
But maybe it's not a problem for the way you've constructed your script. |
@FreekVanDooren, actually that is a problem, since it's in the podspec and the sha is calculated from that. Thanks for noticing that, I had missed that altogether. I'll see if that can be fixed as well. |
I fixed the path to |
The hash in Podfile.lock keep changing on different developer machines. That is because the file the hash is based on contains absolute paths. See facebook/react-native#31193 for more info. This commit adds a postinstall script that fixes that bug.
Summary: The `SPEC CHECKSUM` for `FBReactNativeSpec` in `packages/rn-tester/Podfile.lock` and in standalone apps's `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. The codegen script and CocoaPods configuration have been updated to use relative paths. Closes facebook#31193 Changelog: [Internal] [Codegen] Avoid encoding local path in Podfile.lock Reviewed By: fkgozali Differential Revision: D27754337 fbshipit-source-id: 2f5607d4e1ce21489f28f394cb852c36cace6798
Summary: The `SPEC CHECKSUM` for `FBReactNativeSpec` in `packages/rn-tester/Podfile.lock` and in standalone apps's `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. The codegen script and CocoaPods configuration have been updated to use relative paths. Closes facebook#31193 Changelog: [Internal] [Codegen] Avoid encoding local path in Podfile.lock Reviewed By: fkgozali Differential Revision: D27754337 fbshipit-source-id: 2f5607d4e1ce21489f28f394cb852c36cace6798
Summary: The `SPEC CHECKSUM` for `FBReactNativeSpec` in `packages/rn-tester/Podfile.lock` and in standalone apps's `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. The codegen script and CocoaPods configuration have been updated to use relative paths. Closes facebook#31193 Changelog: [Internal] [Codegen] Avoid encoding local path in Podfile.lock Reviewed By: fkgozali Differential Revision: D27754337 fbshipit-source-id: 2f5607d4e1ce21489f28f394cb852c36cace6798 (cherry picked from commit bdfe2a5)
I have create patch-package for RN version 0.64.2 for doesn't want to use sed and script https://gist.github.com/zeemyself/69e2dce7cd88b0a1cb6dbcec54d1f265 |
Still running into this with 0.64.2. Why was this issue closed if it still persists?
Is the only solution to patch over node_modules/react-native? |
Summary: This fixes [this GitHub issue](facebook/react-native#31193) by pulling in [the commit](facebook/react-native@bdfe2a5) that resolved it. Test Plan: `pod install` Reviewers: atul Reviewed By: atul Subscribers: KatPo, palys-swm, Adrian Differential Revision: https://phabricator.ashoat.com/D1739
Taken from facebook@bdfe2a5 Avoid encoding local path in Podfile.lock Summary: The `SPEC CHECKSUM` for `FBReactNativeSpec` in `packages/rn-tester/Podfile.lock` and in standalone apps's `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. The codegen script and CocoaPods configuration have been updated to use relative paths. Closes facebook#31193 Changelog: [Internal] [Codegen] Avoid encoding local path in Podfile.lock Reviewed By: fkgozali Differential Revision: D27754337 fbshipit-source-id: 2f5607d4e1ce21489f28f394cb852c36cace6798
We are also still running into this issue with our team, and are constantly ping-ponging changes to our |
Summary: The `SPEC CHECKSUM` for `FBReactNativeSpec` in `packages/rn-tester/Podfile.lock` and in standalone apps's `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. The codegen script and CocoaPods configuration have been updated to use relative paths. Closes facebook#31193 Changelog: [Internal] [Codegen] Avoid encoding local path in Podfile.lock Reviewed By: fkgozali Differential Revision: D27754337 fbshipit-source-id: 2f5607d4e1ce21489f28f394cb852c36cace6798 (cherry picked from commit bdfe2a5)
We are still facing this in 0.64.2 as others have stated. Can this issue be re-opened or should a new one be created? |
Is this being fixed in 0.65? |
Summary: The `SPEC CHECKSUM` for `FBReactNativeSpec` in `packages/rn-tester/Podfile.lock` and in standalone apps's `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. The codegen script and CocoaPods configuration have been updated to use relative paths. Closes facebook#31193 Changelog: [Internal] [Codegen] Avoid encoding local path in Podfile.lock Reviewed By: fkgozali Differential Revision: D27754337 fbshipit-source-id: 2f5607d4e1ce21489f28f394cb852c36cace6798
Summary: The `SPEC CHECKSUM` for `FBReactNativeSpec` in `packages/rn-tester/Podfile.lock` and in standalone apps's `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. The codegen script and CocoaPods configuration have been updated to use relative paths. Closes facebook/react-native#31193 Changelog: [Internal] [Codegen] Avoid encoding local path in Podfile.lock Reviewed By: fkgozali Differential Revision: D27754337 fbshipit-source-id: 2f5607d4e1ce21489f28f394cb852c36cace6798 (cherry picked from commit bdfe2a5)
Summary: The `SPEC CHECKSUM` for `FBReactNativeSpec` in `packages/rn-tester/Podfile.lock` and in standalone apps's `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. The codegen script and CocoaPods configuration have been updated to use relative paths. Closes facebook#31193 Changelog: [Internal] [Codegen] Avoid encoding local path in Podfile.lock Reviewed By: fkgozali Differential Revision: D27754337 fbshipit-source-id: 2f5607d4e1ce21489f28f394cb852c36cace6798
I don't think so. We used this script to fix it as a package.postinstall, but it seems to have stopped working after upgrading to RN 0.66.4 so we're back at square one. |
Description
The
SPEC CHECKSUM
forFBReactNativeSpec
inios/Podfile.lock
varies between development machines. This is caused by local paths in the output ofpod ipc spec FBReactNativeSpec.podspec
, such asoutput_files
andprepare_command
. This causes the Podfile.lock to constantly change whenpod 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).Steps To Reproduce
npx react-native init TestProject
cd TestProject/ios && pod install
ios/Podfile.lock
now has a checksum that matchespod ipc spec FBReactNativeSpec.podspec | openssl sha1
innode_modules/react-native/React/FBReactNativeSpec
, andpod ipc spec FBReactNativeSpec.podspec
contains local paths, such as: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:
The text was updated successfully, but these errors were encountered: