cocoapods-fix-module 0.0.1 → 0.0.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/cocoapods-fix-module/gem_version.rb +1 -1
- data/lib/cocoapods-fix-module/patch.rb +121 -44
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7b8a1bd8d8eaf1ca31e5ecbfab3fe0ba8e210829
|
4
|
+
data.tar.gz: 7ce1d7156c9c52d113bc1ee2e321cf92793a9525
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fe1229733fa16a9bc1c908060ef2161e05b38889b0ee1759a85e48e62bfd6f1c6a138145420fe42ff728c7f9ff6108f529033a5c3507bde8893cd295efc99b28
|
7
|
+
data.tar.gz: 9501100d321a09e59a65c58a8ac06d5ced5d5f58f6d0e91443f248abdb1480f9eb7fb11e8c178de85629d8e8f3955007b1f3ee1933deb90f9f8f1ae190478220
|
@@ -2,78 +2,155 @@
|
|
2
2
|
#
|
3
3
|
# REASON:
|
4
4
|
#
|
5
|
-
# When a pod only have vendored library, and the 'use_modular_header' is on, cocoapods won't
|
5
|
+
# When a pod only have vendored library, and the 'use_modular_header' is on, cocoapods won't
|
6
6
|
# generate a modulemap (so module is not working), beacause it consider it as "should_build? == false".
|
7
7
|
#
|
8
8
|
# It's a bug of cocoapods.
|
9
9
|
#
|
10
|
-
# We fix it by
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
10
|
+
# We fix it by changing the `install!` method:
|
11
|
+
#
|
12
|
+
# when a pod is (target.should_build? == true && target.uses_modular_headers?),
|
13
|
+
# we treat it differently: like nomarl pods,
|
14
|
+
# - create_umbrella_header
|
15
|
+
# - create_module_map
|
16
|
+
#
|
16
17
|
#
|
17
18
|
module Pod
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
19
|
+
class Installer
|
20
|
+
class Xcode
|
21
|
+
class PodsProjectGenerator
|
22
|
+
class PodTargetInstaller
|
23
|
+
|
24
|
+
|
25
|
+
FIX_MODULE_OLD_install = instance_method(:install!)
|
26
|
+
define_method(:install!) do
|
27
|
+
|
28
|
+
if (not target.should_build?) && target.send(:uses_modular_headers?)
|
29
|
+
# special handling for pod with no source code
|
30
|
+
|
31
|
+
# Most code below are copied from original install! method
|
32
|
+
native_target = add_target
|
33
|
+
_, file_accessors = target.file_accessors.partition { |fa| fa.spec.test_specification? }
|
34
|
+
resource_bundle_targets = add_resources_bundle_targets(file_accessors).values.flatten
|
35
|
+
create_xcconfig_file(native_target, resource_bundle_targets)
|
36
|
+
|
37
|
+
if target.defines_module?
|
38
|
+
create_module_map(native_target) do |generator|
|
39
|
+
generator.headers.concat module_map_additional_headers
|
40
|
+
end
|
41
|
+
create_umbrella_header(native_target) do |generator|
|
42
|
+
generator.imports += file_accessors.flat_map do |file_accessor|
|
43
|
+
header_dir = if !target.requires_frameworks? && dir = file_accessor.spec_consumer.header_dir
|
44
|
+
Pathname.new(dir)
|
45
|
+
end
|
46
|
+
|
47
|
+
file_accessor.public_headers.map do |public_header|
|
48
|
+
public_header = if header_mappings_dir
|
49
|
+
public_header.relative_path_from(header_mappings_dir)
|
50
|
+
else
|
51
|
+
public_header.basename
|
52
|
+
end
|
53
|
+
if header_dir
|
54
|
+
public_header = header_dir.join(public_header)
|
55
|
+
end
|
56
|
+
public_header
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
if target.requires_frameworks?
|
63
|
+
unless skip_info_plist?(native_target)
|
64
|
+
create_info_plist_file(target.info_plist_path, native_target, target.version, target.platform)
|
65
|
+
end
|
66
|
+
create_build_phase_to_symlink_header_folders(native_target)
|
67
|
+
elsif target.uses_swift?
|
68
|
+
add_swift_static_library_compatibility_header_phase(native_target)
|
69
|
+
end
|
70
|
+
|
71
|
+
|
72
|
+
clean_support_files_temp_dir
|
73
|
+
TargetInstallationResult.new(target, native_target, resource_bundle_targets)
|
74
|
+
|
75
|
+
|
76
|
+
else
|
77
|
+
# call original
|
78
|
+
FIX_MODULE_OLD_install.bind(self).()
|
79
|
+
end
|
31
80
|
|
81
|
+
end # patch ended
|
32
82
|
|
83
|
+
end
|
84
|
+
end
|
33
85
|
end
|
86
|
+
end
|
34
87
|
end
|
35
88
|
|
36
89
|
|
37
|
-
|
38
|
-
# so the .a file may have a confict name, as the dummy source will create a .a file
|
39
|
-
# We override the dummy .a file's name
|
40
|
-
# NOTE: it will affect all the lib name generated by cocoapods
|
90
|
+
|
41
91
|
module Pod
|
42
|
-
|
43
|
-
|
44
|
-
|
92
|
+
class Target
|
93
|
+
# @since 1.5.0
|
94
|
+
class BuildSettings
|
95
|
+
|
96
|
+
class PodTargetSettings
|
97
|
+
|
98
|
+
# Patch (because there is a shuld_build? check)
|
99
|
+
#
|
100
|
+
FIX_MODULE_OLD_module_map_file_to_import = instance_method(:module_map_file_to_import)
|
101
|
+
define_method(:module_map_file_to_import) do
|
102
|
+
|
103
|
+
if (not target.should_build?) && target.send(:uses_modular_headers?)
|
104
|
+
# ---- Code bellow is copied form the original method ----
|
105
|
+
#
|
106
|
+
# ---------------- this line is deleted ------------------
|
107
|
+
# return unless target.should_build?
|
108
|
+
# -------------------------------------------------------
|
109
|
+
#
|
110
|
+
return if target.requires_frameworks?
|
111
|
+
return unless target.defines_module?
|
112
|
+
|
113
|
+
if target.uses_swift?
|
114
|
+
# for swift, we have a custom build phase that copies in the module map, appending the .Swift module
|
115
|
+
"${PODS_CONFIGURATION_BUILD_DIR}/#{target.label}/#{target.product_module_name}.modulemap"
|
116
|
+
else
|
117
|
+
"${PODS_ROOT}/#{target.module_map_path.relative_path_from(target.sandbox.root)}"
|
118
|
+
end
|
119
|
+
# ---- Code above is copied form the original method ----
|
120
|
+
else
|
121
|
+
# call original
|
122
|
+
FIX_MODULE_OLD_module_map_file_to_import.bind(self).()
|
123
|
+
end
|
124
|
+
|
125
|
+
end # patch ended
|
126
|
+
|
45
127
|
end
|
128
|
+
|
46
129
|
end
|
130
|
+
end
|
47
131
|
end
|
48
132
|
|
49
133
|
|
134
|
+
|
135
|
+
|
50
136
|
# Depress the checking
|
51
|
-
#
|
137
|
+
# Because the target have no source to build even when should_build? == true,
|
52
138
|
# which break the validation.
|
53
139
|
module Pod
|
54
140
|
class Installer
|
55
141
|
class Xcode
|
56
142
|
class PodsProjectGenerator
|
57
143
|
class PodTargetInstaller
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
144
|
+
|
145
|
+
def validate_targets_contain_sources(args)
|
146
|
+
# do nothing
|
147
|
+
end
|
62
148
|
|
63
149
|
end
|
150
|
+
end
|
64
151
|
end
|
65
152
|
end
|
66
153
|
end
|
67
|
-
end
|
68
154
|
|
69
|
-
|
70
|
-
|
71
|
-
# define_method(:create_dummy_source) do |native_target|
|
72
|
-
|
73
|
-
# if not target.FIX_MODULE_old_should_build?
|
74
|
-
# # when nothing to build, don't create dummy source
|
75
|
-
# else
|
76
|
-
# FIX_MODULE_old_create_dummy_source.bind(self).(native_target)
|
77
|
-
# end
|
78
|
-
# end
|
79
|
-
|
155
|
+
|
156
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods-fix-module
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Leavez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-03-
|
11
|
+
date: 2019-03-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|