@@ -151,13 +151,17 @@ func (index Index) MergeIntoPackages(outPackages cores.Packages) {
151
151
// which in turn contains a single indexPlatformRelease converted from the one
152
152
// passed as argument
153
153
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
+
154
157
tools := []indexToolDependency {}
155
158
for _ , t := range pr .ToolDependencies {
156
159
tools = append (tools , indexToolDependency {
157
160
Packager : t .ToolPackager ,
158
161
Name : t .ToolName ,
159
162
Version : t .ToolVersion ,
160
163
})
164
+ requiredPackages [t .ToolPackager ] = true
161
165
}
162
166
163
167
discoveries := []indexDiscoveryDependency {}
@@ -166,6 +170,7 @@ func IndexFromPlatformRelease(pr *cores.PlatformRelease) Index {
166
170
Packager : d .Packager ,
167
171
Name : d .Name ,
168
172
})
173
+ requiredPackages [d .Packager ] = true
169
174
}
170
175
171
176
monitors := []indexMonitorDependency {}
@@ -174,6 +179,7 @@ func IndexFromPlatformRelease(pr *cores.PlatformRelease) Index {
174
179
Packager : m .Packager ,
175
180
Name : m .Name ,
176
181
})
182
+ requiredPackages [m .Packager ] = true
177
183
}
178
184
179
185
// Helper functions: those are needed to build an extract of the package_index.json
@@ -249,13 +255,22 @@ func IndexFromPlatformRelease(pr *cores.PlatformRelease) Index {
249
255
mainPlatform .ToolDependencies = tools
250
256
mainPlatform .DiscoveryDependencies = discoveries
251
257
mainPlatform .MonitorDependencies = monitors
258
+ delete (requiredPackages , pr .Platform .Package .Name )
252
259
253
260
mainPackage := extractIndexPackage (pr .Platform .Package )
254
261
mainPackage .Platforms = []* indexPlatformRelease {mainPlatform }
255
262
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
+
256
271
return Index {
257
272
IsTrusted : pr .IsTrusted ,
258
- Packages : [] * indexPackage { mainPackage } ,
273
+ Packages : packages ,
259
274
}
260
275
}
261
276
0 commit comments