cocoapods-xcframework 0.0.4 → 0.1.0
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/README.md +2 -1
- data/lib/cocoapods-framework/command/framework.rb +4 -2
- data/lib/cocoapods-framework/frameworker.rb +3 -1
- data/lib/cocoapods-framework/gem_version.rb +1 -1
- data/lib/cocoapods-framework/util.rb +1 -0
- data/lib/cocoapods-framework/util/error_util.rb +13 -0
- data/lib/cocoapods-framework/util/pod_util.rb +14 -13
- data/lib/cocoapods-framework/xbuilder.rb +62 -10
- data/lib/cocoapods-framework/xbuilder/xcode_xbuild.rb +5 -5
- data/lib/cocoapods-framework/xbuilder/xcodeproj_helper.rb +11 -0
- data/pkg/cocoapods-xcframework-0.0.4.gem +0 -0
- data/pkg/cocoapods-xcframework-0.0.6.gem +0 -0
- data/pkg/cocoapods-xcframework-0.0.7.gem +0 -0
- data/pkg/cocoapods-xcframework-0.0.8.gem +0 -0
- metadata +7 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e8410820adae7d30066089eff5f0a79633d4ecbaf70ede3b06ebcce87f9d6e40
|
|
4
|
+
data.tar.gz: f1bf1e1adffb03e021b4f60bc7ee08e9ab7b039760968d56c43a5eede00066be
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 14f5bf93a518920efd391519e14f45c2a52b3ecd21b9f463025e7e6623e77e2c2e8a39014c21cc53e0c8ab7503aaa6fcb3f1a9ae44de7f8aaa17f1ad76dfb17f
|
|
7
|
+
data.tar.gz: da97711ac349944fe9fa51d1620ae45e34ba0e1e44f9085f4a232071d39894d0a0212c8311608e97cec4bc6b63fc8f1e0c9520cebc73d505959327d87960f02c
|
data/README.md
CHANGED
|
@@ -30,7 +30,8 @@ module Pod
|
|
|
30
30
|
['--no-force', 'Overwrite existing files.'],
|
|
31
31
|
['--configuration', 'Build the specified configuration (e.g. Debug). Defaults to Release'],
|
|
32
32
|
['--spec-sources=private,https://github.com/CocoaPods/Specs.git', 'The sources to pull dependent pods from (defaults to https://github.com/CocoaPods/Specs.git)'],
|
|
33
|
-
['--subspecs', 'Only include the given subspecs']
|
|
33
|
+
['--subspecs', 'Only include the given subspecs'],
|
|
34
|
+
['--use-modular-headers', 'pakcage uses modular headers during packaging']
|
|
34
35
|
].concat super
|
|
35
36
|
end
|
|
36
37
|
|
|
@@ -41,6 +42,7 @@ module Pod
|
|
|
41
42
|
subspecs = argv.option('subspecs')
|
|
42
43
|
@subspecs = subspecs.split(',') unless subspecs.nil?
|
|
43
44
|
@configuration = argv.option('configuration', 'Release')
|
|
45
|
+
@use_modular_headers = argv.option('use-modular-headers', true)
|
|
44
46
|
@force = argv.flag?('force', true)
|
|
45
47
|
super
|
|
46
48
|
end
|
|
@@ -51,7 +53,7 @@ module Pod
|
|
|
51
53
|
end
|
|
52
54
|
|
|
53
55
|
def run
|
|
54
|
-
frameworker = Frameworker.new(@name, @source, @spec_sources, @subspecs, @configuration, @force)
|
|
56
|
+
frameworker = Frameworker.new(@name, @source, @spec_sources, @subspecs, @configuration, @force, @use_modular_headers)
|
|
55
57
|
frameworker.run
|
|
56
58
|
end
|
|
57
59
|
end
|
|
@@ -3,13 +3,14 @@ module Pod
|
|
|
3
3
|
include PodUtil
|
|
4
4
|
include DirUtil
|
|
5
5
|
include Config::Mixin
|
|
6
|
-
def initialize(name, source, spec_sources, subspecs, configuration, force)
|
|
6
|
+
def initialize(name, source, spec_sources, subspecs, configuration, force, use_modular_headers)
|
|
7
7
|
@name = name
|
|
8
8
|
@source = source
|
|
9
9
|
@spec_sources = spec_sources
|
|
10
10
|
@subspecs = subspecs
|
|
11
11
|
@configuration = configuration
|
|
12
12
|
@force = force
|
|
13
|
+
@use_modular_headers = use_modular_headers
|
|
13
14
|
end
|
|
14
15
|
|
|
15
16
|
def run
|
|
@@ -35,6 +36,7 @@ module Pod
|
|
|
35
36
|
spec,
|
|
36
37
|
@subspecs,
|
|
37
38
|
@spec_sources,
|
|
39
|
+
@use_modular_headers
|
|
38
40
|
)
|
|
39
41
|
|
|
40
42
|
perform_build(
|
|
@@ -8,12 +8,12 @@ module Pod
|
|
|
8
8
|
@path = path.expand_path
|
|
9
9
|
|
|
10
10
|
if @path.directory?
|
|
11
|
-
|
|
11
|
+
raise @path + ': is a directory.'
|
|
12
12
|
return
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
unless ['.podspec', '.json'].include? @path.extname
|
|
16
|
-
|
|
16
|
+
raise @path + ': is not a podspec.'
|
|
17
17
|
return
|
|
18
18
|
end
|
|
19
19
|
|
|
@@ -33,25 +33,25 @@ module Pod
|
|
|
33
33
|
Sandbox.new(config.sandbox_root)
|
|
34
34
|
end
|
|
35
35
|
|
|
36
|
-
def installation_root sandbox, spec, subspecs, sources,use_frameworks = true
|
|
36
|
+
def installation_root sandbox, spec, subspecs, sources,use_frameworks = true,use_modular_headers = true
|
|
37
37
|
podfile = podfile_from_spec(
|
|
38
38
|
@path,
|
|
39
39
|
spec,
|
|
40
|
-
# platform,
|
|
41
40
|
subspecs,
|
|
42
41
|
sources,
|
|
43
|
-
use_frameworks
|
|
42
|
+
use_frameworks,
|
|
43
|
+
use_modular_headers
|
|
44
44
|
)
|
|
45
45
|
|
|
46
46
|
installer = Installer.new(sandbox, podfile)
|
|
47
|
-
puts podfile.to_hash.to_json
|
|
48
47
|
installer.install!
|
|
49
48
|
|
|
50
49
|
unless installer.nil?
|
|
51
50
|
installer.pods_project.targets.each do |target|
|
|
52
|
-
target.
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
if target.name == spec.name
|
|
52
|
+
target.build_configurations.each do |configuration|
|
|
53
|
+
configuration.build_settings['CLANG_MODULES_AUTOLINK'] = 'NO'
|
|
54
|
+
end
|
|
55
55
|
end
|
|
56
56
|
end
|
|
57
57
|
installer.pods_project.save
|
|
@@ -59,7 +59,7 @@ module Pod
|
|
|
59
59
|
installer
|
|
60
60
|
end
|
|
61
61
|
|
|
62
|
-
def podfile_from_spec path, spec, subspecs, sources, use_frameworks = true
|
|
62
|
+
def podfile_from_spec path, spec, subspecs, sources, use_frameworks = true, use_modular_headers=true
|
|
63
63
|
options = Hash.new
|
|
64
64
|
options[:podspec] = path.to_s
|
|
65
65
|
options[:subspecs] = subspecs if subspecs
|
|
@@ -77,8 +77,9 @@ module Pod
|
|
|
77
77
|
:integrate_targets => false,
|
|
78
78
|
:deterministic_uuids => false)
|
|
79
79
|
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
use_frameworks! if use_frameworks
|
|
81
|
+
use_modular_headers! if use_modular_headers
|
|
82
|
+
end
|
|
82
83
|
end
|
|
83
84
|
|
|
84
85
|
def generic_new_podspec_hash spec
|
|
@@ -106,4 +107,4 @@ module Pod
|
|
|
106
107
|
spec_hash
|
|
107
108
|
end
|
|
108
109
|
end
|
|
109
|
-
end
|
|
110
|
+
end
|
|
@@ -14,28 +14,49 @@ module Pod
|
|
|
14
14
|
@sandbox_root = sandbox_root
|
|
15
15
|
@spec = spec
|
|
16
16
|
@configuration = configuration
|
|
17
|
-
@outputs =
|
|
17
|
+
@outputs = {}
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
def build
|
|
21
21
|
UI.puts("Building framework #{@spec} with configuration #{@configuration}")
|
|
22
22
|
UI.puts "Work dir is :#{@sandbox_root}"
|
|
23
23
|
defines = "GCC_PREPROCESSOR_DEFINITIONS='$(inherited) PodsDummy_Pods_#{@spec.name}=PodsDummy_PodPackage_#{@spec.name}'"
|
|
24
|
-
# defines << ' ' << @spec.consumer(@platform).compiler_flags.join(' ')
|
|
25
24
|
|
|
26
25
|
if @configuration == 'Debug'
|
|
27
26
|
defines << 'GCC_GENERATE_DEBUGGING_SYMBOLS=YES ONLY_ACTIVE_ARCH=NO'
|
|
27
|
+
else
|
|
28
|
+
defines << "GCC_GENERATE_DEBUGGING_SYMBOLS=NO"
|
|
28
29
|
end
|
|
29
30
|
|
|
30
31
|
build_all_device defines
|
|
31
32
|
|
|
32
33
|
collect_xc_frameworks
|
|
34
|
+
|
|
35
|
+
collect_bundles
|
|
33
36
|
end
|
|
34
37
|
|
|
35
38
|
def collect_xc_frameworks
|
|
36
39
|
export_dir = "#{@sandbox_root}/export/**/#{@spec.name}.framework"
|
|
37
40
|
frameworks = Pathname.glob(export_dir)
|
|
38
|
-
@outputs = create_xc_framework_by_frameworks frameworks
|
|
41
|
+
@outputs[:xcframework] = create_xc_framework_by_frameworks frameworks
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def collect_bundles
|
|
45
|
+
["iphoneos","macOS","appletvos","watchos"].each do |plat|
|
|
46
|
+
export_dir = "#{@sandbox_root}/export/*-#{plat}/**/#{@spec.name}.bundle/**"
|
|
47
|
+
Pathname.glob(export_dir).each do |bundle|
|
|
48
|
+
if bundle.to_s.include? "#{@spec.name}.bundle/Info.plist"
|
|
49
|
+
return
|
|
50
|
+
end
|
|
51
|
+
@outputs[:bundle] = "#{@sandbox_root}/bundle"
|
|
52
|
+
native_platform = to_native_platform plat
|
|
53
|
+
path = Pathname.new "#{@sandbox_root}/bundle/#{native_platform}"
|
|
54
|
+
if not path.exist?
|
|
55
|
+
path.mkpath
|
|
56
|
+
end
|
|
57
|
+
FileUtils.cp_r(Dir["#{bundle}"],"#{path}")
|
|
58
|
+
end
|
|
59
|
+
end
|
|
39
60
|
end
|
|
40
61
|
|
|
41
62
|
def create_xc_framework_by_frameworks frameworks
|
|
@@ -44,10 +65,10 @@ module Pod
|
|
|
44
65
|
command << "-framework #{framework} "
|
|
45
66
|
end
|
|
46
67
|
command << "-output #{@sandbox_root}/#{@spec.name}.xcframework 2>&1"
|
|
47
|
-
|
|
68
|
+
output = `#{command}`.lines.to_a
|
|
48
69
|
if $?.exitstatus != 0
|
|
49
|
-
|
|
50
|
-
Process.exit
|
|
70
|
+
Pod::ErrorUtil.error_report command,output
|
|
71
|
+
Process.exit -1
|
|
51
72
|
end
|
|
52
73
|
"#{@sandbox_root}/#{@spec.name}.xcframework"
|
|
53
74
|
end
|
|
@@ -82,8 +103,18 @@ module Pod
|
|
|
82
103
|
Pathname.new(target_dir).mkdir
|
|
83
104
|
end
|
|
84
105
|
outputs_xcframework target_dir
|
|
106
|
+
outputs_bundle target_dir
|
|
85
107
|
new_spec_hash = generic_new_podspec_hash @spec
|
|
86
108
|
new_spec_hash[:vendored_frameworks] = "#{@spec.name}.xcframework"
|
|
109
|
+
find_bundles(target_dir).each do |plat, value|
|
|
110
|
+
if new_spec_hash[plat]
|
|
111
|
+
new_spec_hash[plat]["resource_bundles"] = value
|
|
112
|
+
else
|
|
113
|
+
new_spec_hash[plat] = {
|
|
114
|
+
"resource_bundles" => value
|
|
115
|
+
}
|
|
116
|
+
end
|
|
117
|
+
end
|
|
87
118
|
require 'json'
|
|
88
119
|
spec_json = JSON.pretty_generate(new_spec_hash) << "\n"
|
|
89
120
|
File.open("#{target_dir}/#{@spec.name}.podspec.json",'wb+') do |f|
|
|
@@ -92,13 +123,34 @@ module Pod
|
|
|
92
123
|
UI.puts "result export at :#{target_dir}"
|
|
93
124
|
target_dir
|
|
94
125
|
end
|
|
126
|
+
|
|
127
|
+
def find_bundles target_dir
|
|
128
|
+
bundle_root = "#{target_dir}/bundle/"
|
|
129
|
+
pattern = "#{bundle_root}*"
|
|
130
|
+
result = {}
|
|
131
|
+
Pathname.glob(pattern).each do |bundle|
|
|
132
|
+
bundle_relative_path = bundle.to_s.gsub(bundle_root, "")
|
|
133
|
+
plat = bundle_relative_path
|
|
134
|
+
result[plat] = {
|
|
135
|
+
"#{@spec.name}" => "bundle/" + bundle_relative_path + "/*"
|
|
136
|
+
}
|
|
137
|
+
end
|
|
138
|
+
result
|
|
139
|
+
end
|
|
95
140
|
|
|
96
141
|
def outputs_xcframework target_dir
|
|
97
|
-
|
|
142
|
+
command = "cp -rp #{@outputs[:xcframework]} #{target_dir} 2>&1"
|
|
143
|
+
output = `#{command}`.lines.to_a
|
|
98
144
|
if $?.exitstatus != 0
|
|
99
|
-
|
|
100
|
-
Process.exit
|
|
145
|
+
Pod::ErrorUtil.error_report command,output
|
|
146
|
+
Process.exit -1
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def outputs_bundle target_dir
|
|
151
|
+
if @outputs[:bundle]
|
|
152
|
+
FileUtils.cp_r(Dir[@outputs[:bundle]],target_dir)
|
|
101
153
|
end
|
|
102
154
|
end
|
|
103
155
|
end
|
|
104
|
-
end
|
|
156
|
+
end
|
|
@@ -3,18 +3,18 @@ module Pod
|
|
|
3
3
|
module XcodeXBuilder
|
|
4
4
|
def xcode_xbuild(defines, configuration, work_dir, build_dir = 'export')
|
|
5
5
|
if defined?(Pod::DONT_CODESIGN)
|
|
6
|
-
|
|
6
|
+
defines = "#{defines} CODE_SIGN_IDENTITY=\"\" CODE_SIGNING_REQUIRED=NO"
|
|
7
7
|
end
|
|
8
8
|
pwd = Pathname.pwd
|
|
9
9
|
Dir.chdir work_dir
|
|
10
10
|
command = "xcodebuild #{defines} BUILD_DIR=#{build_dir} BUILD_LIBRARY_FOR_DISTRIBUTION=YES clean build -configuration #{configuration} -alltargets 2>&1"
|
|
11
|
-
|
|
11
|
+
output = `#{command}`.lines.to_a
|
|
12
12
|
Dir.chdir pwd
|
|
13
13
|
if $?.exitstatus != 0
|
|
14
|
-
|
|
15
|
-
Process.exit
|
|
14
|
+
Pod::ErrorUtil.error_report command,output
|
|
15
|
+
Process.exit -1
|
|
16
16
|
end
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
|
-
end
|
|
20
|
+
end
|
|
@@ -18,6 +18,17 @@ module Pod
|
|
|
18
18
|
project.save
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
+
def to_native_platform name
|
|
22
|
+
case name
|
|
23
|
+
when 'iphoneos' then 'ios'
|
|
24
|
+
when 'macOS' then 'osx'
|
|
25
|
+
when 'appletvos' then 'tvos'
|
|
26
|
+
when 'watchos' then 'watchos'
|
|
27
|
+
else
|
|
28
|
+
name
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
21
32
|
private
|
|
22
33
|
def xcode_sdks
|
|
23
34
|
return @x_sdks if @x_sdks
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cocoapods-xcframework
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0
|
|
4
|
+
version: 0.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- 戴易超
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-
|
|
11
|
+
date: 2021-04-16 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: cocoapods
|
|
@@ -78,6 +78,7 @@ files:
|
|
|
78
78
|
- lib/cocoapods-framework/gem_version.rb
|
|
79
79
|
- lib/cocoapods-framework/util.rb
|
|
80
80
|
- lib/cocoapods-framework/util/dir_util.rb
|
|
81
|
+
- lib/cocoapods-framework/util/error_util.rb
|
|
81
82
|
- lib/cocoapods-framework/util/pod_util.rb
|
|
82
83
|
- lib/cocoapods-framework/xbuilder.rb
|
|
83
84
|
- lib/cocoapods-framework/xbuilder/xcode_xbuild.rb
|
|
@@ -87,6 +88,10 @@ files:
|
|
|
87
88
|
- pkg/cocoapods-framework-0.0.1.gem
|
|
88
89
|
- pkg/cocoapods-framework-0.0.2.gem
|
|
89
90
|
- pkg/cocoapods-framework-0.0.3.gem
|
|
91
|
+
- pkg/cocoapods-xcframework-0.0.4.gem
|
|
92
|
+
- pkg/cocoapods-xcframework-0.0.6.gem
|
|
93
|
+
- pkg/cocoapods-xcframework-0.0.7.gem
|
|
94
|
+
- pkg/cocoapods-xcframework-0.0.8.gem
|
|
90
95
|
- spec/command/framework_spec.rb
|
|
91
96
|
- spec/spec_helper.rb
|
|
92
97
|
homepage: https://github.com/TyrantDante/cocoapods-framework
|