pod-builder 2.1.1 → 2.2.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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ffc11e0c2a085b295c06e71951ba737c6143103fdb77441d5c9e7abb71d04df
|
4
|
+
data.tar.gz: bc96bf60f8890a3a7737ce6632575a34fc8d28ec4de08465efa65d2a9a8805a1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '008bbc4406aaef09090a52073aa9fc5d892112b830964da0830d356423fbee898ae5d663f7c1845ffe918b2a6e9c35e718428d78aaeb53d29a1918b77b9891b4'
|
7
|
+
data.tar.gz: a16426dfc2fa06a58f61dec05ef37a2ca3a6817e5e5a0307bb9e1f6d20fb5f424563dd4a480cf2cee5a288d1c2dba587571a0e0093296f8777332cedce792575
|
@@ -79,16 +79,17 @@ module PodBuilder
|
|
79
79
|
end
|
80
80
|
end
|
81
81
|
|
82
|
+
build_catalyst = should_build_catalyst(installer)
|
83
|
+
|
82
84
|
install_result = InstallResult.new
|
83
85
|
podfiles_items.reject { |x| x.empty? }.each do |podfile_items|
|
84
86
|
build_configuration = podfile_items.map(&:build_configuration).uniq.first
|
85
87
|
|
86
88
|
podfile_items = podfile_items.map { |t| t.recursive_dependencies(all_buildable_items) }.flatten.uniq
|
87
|
-
podfile_content = Podfile.from_podfile_items(podfile_items, analyzer, build_configuration, install_using_frameworks, Configuration.build_xcframeworks)
|
89
|
+
podfile_content = Podfile.from_podfile_items(podfile_items, analyzer, build_configuration, install_using_frameworks, build_catalyst, Configuration.build_xcframeworks)
|
88
90
|
|
89
91
|
install_result += Install.podfile(podfile_content, podfile_items, podfile_items.first.build_configuration)
|
90
92
|
|
91
|
-
# remove lockfile which gets unexplicably created
|
92
93
|
FileUtils.rm_f(PodBuilder::basepath("Podfile.lock"))
|
93
94
|
end
|
94
95
|
|
@@ -124,6 +125,15 @@ module PodBuilder
|
|
124
125
|
|
125
126
|
private
|
126
127
|
|
128
|
+
def self.should_build_catalyst(installer)
|
129
|
+
build_settings = installer.analysis_result.targets.map { |t| t.user_project.root_object.targets.map { |u| u.build_configuration_list.build_configurations.map { |v| v.build_settings } } }.flatten
|
130
|
+
build_catalyst = build_settings.detect { |t| t["SUPPORTS_MACCATALYST"] == "YES" } != nil
|
131
|
+
|
132
|
+
puts "\nTo support Catalyst you should enable 'build_xcframeworks' in PodBuilder.json\n".red unless Configuration.build_xcframeworks
|
133
|
+
|
134
|
+
return build_catalyst
|
135
|
+
end
|
136
|
+
|
127
137
|
def self.prepare_defines_modules_override(all_buildable_items)
|
128
138
|
all_buildable_items.each do |item|
|
129
139
|
unless item.defines_module.nil?
|
data/lib/pod_builder/podfile.rb
CHANGED
@@ -5,7 +5,7 @@ module PodBuilder
|
|
5
5
|
|
6
6
|
PRE_INSTALL_ACTIONS = ["Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_duplicate_framework_and_library_names) {}", "require 'pod_builder/podfile/pre_actions_swizzles'"].freeze
|
7
7
|
|
8
|
-
def self.from_podfile_items(items, analyzer, build_configuration, install_using_frameworks, build_xcframeworks)
|
8
|
+
def self.from_podfile_items(items, analyzer, build_configuration, install_using_frameworks, build_catalyst, build_xcframeworks)
|
9
9
|
raise "\n\nno items".red unless items.count > 0
|
10
10
|
|
11
11
|
sources = analyzer.sources
|
@@ -18,7 +18,8 @@ module PodBuilder
|
|
18
18
|
podfile.sub!("%%%use_frameworks%%%", install_using_frameworks ? "use_frameworks!" : "use_modular_headers!")
|
19
19
|
podfile.sub!("%%%uses_frameworks%%%", install_using_frameworks ? "true" : "false")
|
20
20
|
podfile.sub!("%%%build_xcframeworks%%%", build_xcframeworks ? "true" : "false")
|
21
|
-
|
21
|
+
podfile.sub!("%%%build_catalyst%%%", build_catalyst ? "true" : "false")
|
22
|
+
|
22
23
|
podfile.sub!("%%%platform_name%%%", platform.name.to_s)
|
23
24
|
podfile.sub!("%%%deployment_version%%%", platform.deployment_target.version)
|
24
25
|
|
@@ -3,6 +3,26 @@ require 'colored'
|
|
3
3
|
require 'pathname'
|
4
4
|
|
5
5
|
module PodBuilder
|
6
|
+
class XcodeBuildSettings
|
7
|
+
attr_reader :platform_name
|
8
|
+
attr_reader :build_destination
|
9
|
+
|
10
|
+
def initialize(platform_name)
|
11
|
+
@platform_name = platform_name
|
12
|
+
|
13
|
+
case platform_name
|
14
|
+
when "iphoneos" then @build_destination = "generic/platform=iOS"
|
15
|
+
when "iphonesimulator" then @build_destination = "generic/platform=iOS Simulator"
|
16
|
+
when "catalyst" then @build_destination = "platform=macOS,arch=x86_64,variant=Mac Catalyst"
|
17
|
+
when "macos" then @build_destination = "generic/platform=OS X"
|
18
|
+
when "tvos" then @build_destination = "generic/platform=tvOS"
|
19
|
+
when "tvossimulator" then @build_destination = "generic/platform=tvOS Simulator"
|
20
|
+
when "watchos" then @build_destination = "generic/platform=watchOS"
|
21
|
+
when "watchossimulator" then @build_destination = "generic/platform=watchOS Simulator"
|
22
|
+
else raise "\n\nUnknown platform '#{platform_name}'".red end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
6
26
|
def self.build_for_iosish_platform_framework(sandbox, build_dir, target, device, simulator, configuration, deterministic_build)
|
7
27
|
dsym_device_folder = File.join(build_dir, "dSYM", device)
|
8
28
|
dsym_simulator_folder = File.join(build_dir, "dSYM", simulator)
|
@@ -269,6 +289,7 @@ Pod::HooksManager.register('podbuilder-rome', :post_install) do |installer_conte
|
|
269
289
|
if user_options["pre_compile"]
|
270
290
|
user_options["pre_compile"].call(installer_context)
|
271
291
|
end
|
292
|
+
build_catalyst = user_options.fetch('build_catalyst', false)
|
272
293
|
build_xcframeworks = user_options.fetch('build_xcframeworks', false)
|
273
294
|
|
274
295
|
prebuilt_root_paths = JSON.parse(user_options["prebuilt_root_paths"].gsub('=>', ':'))
|
@@ -291,23 +312,27 @@ Pod::HooksManager.register('podbuilder-rome', :post_install) do |installer_conte
|
|
291
312
|
project_path = sandbox_root.parent + 'Pods/Pods.xcodeproj'
|
292
313
|
|
293
314
|
case target.platform_name
|
294
|
-
when :ios then
|
295
|
-
|
296
|
-
|
297
|
-
|
315
|
+
when :ios then
|
316
|
+
xcodebuild_settings = [PodBuilder::XcodeBuildSettings.new("iphoneos"), PodBuilder::XcodeBuildSettings.new("iphonesimulator")]
|
317
|
+
if build_catalyst
|
318
|
+
xcodebuild_settings += [PodBuilder::XcodeBuildSettings.new("catalyst")]
|
319
|
+
end
|
320
|
+
when :osx then xcodebuild_settings = [PodBuilder::XcodeBuildSettings.new("macos")]
|
321
|
+
when :tvos then xcodebuild_settings = [PodBuilder::XcodeBuildSettings.new("tvos"), PodBuilder::XcodeBuildSettings.new("tvossimulator")]
|
322
|
+
when :watchos then xcodebuild_settings = [PodBuilder::XcodeBuildSettings.new("watchos"), PodBuilder::XcodeBuildSettings.new("watchossimulator")]
|
298
323
|
else raise "\n\nUnknown platform '#{target.platform_name}'".red end
|
299
324
|
|
300
|
-
|
301
|
-
puts "Building xcframeworks for #{
|
302
|
-
raise "\n\n#{
|
325
|
+
xcodebuild_settings.each do |xcodebuild_setting|
|
326
|
+
puts "Building xcframeworks for #{xcodebuild_setting.platform_name}".yellow
|
327
|
+
raise "\n\n#{build_destination} xcframework archive failed!".red if !system("xcodebuild archive -project #{project_path.to_s} -scheme Pods-DummyTarget -destination '#{xcodebuild_setting.build_destination}' -archivePath '#{build_dir}/#{xcodebuild_setting.platform_name}' SKIP_INSTALL=NO > /dev/null 2>&1")
|
303
328
|
end
|
304
329
|
|
305
|
-
built_items = Dir.glob("#{build_dir}/#{
|
330
|
+
built_items = Dir.glob("#{build_dir}/#{xcodebuild_settings[0].platform_name}.xcarchive/Products/Library/Frameworks/*").reject { |t| File.basename(t, ".*") == "Pods_DummyTarget" }
|
306
331
|
|
307
332
|
built_items.each do |built_item|
|
308
333
|
built_item_paths = [built_item]
|
309
|
-
|
310
|
-
path = "#{build_dir}/#{
|
334
|
+
xcodebuild_settings.drop(1).each do |xcodebuild_setting|
|
335
|
+
path = "#{build_dir}/#{xcodebuild_setting.platform_name}.xcarchive/Products/Library/Frameworks/#{File.basename(built_item)}"
|
311
336
|
if File.directory?(path)
|
312
337
|
built_item_paths.push(path)
|
313
338
|
else
|
@@ -321,16 +346,16 @@ Pod::HooksManager.register('podbuilder-rome', :post_install) do |installer_conte
|
|
321
346
|
framework_name = File.basename(built_item_paths.first, ".*")
|
322
347
|
xcframework_path = "#{base_destination}/#{framework_name}/#{framework_name}.xcframework"
|
323
348
|
framework_params = built_item_paths.map { |t| "-framework '#{t}'"}.join(" ")
|
324
|
-
raise "\n\nFailed packing xcframework!".red if !system("xcodebuild -create-xcframework #{framework_params} -output '#{xcframework_path}' > /dev/null")
|
349
|
+
raise "\n\nFailed packing xcframework!".red if !system("xcodebuild -create-xcframework #{framework_params} -output '#{xcframework_path}' > /dev/null 2>&1")
|
325
350
|
|
326
351
|
if enable_dsym
|
327
|
-
|
328
|
-
dsym_source = "#{build_dir}/#{
|
352
|
+
xcodebuild_settings.each do |xcodebuild_setting|
|
353
|
+
dsym_source = "#{build_dir}/#{xcodebuild_setting.platform_name}.xcarchive/dSYMs/"
|
329
354
|
if File.directory?(dsym_source)
|
330
355
|
destination = sandbox_root.parent + "dSYMs"
|
331
356
|
FileUtils.mkdir_p(destination)
|
332
357
|
FileUtils.mv(dsym_source, destination)
|
333
|
-
FileUtils.mv("#{destination}/dSYMs", "#{destination}/#{
|
358
|
+
FileUtils.mv("#{destination}/dSYMs", "#{destination}/#{xcodebuild_setting.platform_name}")
|
334
359
|
end
|
335
360
|
end
|
336
361
|
else
|
@@ -4,7 +4,7 @@ require 'cfpropertylist'
|
|
4
4
|
|
5
5
|
%%%use_frameworks%%%
|
6
6
|
|
7
|
-
plugin 'podbuilder-rome', { dsym: true, configuration: '%%%build_configuration%%%', uses_frameworks: %%%uses_frameworks%%%, build_xcframeworks: %%%build_xcframeworks%%%, prebuilt_root_paths: '%%%prebuilt_root_paths%%%', pre_compile: Proc.new { |installer|
|
7
|
+
plugin 'podbuilder-rome', { dsym: true, configuration: '%%%build_configuration%%%', uses_frameworks: %%%uses_frameworks%%%, build_catalyst: %%%build_catalyst%%%, build_xcframeworks: %%%build_xcframeworks%%%, prebuilt_root_paths: '%%%prebuilt_root_paths%%%', pre_compile: Proc.new { |installer|
|
8
8
|
|
9
9
|
def set_build_settings(target_name, build_configurations, installer)
|
10
10
|
installer.pods_project.targets.each do |target|
|
data/lib/pod_builder/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pod-builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomas Camin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-12-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|