google/EarlGrey

EarlGrey 2.2.0 | EarlGreyApp Pod | Establishing provenance of EarlGreyApp Release AppFramework binary

shaneong opened this issue · 1 comments

Hi,
Our company would like to use EarlGrey 2.2.0 in production. As due diligence, I am trying to verify the contents of the AppFramework binary that is packaged in the EarlGreyApp CocoaPod.

I understand this binary is a fat library:

AppFramework: Mach-O universal binary with 6 architectures: [i386:Mach-O dynamically linked shared library i386] [x86_64] [arm_v7] [arm_v7s] [arm64] [arm64e]
AppFramework (for architecture i386):	Mach-O dynamically linked shared library i386
AppFramework (for architecture x86_64):	Mach-O 64-bit dynamically linked shared library x86_64
AppFramework (for architecture armv7):	Mach-O dynamically linked shared library arm_v7
AppFramework (for architecture armv7s):	Mach-O dynamically linked shared library arm_v7s
AppFramework (for architecture arm64):	Mach-O 64-bit dynamically linked shared library arm64
AppFramework (for architecture arm64e):	Mach-O 64-bit dynamically linked shared library arm64e

But I have not been able to reproduce the binary when building the EarlGrey project (in earlgrey2 branch) locally, encountering a number of issues.

First, the build settings in the release commit project do not include the arm64e and armv7s architectures by default.
Second, on Xcode 12.3, it is not possible to build Archive as having both simulator and device arm64 binaries is currently not supported. By excluding the arm64 architecture for iOS Simulator SDK, I am able to build Archive. However, the Archive build products only included a single file - libCommonLib.a
Third, building for i386 and x86_64 architecture does not seem to be supported for the supporting libraries in EarlGrey and eDistantObject project.
Though workarounds were available, I thought I'd reach out for a more definitive solution rather than monkey wrench my way through.

It would be helpful if the following can be provided:

  1. List of project files used to generate binary, included in the Release notes or EarlGreyApp podspec
  2. Process to generate this universal binary locally to compare with the release version.

This issue is targeted for version 2.2.0 specifically, but would be helpful to have as well for all future releases.

Thanks.

Perhaps this is what you're looking for for your question 2?

The build_universal_framework.sh?