cocoapods-spm 0.1.2 → 0.1.3
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-spm/def/podfile.rb +7 -3
- data/lib/cocoapods-spm/def/spm_package.rb +11 -1
- data/lib/cocoapods-spm/hooks/post_integrate/1.add_spm_pkgs.rb +1 -0
- data/lib/cocoapods-spm/hooks/post_integrate/5.update_settings.rb +1 -3
- data/lib/cocoapods-spm/resolver/product.rb +8 -1
- data/lib/cocoapods-spm/resolver/product_dep_resolver.rb +20 -11
- data/lib/cocoapods-spm/resolver/result.rb +10 -2
- 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: e61ad227d509165fab0c8f3e832aa06d05524fa7c2cbfd4d7cc8f393252fc60f
|
4
|
+
data.tar.gz: 66f6bf9e254c7a99edc55f304fcf34ea60867fbbb9f138a6473eb200b6fa9f32
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e48c19f9a2ed81601a69cca75ceda44b9353bf76f996458dc3398dad8e7b0ed2fa6fff8ce03cad91122cdcf6f7603a5cc1070b9944dfab98a0d1ff5081f82740
|
7
|
+
data.tar.gz: d26d1674591412b761b92e51154142b5e76f7515464b0e462d5b26a06caeadd3162df96308d2ff34b1cb3d27c554eb33715d2248b7e66e2e58e1d56ceb4b1214
|
@@ -33,10 +33,14 @@ module Pod
|
|
33
33
|
|
34
34
|
def spm_pkgs_by_aggregate_target
|
35
35
|
@spm_pkgs_by_aggregate_target ||= begin
|
36
|
-
|
37
|
-
|
38
|
-
|
36
|
+
dict = {}
|
37
|
+
to_visit = root_target_definitions.map { |t| [t, []] }
|
38
|
+
until to_visit.empty?
|
39
|
+
target, acc = to_visit.pop
|
40
|
+
dict[target.to_s] = (target.spm_pkgs + acc).uniq
|
41
|
+
to_visit += target.children.map { |t| [t, dict[target.to_s]] }
|
39
42
|
end
|
43
|
+
dict
|
40
44
|
end
|
41
45
|
end
|
42
46
|
|
@@ -4,7 +4,7 @@ require "cocoapods-spm/def/spm_dependency"
|
|
4
4
|
module Pod
|
5
5
|
module SPM
|
6
6
|
class Package
|
7
|
-
attr_reader :name, :requirement, :url, :relative_path
|
7
|
+
attr_reader :name, :requirement, :url, :relative_path, :linking_opts
|
8
8
|
|
9
9
|
def initialize(name, options = {})
|
10
10
|
@name = name
|
@@ -13,6 +13,7 @@ module Pod
|
|
13
13
|
@linkage = nil
|
14
14
|
@url = nil
|
15
15
|
@requirement = nil
|
16
|
+
@linking_opts = {}
|
16
17
|
parse_options(options)
|
17
18
|
end
|
18
19
|
|
@@ -20,6 +21,7 @@ module Pod
|
|
20
21
|
@url = options[:url] || options[:git]
|
21
22
|
@relative_path = relative_path_from(options)
|
22
23
|
@requirement = requirement_from(options)
|
24
|
+
@linking_opts = options[:linking] || {}
|
23
25
|
end
|
24
26
|
|
25
27
|
def slug
|
@@ -47,6 +49,14 @@ module Pod
|
|
47
49
|
@relative_path != nil
|
48
50
|
end
|
49
51
|
|
52
|
+
def use_default_xcode_linking?
|
53
|
+
@linking_opts.fetch(:use_default_xcode_linking, false)
|
54
|
+
end
|
55
|
+
|
56
|
+
def linker_flags
|
57
|
+
@linking_opts[:linker_flags] || []
|
58
|
+
end
|
59
|
+
|
50
60
|
def to_dependencies
|
51
61
|
if (products = @_options[:products])
|
52
62
|
products.map { |product| Dependency.new(@name, product: product, pkg: self) }
|
@@ -37,6 +37,7 @@ module Pod
|
|
37
37
|
pkg_ref = spm_pkg_refs[dep.pkg.name]
|
38
38
|
target_dep_ref = pkg_ref.create_target_dependency_ref(dep.product)
|
39
39
|
target.dependencies << target_dep_ref
|
40
|
+
target.package_product_dependencies << target_dep_ref.product_ref if dep.pkg.use_default_xcode_linking?
|
40
41
|
end
|
41
42
|
end
|
42
43
|
end
|
@@ -71,9 +71,7 @@ module Pod
|
|
71
71
|
def linker_flags_for(target)
|
72
72
|
return [] if !target.is_a?(Pod::AggregateTarget) && target.build_as_static?
|
73
73
|
|
74
|
-
@spm_resolver.result.
|
75
|
-
p.dynamic? ? "-framework \"#{p.name}\"" : "-l\"#{p.name}.o\""
|
76
|
-
end
|
74
|
+
@spm_resolver.result.linker_flags_for(target)
|
77
75
|
end
|
78
76
|
|
79
77
|
def update_swift_include_paths
|
@@ -2,13 +2,16 @@ module Pod
|
|
2
2
|
module SPM
|
3
3
|
class Resolver
|
4
4
|
class Product
|
5
|
-
attr_reader :pkg, :name, :linkage, :headers_path
|
5
|
+
attr_reader :pkg, :name, :linkage, :headers_path, :binary
|
6
|
+
|
7
|
+
alias binary? binary
|
6
8
|
|
7
9
|
def initialize(options = {})
|
8
10
|
@pkg = options[:pkg]
|
9
11
|
@name = options[:name]
|
10
12
|
@linkage = options.fetch(:linkage, :static)
|
11
13
|
@headers_path = options[:headers_path]
|
14
|
+
@binary = options[:binary]
|
12
15
|
end
|
13
16
|
|
14
17
|
def inspect
|
@@ -18,6 +21,10 @@ module Pod
|
|
18
21
|
def dynamic?
|
19
22
|
@linkage == :dynamic
|
20
23
|
end
|
24
|
+
|
25
|
+
def linked_as_framework?
|
26
|
+
dynamic? || binary?
|
27
|
+
end
|
21
28
|
end
|
22
29
|
end
|
23
30
|
end
|
@@ -14,6 +14,7 @@ module Pod
|
|
14
14
|
def resolve
|
15
15
|
generate_metadata
|
16
16
|
resolve_dynamic_products
|
17
|
+
resolve_binary_targets
|
17
18
|
resolve_headers_path_by_target
|
18
19
|
resolve_product_deps
|
19
20
|
end
|
@@ -48,6 +49,15 @@ module Pod
|
|
48
49
|
end
|
49
50
|
end
|
50
51
|
|
52
|
+
def resolve_binary_targets
|
53
|
+
@binary_targets ||= Set.new
|
54
|
+
@result.metadata_cache.each_value do |metadata|
|
55
|
+
metadata.targets.each do |h|
|
56
|
+
@binary_targets << h["name"] if h["type"] == "binary"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
51
61
|
def resolve_headers_path_by_target
|
52
62
|
@headers_path_by_product ||= {}
|
53
63
|
@result.metadata_cache.each_value do |metadata|
|
@@ -62,7 +72,9 @@ module Pod
|
|
62
72
|
end
|
63
73
|
|
64
74
|
def resolve_product_deps
|
65
|
-
@result.spm_dependencies_by_target.values.flatten.uniq(&:
|
75
|
+
@result.spm_dependencies_by_target.values.flatten.uniq(&:product).each do |dep|
|
76
|
+
next if dep.pkg.use_default_xcode_linking?
|
77
|
+
|
66
78
|
verify_product_exists_in_pkg(dep.pkg.name, dep.product)
|
67
79
|
product = create_product(dep.pkg.name, dep.product)
|
68
80
|
recursive_products_of(product)
|
@@ -78,7 +90,7 @@ module Pod
|
|
78
90
|
def recursive_products_of(product)
|
79
91
|
products = [product] + direct_products_of(product).flat_map do |child|
|
80
92
|
[child] + recursive_products_of(child)
|
81
|
-
end
|
93
|
+
end.uniq(&:name)
|
82
94
|
@result.spm_products[product.name] = products
|
83
95
|
products
|
84
96
|
end
|
@@ -100,14 +112,10 @@ module Pod
|
|
100
112
|
end
|
101
113
|
|
102
114
|
def product_from_hash(hash, metadata)
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
name, pkg = hash["product"]
|
108
|
-
elsif hash.key?("target")
|
109
|
-
# TODO: Handle this
|
110
|
-
end
|
115
|
+
type = ["byName", "target", "product"].find { |k| hash.key?(k) }
|
116
|
+
name = hash[type][0] unless type.nil?
|
117
|
+
pkg = metadata["name"]
|
118
|
+
pkg = hash["product"][1] if hash.key?("product")
|
111
119
|
create_product(pkg, name)
|
112
120
|
end
|
113
121
|
|
@@ -116,7 +124,8 @@ module Pod
|
|
116
124
|
pkg: pkg,
|
117
125
|
name: name,
|
118
126
|
linkage: @dynamic_products.include?(name) ? :dynamic : :static,
|
119
|
-
headers_path: @headers_path_by_product[name]
|
127
|
+
headers_path: @headers_path_by_product[name],
|
128
|
+
binary: @binary_targets.include?(name)
|
120
129
|
)
|
121
130
|
end
|
122
131
|
end
|
@@ -31,11 +31,19 @@ module Pod
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def spm_dependencies_for(target)
|
34
|
-
@spm_dependencies_by_target[target.to_s]
|
34
|
+
@spm_dependencies_by_target[target.to_s].to_a
|
35
35
|
end
|
36
36
|
|
37
37
|
def spm_products_for(target)
|
38
|
-
spm_dependencies_for(target).flat_map { |d| @spm_products[d.product] }.uniq(&:name)
|
38
|
+
spm_dependencies_for(target).flat_map { |d| @spm_products[d.product].to_a }.uniq(&:name)
|
39
|
+
end
|
40
|
+
|
41
|
+
def linker_flags_for(target)
|
42
|
+
flags = spm_dependencies_for(target).flat_map { |d| d.pkg.linker_flags }
|
43
|
+
flags += spm_products_for(target).map do |p|
|
44
|
+
p.linked_as_framework? ? "-framework \"#{p.name}\"" : "-l\"#{p.name}.o\""
|
45
|
+
end
|
46
|
+
flags.uniq
|
39
47
|
end
|
40
48
|
end
|
41
49
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods-spm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thuyen Trinh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-04-
|
11
|
+
date: 2024-04-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: xcodeproj
|