Skip to content
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

glog.podspec checksum is unstable (depending on Xcode version) #122

Closed
stianjensen opened this issue Mar 6, 2024 · 1 comment
Closed

Comments

@stianjensen
Copy link

Old Version

0.72.10

New Version

0.73.5

Description

If you run pod install locally, running with a version of Xcode that is version 14.3.1 or newer, the checksum for the glog podspec will be different than when you do the same with an Xcode version older than 14.3.1.

The source is the following code:
https://github.com/facebook/react-native/blob/1387725aabd42e02646899a36a2f76731268191c/packages/react-native/third-party-podspecs/glog.podspec#L41-L42

These lines cause DEFINES_MODULE to flip between YES and NO in the generated podspec, which results in different checksums for the file.

The source of the checksum diff is from this PR:
facebook/react-native#41058

I don't think cocoapods has a good general answer to having lockfiles shared between Xcode versions (at least not with the level of dynamic code in podspec files that react-native – necessarily – uses).

So I'm not sure if there's actually a way to fix this. And I do think that having glog install work at all on Xcode pre-14.3.1 is more important than being able to share a Podfile.lock with consistent hashes between environments running very different versions of Xcode.
But creating this issue in any case to flag the problem.

Steps to reproduce

  • Set up a fresh repo with react-native 0.73 or newer (with for instance Xcode 15.0).
  • Run pod install and commit the lockfile.
  • Push your code to CI or have a colleague pull your code (and say they are running Xcode 14.2 – the default on Github actions)
  • Run pod install on that machine
  • They will either get a diff in the Podfile.lock, or if running with --deployment, get an install error, since checksums do not match

Affected Platforms

Build - MacOS

Output of npx react-native info

info Fetching system and libraries information...
System:
  OS: macOS 13.6.4
  CPU: (10) arm64 Apple M2 Pro
  Memory: 520.89 MB / 16.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 20.10.0
    path: ~/.nvm/versions/node/v20.10.0/bin/node
  Yarn:
    version: 1.22.19
    path: /opt/homebrew/bin/yarn
  npm:
    version: 10.2.3
    path: ~/.nvm/versions/node/v20.10.0/bin/npm
  Watchman:
    version: 2023.12.04.00
    path: /opt/homebrew/bin/watchman
Managers:
  CocoaPods:
    version: 1.15.2
    path: /Users/stiaje/.rbenv/shims/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 23.2
      - iOS 17.2
      - macOS 14.2
      - tvOS 17.2
      - visionOS 1.0
      - watchOS 10.2
  Android SDK:
    API Levels:
      - "23"
      - "26"
      - "27"
      - "28"
      - "29"
      - "30"
      - "31"
      - "33"
    Build Tools:
      - 23.0.1
      - 25.0.2
      - 25.0.3
      - 26.0.1
      - 26.0.2
      - 27.0.0
      - 27.0.3
      - 28.0.2
      - 28.0.3
      - 29.0.2
      - 30.0.2
      - 30.0.3
      - 31.0.0
      - 33.0.0
    System Images:
      - android-30 | Google APIs Intel x86 Atom
      - android-31 | Google APIs Intel x86 Atom_64
    Android NDK: Not Found
IDEs:
  Android Studio: 2022.3 AI-223.8836.35.2231.11005911
  Xcode:
    version: 15.2/15C500b
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 17.0.6
    path: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/javac
  Ruby:
    version: 3.0.6
    path: /Users/stiaje/.rbenv/shims/ruby
npmPackages:
  "@react-native-community/cli": Not Found
  react:
    installed: 18.2.0
    wanted: 18.2.0
  react-native:
    installed: 0.73.5
    wanted: 0.73.5
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: false
iOS:
  hermesEnabled: true
  newArchEnabled: false

Stacktrace or Logs

pod install --deployment
  shell: /bin/bash -e {0}
  
Framework build type is static library
[Codegen] Generating ./build/generated/ios/React-Codegen.podspec.json
[Codegen] generating an empty RCTThirdPartyFabricComponentsProvider
Analyzing dependencies
Fetching podspec for `DoubleConversion` from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`
[Codegen] Found FBReactNativeSpec
Fetching podspec for `RCT-Folly` from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`
[Codegen] Found rncore
Fetching podspec for `boost` from `../node_modules/react-native/third-party-podspecs/boost.podspec`
Fetching podspec for `glog` from `../node_modules/react-native/third-party-podspecs/glog.podspec`
Fetching podspec for `hermes-engine` from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`
[Hermes] Using release tarball from URL: https://repo1.maven.org/maven2/com/facebook/react/react-native-artifacts/0.73.5/react-native-artifacts-0.73.5-hermes-ios-debug.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 16.2M  100 16.2M    0     0  40.0M      0 --:--:-- --:--:-- --:--:-- 40.1M
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
 97 12.3M   97 11.9M    0     0  35.7M      0 --:--:-- --:--:-- --:--:-- 35.7M
100 12.3M  100 12.3M    0     0  35.8M      0 --:--:-- --:--:-- --:--:-- 35.7M
Adding spec repo `trunk` with CDN `https://cdn.cocoapods.org/`
Verifying no changes
[!] There were changes to the lockfile in deployment mode:
SPEC CHECKSUMS:
  glog:
    New Lockfile: 035f1e36e53b355cf70f6434d161b36e7d21fecd
    Old Lockfile: c5d68082e772fa1c511173d6b30a9de2c05a69a2

Reproducer

https://github.com/stianjensen/test-rn-73-glog-pod-install

Screenshots and Videos

No response

@cipolleschi
Copy link
Collaborator

Hi, thanks for the issue. However, this is not a valid issue: the checksum is stable when using the same version of Xcode, which is something you should actually do when working together. In any case, this issue will go away the 1st of May when we would be able to remove that code from glog.

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

No branches or pull requests

2 participants