cocoapods-xcframework 0.0.4 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|