xcode-archive-cache 0.0.10.pre.1 → 0.0.10.pre.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 +4 -4
- data/lib/injection/build_flags_changer.rb +42 -0
- data/lib/injection/dependency_remover.rb +22 -1
- data/lib/injection/injector.rb +19 -11
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: de08375420b8d97642ead0ec3ebc63a78f9f2c372347038054f3b66927d7cad4
|
4
|
+
data.tar.gz: 3712950c9e6038a5193a0db108127a5e89cb29edea098929e527346db24d838c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8e6f791d1a84b4835981617e9092e5a24db3beaa6ee3119b351c47ff99cbed1a222c0168659e5b2bc89c3bc999fb57fd47611c0eb6daf601ef50985ef4959469
|
7
|
+
data.tar.gz: 588243bf92bf878d5020296f69252a83bc99eb58da5150237b62881a9e023539f6365e630e191b1f39bfc6681dbfeda87d321ce915459b1f624280e65c6ce3af
|
@@ -23,6 +23,28 @@ module XcodeArchiveCache
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
+
# @param [Xcodeproj::Project::Object::XCBuildConfiguration] build_configuration
|
27
|
+
# @param [XcodeArchiveCache::BuildGraph::Node] node
|
28
|
+
#
|
29
|
+
def add_static_lib_linker_flag(build_configuration, node)
|
30
|
+
flag = get_linker_flag(node)
|
31
|
+
if flag
|
32
|
+
debug("using ld flag #{flag}")
|
33
|
+
add_linker_flag(build_configuration, flag)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# @param [Xcodeproj::Project::Object::XCBuildConfiguration] build_configuration
|
38
|
+
# @param [XcodeArchiveCache::BuildGraph::Node] node
|
39
|
+
#
|
40
|
+
def add_static_lib_libtool_flag(build_configuration, node)
|
41
|
+
flag = get_linker_flag(node)
|
42
|
+
if flag
|
43
|
+
debug("using libtool flag #{flag}")
|
44
|
+
add_libtool_flag(build_configuration, flag)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
26
48
|
# @param [Xcodeproj::Project::Object::XCBuildConfiguration] build_configuration
|
27
49
|
# @param [XcodeArchiveCache::BuildGraph::Node] node
|
28
50
|
#
|
@@ -93,6 +115,7 @@ module XcodeArchiveCache
|
|
93
115
|
OTHER_CFLAGS_KEY = "OTHER_CFLAGS"
|
94
116
|
OTHER_CPLUSPLUSFLAGS_KEY = "OTHER_CPLUSPLUSFLAGS"
|
95
117
|
OTHER_LDFLAGS_KEY = "OTHER_LDFLAGS"
|
118
|
+
OTHER_LIBTOOLFLAGS_KEY = "OTHER_LIBTOOLFLAGS"
|
96
119
|
OTHER_SWIFT_FLAGS_KEY = "OTHER_SWIFT_FLAGS"
|
97
120
|
INHERITED_SETTINGS_VALUE = "$(inherited)"
|
98
121
|
|
@@ -103,6 +126,13 @@ module XcodeArchiveCache
|
|
103
126
|
add_flag_to_configuration(build_configuration, OTHER_LDFLAGS_KEY, flag)
|
104
127
|
end
|
105
128
|
|
129
|
+
# @param [Xcodeproj::Project::Object::XCBuildConfiguration] build_configuration
|
130
|
+
# @param [String] flag
|
131
|
+
#
|
132
|
+
def add_libtool_flag(build_configuration, flag)
|
133
|
+
add_flag_to_configuration(build_configuration, OTHER_LIBTOOLFLAGS_KEY, flag)
|
134
|
+
end
|
135
|
+
|
106
136
|
# @param [Xcodeproj::Project::Object::XCBuildConfiguration] build_configuration
|
107
137
|
# @param [String] flag
|
108
138
|
#
|
@@ -191,6 +221,18 @@ module XcodeArchiveCache
|
|
191
221
|
"-framework \"#{framework_name}\""
|
192
222
|
end
|
193
223
|
|
224
|
+
# @param [XcodeArchiveCache::BuildGraph::Node] node
|
225
|
+
#
|
226
|
+
# @return [String]
|
227
|
+
#
|
228
|
+
# libSomething.a -> -lSomething
|
229
|
+
#
|
230
|
+
def get_linker_flag(node)
|
231
|
+
return unless node.product_file_name
|
232
|
+
|
233
|
+
node.product_file_name.gsub(/^lib/, "-l").gsub(/\.a$/, "")
|
234
|
+
end
|
235
|
+
|
194
236
|
# @param [Hash] build_settings
|
195
237
|
# @param [String] flags_key
|
196
238
|
# @param [Array<String>] old_modulemap_names
|
@@ -12,11 +12,21 @@ module XcodeArchiveCache
|
|
12
12
|
debug("removing #{prebuilt_target.name} from #{dependent_target.display_name}")
|
13
13
|
|
14
14
|
remove_from_dependencies(prebuilt_target, dependent_target)
|
15
|
+
remove_from_linking(prebuilt_node, dependent_target)
|
15
16
|
remove_from_schemes(prebuilt_target, dependent_target)
|
16
17
|
|
17
18
|
debug("finished removing #{prebuilt_target.name} from #{dependent_target.display_name}")
|
18
19
|
end
|
19
20
|
|
21
|
+
# @param [XcodeArchiveCache::BuildGraph::Node] prebuilt_node
|
22
|
+
# @param [Xcodeproj::Project::Object::PBXNativeTarget] dependent_target
|
23
|
+
#
|
24
|
+
# @return [Boolean]
|
25
|
+
#
|
26
|
+
def is_linked(prebuilt_node, dependent_target)
|
27
|
+
!find_linked(prebuilt_node, dependent_target).empty?
|
28
|
+
end
|
29
|
+
|
20
30
|
private
|
21
31
|
|
22
32
|
# @param [Xcodeproj::Project::Object::PBXNativeTarget] prebuilt_target
|
@@ -46,7 +56,7 @@ module XcodeArchiveCache
|
|
46
56
|
#
|
47
57
|
def remove_from_linking(prebuilt_node, dependent_target)
|
48
58
|
debug("product name is #{prebuilt_node.product_file_name}")
|
49
|
-
frameworks = dependent_target
|
59
|
+
frameworks = find_linked(prebuilt_node, dependent_target)
|
50
60
|
debug("found #{frameworks.length} linked products")
|
51
61
|
|
52
62
|
frameworks.each do |framework|
|
@@ -67,6 +77,17 @@ module XcodeArchiveCache
|
|
67
77
|
end
|
68
78
|
end
|
69
79
|
|
80
|
+
# @param [Xcodeproj::Project::Object::PBXNativeTarget] dependent_target
|
81
|
+
# @param [XcodeArchiveCache::BuildGraph::Node] prebuilt_node
|
82
|
+
#
|
83
|
+
# @return [Array<PBXBuildFile>]
|
84
|
+
#
|
85
|
+
def find_linked(prebuilt_node, dependent_target)
|
86
|
+
return [] unless dependent_target.frameworks_build_phase
|
87
|
+
|
88
|
+
dependent_target.frameworks_build_phase.files.select {|file| file.display_name == prebuilt_node.product_file_name}
|
89
|
+
end
|
90
|
+
|
70
91
|
# @param [Xcodeproj::Project::Object::PBXNativeTarget] target
|
71
92
|
#
|
72
93
|
# @return [Array<Xcodeproj::XCScheme>]
|
data/lib/injection/injector.rb
CHANGED
@@ -43,7 +43,7 @@ module XcodeArchiveCache
|
|
43
43
|
modulemap_fixer.fix_modulemap(node)
|
44
44
|
end
|
45
45
|
|
46
|
-
add_as_prebuilt_dependency(node, target
|
46
|
+
add_as_prebuilt_dependency(node, target)
|
47
47
|
remove_native_target_from_project(node)
|
48
48
|
end
|
49
49
|
|
@@ -146,8 +146,7 @@ module XcodeArchiveCache
|
|
146
146
|
.all_dependent_nodes
|
147
147
|
.select(&:waiting_for_rebuild)
|
148
148
|
dependent_to_rebuild.each do |dependent_node|
|
149
|
-
|
150
|
-
add_as_prebuilt_dependency(prebuilt_node, dependent_node.native_target, should_link)
|
149
|
+
add_as_prebuilt_dependency(prebuilt_node, dependent_node.native_target)
|
151
150
|
end
|
152
151
|
|
153
152
|
remove_native_target_from_project(prebuilt_node)
|
@@ -164,7 +163,7 @@ module XcodeArchiveCache
|
|
164
163
|
# @param [XcodeArchiveCache::BuildGraph::Node] prebuilt_node
|
165
164
|
# @param [Xcodeproj::Project::Object::PBXNativeTarget] dependent_target
|
166
165
|
#
|
167
|
-
def add_as_prebuilt_dependency(prebuilt_node, dependent_target
|
166
|
+
def add_as_prebuilt_dependency(prebuilt_node, dependent_target)
|
168
167
|
debug("adding #{prebuilt_node.name} as prebuilt to #{dependent_target.display_name}")
|
169
168
|
|
170
169
|
unless prebuilt_node.has_acceptable_product?
|
@@ -174,7 +173,7 @@ module XcodeArchiveCache
|
|
174
173
|
if prebuilt_node.has_framework_product?
|
175
174
|
add_as_prebuilt_framework(prebuilt_node, dependent_target)
|
176
175
|
elsif prebuilt_node.has_static_library_product?
|
177
|
-
add_as_prebuilt_static_lib(prebuilt_node, dependent_target
|
176
|
+
add_as_prebuilt_static_lib(prebuilt_node, dependent_target)
|
178
177
|
end
|
179
178
|
|
180
179
|
debug("done with #{prebuilt_node.name} for #{dependent_target.display_name}")
|
@@ -190,14 +189,17 @@ module XcodeArchiveCache
|
|
190
189
|
build_flags_changer.add_framework_search_path(build_configuration, artifact_location)
|
191
190
|
build_flags_changer.add_framework_headers_iquote(build_configuration, artifact_location, prebuilt_node)
|
192
191
|
|
192
|
+
if dependency_remover.is_linked(prebuilt_node, dependent_target)
|
193
|
+
build_flags_changer.add_framework_linker_flag(build_configuration, prebuilt_node)
|
194
|
+
end
|
195
|
+
|
193
196
|
dependency_remover.remove_dependency(prebuilt_node, dependent_target)
|
194
197
|
end
|
195
198
|
|
196
199
|
# @param [XcodeArchiveCache::BuildGraph::Node] prebuilt_node
|
197
200
|
# @param [Xcodeproj::Project::Object::PBXNativeTarget] dependent_target
|
198
|
-
# @param [Boolean] should_link
|
199
201
|
#
|
200
|
-
def add_as_prebuilt_static_lib(prebuilt_node, dependent_target
|
202
|
+
def add_as_prebuilt_static_lib(prebuilt_node, dependent_target)
|
201
203
|
build_configuration = find_build_configuration(dependent_target)
|
202
204
|
|
203
205
|
injected_modulemap_file_path = storage.get_modulemap_path(prebuilt_node)
|
@@ -206,10 +208,16 @@ module XcodeArchiveCache
|
|
206
208
|
build_flags_changer.fix_module_map_path(build_configuration, modulemap_file_names, injected_modulemap_file_path)
|
207
209
|
end
|
208
210
|
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
211
|
+
artifact_location = storage.get_storage_path(prebuilt_node)
|
212
|
+
build_flags_changer.add_library_search_path(build_configuration, artifact_location)
|
213
|
+
|
214
|
+
if dependency_remover.is_linked(prebuilt_node, dependent_target)
|
215
|
+
if dependent_target.product_type == Xcodeproj::Constants::PRODUCT_TYPE_UTI[:static_library]
|
216
|
+
build_flags_changer.add_static_lib_libtool_flag(build_configuration, prebuilt_node)
|
217
|
+
else
|
218
|
+
build_flags_changer.add_static_lib_linker_flag(build_configuration, prebuilt_node)
|
219
|
+
end
|
220
|
+
end
|
213
221
|
|
214
222
|
dependency_remover.remove_dependency(prebuilt_node, dependent_target)
|
215
223
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xcode-archive-cache
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.10.pre.
|
4
|
+
version: 0.0.10.pre.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ilya Dyakonov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-04-
|
11
|
+
date: 2020-04-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: xcodeproj
|