Skip to content

Commit 0fd6e54

Browse files
committed
Extract also referenced platform tools in installed.json.
If a platform requires tools from another referenced platform, we must extract the relevant data in the `installed.json` file too.
1 parent 211d123 commit 0fd6e54

File tree

1 file changed

+16
-1
lines changed
  • internal/arduino/cores/packageindex

1 file changed

+16
-1
lines changed

internal/arduino/cores/packageindex/index.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,13 +151,17 @@ func (index Index) MergeIntoPackages(outPackages cores.Packages) {
151151
// which in turn contains a single indexPlatformRelease converted from the one
152152
// passed as argument
153153
func IndexFromPlatformRelease(pr *cores.PlatformRelease) Index {
154+
// While enumerating the dependencies we also build a set of required packages.
155+
requiredPackages := map[string]bool{}
156+
154157
tools := []indexToolDependency{}
155158
for _, t := range pr.ToolDependencies {
156159
tools = append(tools, indexToolDependency{
157160
Packager: t.ToolPackager,
158161
Name: t.ToolName,
159162
Version: t.ToolVersion,
160163
})
164+
requiredPackages[t.ToolPackager] = true
161165
}
162166

163167
discoveries := []indexDiscoveryDependency{}
@@ -166,6 +170,7 @@ func IndexFromPlatformRelease(pr *cores.PlatformRelease) Index {
166170
Packager: d.Packager,
167171
Name: d.Name,
168172
})
173+
requiredPackages[d.Packager] = true
169174
}
170175

171176
monitors := []indexMonitorDependency{}
@@ -174,6 +179,7 @@ func IndexFromPlatformRelease(pr *cores.PlatformRelease) Index {
174179
Packager: m.Packager,
175180
Name: m.Name,
176181
})
182+
requiredPackages[m.Packager] = true
177183
}
178184

179185
// Helper functions: those are needed to build an extract of the package_index.json
@@ -249,13 +255,22 @@ func IndexFromPlatformRelease(pr *cores.PlatformRelease) Index {
249255
mainPlatform.ToolDependencies = tools
250256
mainPlatform.DiscoveryDependencies = discoveries
251257
mainPlatform.MonitorDependencies = monitors
258+
delete(requiredPackages, pr.Platform.Package.Name)
252259

253260
mainPackage := extractIndexPackage(pr.Platform.Package)
254261
mainPackage.Platforms = []*indexPlatformRelease{mainPlatform}
255262

263+
packages := []*indexPackage{mainPackage}
264+
for requiredPackageName := range requiredPackages {
265+
requiredPackage, ok := pr.Platform.Package.Packages.GetPackage(requiredPackageName)
266+
if ok {
267+
packages = append(packages, extractIndexPackage(requiredPackage))
268+
}
269+
}
270+
256271
return Index{
257272
IsTrusted: pr.IsTrusted,
258-
Packages: []*indexPackage{mainPackage},
273+
Packages: packages,
259274
}
260275
}
261276

0 commit comments

Comments
 (0)