From 7e91bb9dc4f85510c306399ad59e0136c76d2410 Mon Sep 17 00:00:00 2001 From: Paul Beusterien Date: Mon, 18 Nov 2019 10:45:03 -0800 Subject: [PATCH 1/3] Zip Builder V2 Plan --- ZipBuilder/ZipBuilderV2Plan.md | 58 ++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 ZipBuilder/ZipBuilderV2Plan.md diff --git a/ZipBuilder/ZipBuilderV2Plan.md b/ZipBuilder/ZipBuilderV2Plan.md new file mode 100644 index 00000000000..e917b3c740f --- /dev/null +++ b/ZipBuilder/ZipBuilderV2Plan.md @@ -0,0 +1,58 @@ +V2 will add an option to generate a zip distribution of binary frameworks from an arbitrary list +of source and binary CocoaPods. + +## Introduction + +The current [Zip Builder](https://github.com/firebase/firebase-ios-sdk/tree/master/ZipBuilder) +is Firebase specific. This is a proposal and initial plan +to evolve the Zip Builder into a multi-purpose Apple binary framework creation tool. + +It would be useful to have a generic +zip builder for other Google SDKs and other open source projects. In addition, +providing a generic ZipBuilder would enable Firebase users to generate binary +frameworks for configurations outside the standard Zip and Carthage distributions +released in the standard Firebase release process. + +With the extra flexibility, the Zip Builder will be useful for both SDK distributors +to package binary distributions and app developers who want a customized binary +distribution that maps exactly to their app's requirements and provides a clean +build time speed up. + + +## Background + +A more flexible zip builder would enable the following scenarios: + + * Creating a zip distribution from an arbitrary set of pods + * Support different building different sets of platform slices + * Support building with different Xcode versions + * Build only the subspecs needed for use case + * [Existing solutions](https://github.com/firebase/firebase-ios-sdk/issues/4284#issuecomment-552677044) + are intermittently maintained and written in Ruby. A Swift-implementation is + more accessible and maintainable by the Apple community. + * The Swift implementation will be easier to add Swift Package Manager support for which + there will likely be a need since Swift Package Manager is even more source-centric than + CocoaPods. + +## Plan + + 1. Add `--zipPods {JSON file}` option. The JSON file contains a list of CocoaPods + along with an optional version specifier. If the version is not specified, a CocoaPods + install will determine the version - typically the latest, unless another pod requires + something lower. + + 1. Add `--minimum-ios-version {version}` option. Specify the minimum iOS version to build for. Default + is 8.0. + + 1. Add `--archs {archs list}` option. Default is "arm64, arm64e, armv7, i386, x86_64" + +Unlike the Firebase zip build which builds a two-level zip file with a configurable set of +installation, when `--zipPods` is specified a single zip file of frameworks will be created. + +## Future Directions + + * Binary support for Catalyst + * Other Apple platforms besides iOS + * Swift Package Manager + * Dynamic Framework support + * More option customization From 0d86b878f6b8938fb1aa6e7356aca39798175d2a Mon Sep 17 00:00:00 2001 From: Paul Beusterien Date: Mon, 18 Nov 2019 10:56:09 -0800 Subject: [PATCH 2/3] whitespace --- ZipBuilder/ZipBuilderV2Plan.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ZipBuilder/ZipBuilderV2Plan.md b/ZipBuilder/ZipBuilderV2Plan.md index e917b3c740f..a267c02140f 100644 --- a/ZipBuilder/ZipBuilderV2Plan.md +++ b/ZipBuilder/ZipBuilderV2Plan.md @@ -7,7 +7,7 @@ The current [Zip Builder](https://github.com/firebase/firebase-ios-sdk/tree/mast is Firebase specific. This is a proposal and initial plan to evolve the Zip Builder into a multi-purpose Apple binary framework creation tool. -It would be useful to have a generic +It would be useful to have a generic zip builder for other Google SDKs and other open source projects. In addition, providing a generic ZipBuilder would enable Firebase users to generate binary frameworks for configurations outside the standard Zip and Carthage distributions From e9ef2cc4c56eb46a0a724772cafddf80e4085da7 Mon Sep 17 00:00:00 2001 From: Paul Beusterien Date: Fri, 22 Nov 2019 08:22:51 -0800 Subject: [PATCH 3/3] Review feedback --- ZipBuilder/ZipBuilderV2Plan.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/ZipBuilder/ZipBuilderV2Plan.md b/ZipBuilder/ZipBuilderV2Plan.md index a267c02140f..13bdfe926dd 100644 --- a/ZipBuilder/ZipBuilderV2Plan.md +++ b/ZipBuilder/ZipBuilderV2Plan.md @@ -4,13 +4,13 @@ of source and binary CocoaPods. ## Introduction The current [Zip Builder](https://github.com/firebase/firebase-ios-sdk/tree/master/ZipBuilder) -is Firebase specific. This is a proposal and initial plan -to evolve the Zip Builder into a multi-purpose Apple binary framework creation tool. +is Firebase specific. This is a proposal and initial plan to evolve the Zip Builder into a +multi-purpose Apple binary framework creation tool. It would be useful to have a generic -zip builder for other Google SDKs and other open source projects. In addition, -providing a generic ZipBuilder would enable Firebase users to generate binary -frameworks for configurations outside the standard Zip and Carthage distributions +Zip Builder for other Google SDKs and other open source projects. In addition, +providing a generic Zip Builder would enable Firebase users to generate binary +frameworks for configurations outside the standard zip and Carthage distributions released in the standard Firebase release process. With the extra flexibility, the Zip Builder will be useful for both SDK distributors @@ -21,14 +21,14 @@ build time speed up. ## Background -A more flexible zip builder would enable the following scenarios: +A more flexible Zip Builder would enable the following scenarios: * Creating a zip distribution from an arbitrary set of pods * Support different building different sets of platform slices * Support building with different Xcode versions * Build only the subspecs needed for use case * [Existing solutions](https://github.com/firebase/firebase-ios-sdk/issues/4284#issuecomment-552677044) - are intermittently maintained and written in Ruby. A Swift-implementation is + are intermittently maintained and written in Ruby. A Swift implementation is more accessible and maintainable by the Apple community. * The Swift implementation will be easier to add Swift Package Manager support for which there will likely be a need since Swift Package Manager is even more source-centric than @@ -41,8 +41,8 @@ A more flexible zip builder would enable the following scenarios: install will determine the version - typically the latest, unless another pod requires something lower. - 1. Add `--minimum-ios-version {version}` option. Specify the minimum iOS version to build for. Default - is 8.0. + 1. Add `--minimumIOSVersion {version}` option. Specify the minimum iOS version to support. + Default is 8.0. 1. Add `--archs {archs list}` option. Default is "arm64, arm64e, armv7, i386, x86_64" @@ -52,6 +52,7 @@ installation, when `--zipPods` is specified a single zip file of frameworks will ## Future Directions * Binary support for Catalyst + * Migrate to building `.xcframeworks` instead of `.frameworks` * Other Apple platforms besides iOS * Swift Package Manager * Dynamic Framework support