ann-flavor-cocoapods 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e23222a95fea37f9217a01fd582557f9310c254e54958ed9414c1a27a67cf3b8
4
- data.tar.gz: 610b16041b64c3ae03482638436ebd1e965ffc756c29276316d003692086afd5
3
+ metadata.gz: ae5474a82cba4428fdfaf19c72bb2c7ac53b219bb50baf70ff246988947cb83f
4
+ data.tar.gz: 5c57f69715847b50fc8fa930f6c182cc074c37389c1f0184734a73c09ee2d5a0
5
5
  SHA512:
6
- metadata.gz: 02cf0c93b06b3ed7d461a49e3e6582c857ce79b0f6f6da198d23f7d1ba82c3929ac000599c7ab991bf3ae56ff4f5eb45d39f54a3f382468872e8a6197b678821
7
- data.tar.gz: 9667804d92e78f14267f30c997f100dd22eb80d543693d8863e75efeefd4580e1e979f5371f3ca296c27fda7aadb267ac7ff6d3b619996452498a1b4a7f95180
6
+ metadata.gz: 61bef50c9f7da4eada063a61ed60184de9790105eafee5c63c064e8c48419c96003d79ebdd77f3a70e0e32a75b160bd7c7b637d6c1cc5f6f70d6b2e0c85b6a69
7
+ data.tar.gz: 196fbefce09aff6c9055616a6a073a11c22687868e2aca9f0c9c1086d010849b032d40e3a3247e3d4281ca9d0543bd8ea1eb5bc1145bcf47a6f5bdf12fd9b6ef
data/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.2
4
+
5
+ ### Fixed
6
+ - **0.4.1's fix for "Cycle inside Runner" was incomplete — the cycle could
7
+ still occur.** Declaring `input_paths` on `[CP] Check Pods Manifest.lock`'s
8
+ own output (0.4.1) correctly ordered `[ann-flavor] Merge Entitlements`/
9
+ `[ann-flavor] Merge Info.plist` after that one phase, but both were still
10
+ `unshift`ed to the very *front* of `build_phases`. Confirmed live (again,
11
+ against `ledger`) that the real cycle ran through a longer chain: these
12
+ phases' outputs feed `ProcessProductPackaging` (entitlements/Info.plist
13
+ signing), which is gated behind a chain of Xcode task producers that the
14
+ Firebase framework-copy phases are *also* gated behind — being first in
15
+ `build_phases` put both on the same shared gate from opposite directions,
16
+ a genuine cycle no single `input_paths` declaration could resolve.
17
+ `CODE_SIGN_ENTITLEMENTS`/`INFOPLIST_FILE` are only consumed at packaging/
18
+ signing time, which is late in the build — neither phase has any real
19
+ reason to run before `Sources`/`Frameworks`/`Resources`/`Embed Frameworks`
20
+ at all. Fixed by appending both phases at the **end** of `build_phases`
21
+ instead of unshifting them to the front (`input_paths` from 0.4.1 kept as
22
+ belt-and-suspenders). Also now unconditionally repositions the phase to
23
+ the end even when it already exists from a prior install — a project that
24
+ picked up the incomplete 0.4.1 fix needs this to actually move it on the
25
+ next `pod install`, not just leave it in place.
26
+
3
27
  ## 0.4.1
4
28
 
5
29
  ### Fixed
@@ -912,14 +912,22 @@ module AnnFlavorCocoapods
912
912
  # output_paths) -- suppresses "input file not found" for INFOPLIST_FILE
913
913
  # referencing a path nothing else produces until this phase runs.
914
914
  phase.output_paths = ['$(DERIVED_FILE_DIR)/Info-merged.plist']
915
- # Same explicit-ordering fix as inject_merge_entitlements_phase below --
916
- # without this, Xcode's new build system can report a "Cycle inside
917
- # Runner" against a real project with real Pod frameworks, since
918
- # output_paths alone isn't enough to order this phase after CocoaPods'
919
- # own "[CP] Check Pods Manifest.lock" phase.
915
+ # Belt-and-suspenders alongside the append-at-end position fix below --
916
+ # explicitly orders this phase after CocoaPods' own "[CP] Check Pods
917
+ # Manifest.lock" phase regardless of list position.
920
918
  phase.input_paths = ['$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt']
921
919
 
922
- target.build_phases.unshift(phase) unless existing
920
+ # Appended at the END of build_phases, not unshifted to the front --
921
+ # see the identical, fuller explanation on inject_merge_entitlements_phase
922
+ # below. This phase's output (INFOPLIST_FILE) is only consumed at
923
+ # packaging/signing time, which is late; it has no reason to race
924
+ # framework/resource-copy phases early in the build.
925
+ #
926
+ # Repositions unconditionally, even when `existing` -- see the identical
927
+ # note on inject_merge_entitlements_phase for why (a pre-v0.4.2 project
928
+ # would otherwise never actually get repositioned on re-`pod install`).
929
+ target.build_phases.delete(phase) if existing
930
+ target.build_phases.push(phase)
923
931
  end
924
932
 
925
933
  # Composes the final .entitlements file Xcode actually signs with, from
@@ -1008,22 +1016,36 @@ module AnnFlavorCocoapods
1008
1016
  phase.shell_script = script
1009
1017
  phase.show_env_vars_in_log = '0'
1010
1018
  phase.output_paths = ['$(DERIVED_FILE_DIR)/Entitlements-merged.entitlements']
1011
- # Declaring this phase's own output_paths (above) is not enough for
1012
- # Xcode's new build system to order it correctly relative to CocoaPods'
1013
- # own "[CP] Check Pods Manifest.lock" phase -- unshift only affects
1014
- # build_phases list order, which CocoaPods' own installer can (and,
1015
- # against a real project with real Pod frameworks like Firebase, does)
1016
- # re-order after this hook runs. Without an explicit input_paths
1017
- # dependency, Xcode's dependency-cycle detector can flag a real cycle
1018
- # ("Cycle inside Runner") between this phase's output (consumed by
1019
- # ProcessProductPackaging for the merged entitlements) and Check Pods
1020
- # Manifest.lock's own output, even though no true cycle exists --
1021
- # explicitly declaring Check Pods Manifest.lock's result file as an
1022
- # input here removes the ambiguity Xcode's scheduler was resolving
1023
- # incorrectly. Confirmed live against ledger (real Firebase Pods).
1019
+ # Belt-and-suspenders alongside the append-at-end position fix below --
1020
+ # explicitly orders this phase after CocoaPods' own "[CP] Check Pods
1021
+ # Manifest.lock" phase regardless of list position.
1024
1022
  phase.input_paths = ['$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt']
1025
1023
 
1026
- target.build_phases.unshift(phase) unless existing
1024
+ # Appended at the END of build_phases, not unshifted to the front.
1025
+ # v0.4.1 tried fixing this phase's real "Cycle inside Runner" Xcode
1026
+ # build failure (confirmed live against ledger, a project with real
1027
+ # CocoaPods frameworks like Firebase) purely by declaring input_paths
1028
+ # above -- that alone was NOT sufficient. The actual cycle: this
1029
+ # phase's output feeds ProcessProductPackaging (entitlements signing,
1030
+ # gated behind a chain of task producers Xcode's new build system
1031
+ # shares with the Firebase framework-copy phases), and unshifting this
1032
+ # phase to the very FRONT of build_phases put it, and its declared
1033
+ # output dependency, on the same task-producer chain the framework
1034
+ # copy phases are gated behind on the other side -- a genuine cycle
1035
+ # through shared gates, not resolvable by declaring one more input.
1036
+ # CODE_SIGN_ENTITLEMENTS/INFOPLIST_FILE are only consumed at
1037
+ # packaging/signing time, which is late in the build -- this phase has
1038
+ # no real reason to run before Sources/Frameworks/Resources/Embed
1039
+ # Frameworks at all. Appending it at the end removes it from that
1040
+ # shared gate entirely.
1041
+ #
1042
+ # Repositions unconditionally, even when `existing` (a project that
1043
+ # already has this phase from a pre-v0.4.2 install, sitting at the
1044
+ # front from the old unshift) -- otherwise re-running `pod install`
1045
+ # after upgrading the gem would never actually move it, and the real
1046
+ # bug would persist for every already-affected consumer.
1047
+ target.build_phases.delete(phase) if existing
1048
+ target.build_phases.push(phase)
1027
1049
  end
1028
1050
 
1029
1051
  # Removes a previously-injected Merge Entitlements phase when no flavor
@@ -1,3 +1,3 @@
1
1
  module AnnFlavorCocoapods
2
- VERSION = "0.4.1"
2
+ VERSION = "0.4.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ann-flavor-cocoapods
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - ANN Solutions