ann-flavor-cocoapods 0.4.2 → 0.4.4

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: ae5474a82cba4428fdfaf19c72bb2c7ac53b219bb50baf70ff246988947cb83f
4
- data.tar.gz: 5c57f69715847b50fc8fa930f6c182cc074c37389c1f0184734a73c09ee2d5a0
3
+ metadata.gz: 26c819f56bb3a959737651233fbdbed8e0bd887ddcdfbf0fd0c157c26b99a011
4
+ data.tar.gz: d322f020327b3b62f3eb02922a01d1af90040a2b5595614a37795eacf311a2cf
5
5
  SHA512:
6
- metadata.gz: 61bef50c9f7da4eada063a61ed60184de9790105eafee5c63c064e8c48419c96003d79ebdd77f3a70e0e32a75b160bd7c7b637d6c1cc5f6f70d6b2e0c85b6a69
7
- data.tar.gz: 196fbefce09aff6c9055616a6a073a11c22687868e2aca9f0c9c1086d010849b032d40e3a3247e3d4281ca9d0543bd8ea1eb5bc1145bcf47a6f5bdf12fd9b6ef
6
+ metadata.gz: 85564c5fcc276b9f448381fc8cb3d334ca65d9bedbccd2b40fe25b46e43775afc50f66b7a2c6394ab032a118ecb8e3b1335b596c89f0c5dc79d7945bc52bc7ac
7
+ data.tar.gz: e2e76a0da4568f8bc5a040d1f3f0422a8844b1da28b0b34b6324fda2c56d7c47eceec963ae644c82044f266b20193fe29d9572cce60a7dbf59933ac8df9a2221
data/CHANGELOG.md CHANGED
@@ -1,5 +1,48 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.4
4
+
5
+ ### Fixed
6
+ - **"Cycle inside Runner" could still occur even after 0.4.1-0.4.3.**
7
+ Confirmed live (again, against `ledger`) that declaring `input_paths` on
8
+ `[CP] Check Pods Manifest.lock`'s own output (introduced in 0.4.1 as the
9
+ original fix, kept through 0.4.2/0.4.3 as "belt-and-suspenders") was
10
+ actually the *cause* of the cycle, not a fix for it: `[ann-flavor] Merge
11
+ Entitlements`/`[ann-flavor] Merge Info.plist`'s output feeds
12
+ `ProcessProductPackaging` (signing), which Xcode's new build system gates
13
+ behind a chain of task producers (`ModuleVerifierTaskProducer` et al) —
14
+ and `Check Pods Manifest.lock`'s own output is *itself* gated behind that
15
+ same chain. Declaring it as an input routed these phases through that
16
+ chain from the other direction, closing a genuine cycle with the Firebase
17
+ framework-copy phases (also gated behind it) regardless of
18
+ `build_phases` position. Fixed by removing the `input_paths` declaration
19
+ entirely — `output_paths` plus running after the Pods/framework-copy
20
+ phases (the 0.4.2 position fix, kept) is sufficient on its own; this
21
+ phase never actually needed Check Pods Manifest.lock's result as an
22
+ input. Xcode's own error message ("moving Check Pods Manifest.lock so it
23
+ runs before the phase that depends on its outputs") was describing a
24
+ self-inflicted dependency, not a real requirement.
25
+
26
+ ## 0.4.3
27
+
28
+ ### Fixed
29
+ - **0.4.2's fix produced a silently-corrupt `project.pbxproj`.** Moving
30
+ `[ann-flavor] Merge Entitlements`/`[ann-flavor] Merge Info.plist` from
31
+ `build_phases.unshift` to `build_phases.push` (to fix "Cycle inside
32
+ Runner") used the wrong method: `Xcodeproj::Project::ObjectList`
33
+ (`build_phases`'s real class) overrides `<<`/`insert`/`unshift`/`delete`
34
+ to register an added object in the project's global objects table, but
35
+ does **not** override `push` — plain `Array#push` silently bypasses that
36
+ registration. The phase ended up referenced in `buildPhases` with no
37
+ matching object anywhere else in `project.pbxproj`, which Xcode then
38
+ failed to build with `Build input file cannot be found:
39
+ '.../Entitlements-merged.entitlements'. Did you forget to declare this
40
+ file as an output of a script phase...?` — confirmed live against
41
+ `ledger`. Fixed by using `<<` instead of `push` in both phases' injection
42
+ code. Added regression coverage asserting the phase is genuinely present
43
+ in `project.objects`, not just the `build_phases` array — the exact
44
+ distinction `push` silently violated.
45
+
3
46
  ## 0.4.2
4
47
 
5
48
  ### Fixed
@@ -912,10 +912,11 @@ 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
- # 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.
918
- phase.input_paths = ['$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt']
915
+ # NOT declaring input_paths on Check Pods Manifest.lock's output here
916
+ # (tried in v0.4.1) -- see the identical, fuller explanation on
917
+ # inject_merge_entitlements_phase below for why that direction was
918
+ # actually the cause of the real "Cycle inside Runner" failure, not a
919
+ # (partial) fix for it.
919
920
 
920
921
  # Appended at the END of build_phases, not unshifted to the front --
921
922
  # see the identical, fuller explanation on inject_merge_entitlements_phase
@@ -926,8 +927,19 @@ module AnnFlavorCocoapods
926
927
  # Repositions unconditionally, even when `existing` -- see the identical
927
928
  # note on inject_merge_entitlements_phase for why (a pre-v0.4.2 project
928
929
  # would otherwise never actually get repositioned on re-`pod install`).
930
+ #
931
+ # Uses << , NOT push -- Xcodeproj::Project::ObjectList (build_phases'
932
+ # real class) overrides <</insert/unshift/delete to also update the
933
+ # object's reference count/registration in the project's global
934
+ # objects table, but does NOT override push. Array#push silently falls
935
+ # through to the plain Array behavior, leaving the phase referenced in
936
+ # buildPhases but never actually registered as a project object --
937
+ # confirmed live: this produced a real, silently-corrupt
938
+ # project.pbxproj (a dangling buildPhases reference to a UUID with no
939
+ # matching object), which then failed at Xcode build time with "Build
940
+ # input file cannot be found" for this phase's declared output.
929
941
  target.build_phases.delete(phase) if existing
930
- target.build_phases.push(phase)
942
+ target.build_phases << phase
931
943
  end
932
944
 
933
945
  # Composes the final .entitlements file Xcode actually signs with, from
@@ -1016,11 +1028,26 @@ module AnnFlavorCocoapods
1016
1028
  phase.shell_script = script
1017
1029
  phase.show_env_vars_in_log = '0'
1018
1030
  phase.output_paths = ['$(DERIVED_FILE_DIR)/Entitlements-merged.entitlements']
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.
1022
- phase.input_paths = ['$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt']
1023
-
1031
+ # NOT declaring input_paths on Check Pods Manifest.lock's own output
1032
+ # here (tried in v0.4.1/0.4.2/0.4.3 as "belt-and-suspenders"). Confirmed
1033
+ # live (yet again, against ledger) that this input_paths declaration is
1034
+ # what CAUSES the real "Cycle inside Runner" failure, not a partial fix
1035
+ # for it: this phase's output feeds ProcessProductPackaging (signing),
1036
+ # which Xcode's new build system gates behind a chain of task producers
1037
+ # (ModuleVerifierTaskProducer et al) — declaring Check Pods Manifest
1038
+ # .lock's result file as this phase's OWN input routes this phase
1039
+ # through that SAME gate chain from the other direction, since Check
1040
+ # Pods Manifest.lock's output is itself gated behind
1041
+ # ModuleVerifierTaskProducer too. The Firebase framework-copy phases
1042
+ # are gated behind that identical chain — closing a genuine cycle no
1043
+ # matter where this phase sits in build_phases. Xcode's own error
1044
+ # message ("moving Check Pods Manifest.lock so it runs before the
1045
+ # phase that depends on its outputs") is describing exactly this
1046
+ # self-inflicted dependency, not a real requirement — this phase never
1047
+ # actually needed Check Pods Manifest.lock's result as an input;
1048
+ # output_paths + running after the Pods/framework-copy phases (via
1049
+ # position, below) is sufficient on its own.
1050
+ #
1024
1051
  # Appended at the END of build_phases, not unshifted to the front.
1025
1052
  # v0.4.1 tried fixing this phase's real "Cycle inside Runner" Xcode
1026
1053
  # build failure (confirmed live against ledger, a project with real
@@ -1044,8 +1071,15 @@ module AnnFlavorCocoapods
1044
1071
  # front from the old unshift) -- otherwise re-running `pod install`
1045
1072
  # after upgrading the gem would never actually move it, and the real
1046
1073
  # bug would persist for every already-affected consumer.
1074
+ #
1075
+ # Uses << , NOT push -- see the identical, fuller explanation on
1076
+ # inject_merge_info_plist_phase above. Array#push silently bypasses
1077
+ # ObjectList's reference-count/registration bookkeeping, producing a
1078
+ # real, silently-corrupt project.pbxproj (buildPhases referencing a
1079
+ # UUID with no matching object) that fails at Xcode build time with
1080
+ # "Build input file cannot be found" -- confirmed live against ledger.
1047
1081
  target.build_phases.delete(phase) if existing
1048
- target.build_phases.push(phase)
1082
+ target.build_phases << phase
1049
1083
  end
1050
1084
 
1051
1085
  # Removes a previously-injected Merge Entitlements phase when no flavor
@@ -1,3 +1,3 @@
1
1
  module AnnFlavorCocoapods
2
- VERSION = "0.4.2"
2
+ VERSION = "0.4.4"
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.2
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - ANN Solutions