Skip to content

Commit 75c2df4

Browse files
committed
Restored "Cleaned-up invalid edges from duplicate nodes. #6143" (#6291)
This reverts commit cae9dd7.
1 parent c091748 commit 75c2df4

1 file changed

Lines changed: 27 additions & 37 deletions

File tree

toolkit/tools/grapher/grapher.go

Lines changed: 27 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -136,15 +136,15 @@ func addUnresolvedPackage(g *pkggraph.PkgGraph, pkgVer *pkgjson.PackageVer) (new
136136
return
137137
}
138138

139-
logger.Log.Infof("Adding unresolved node %s\n", newRunNode.FriendlyName())
139+
logger.Log.Infof("Adding unresolved node '%s'.", newRunNode.FriendlyName())
140140

141141
return
142142
}
143143

144144
// addNodesForPackage creates a "Run", "Build", and "Test" node for the package described
145145
// in the Package structure. Returns pointers to the build and run Nodes
146146
// created, or an error if one of the nodes could not be created.
147-
func addNodesForPackage(g *pkggraph.PkgGraph, pkg *pkgjson.Package) (err error) {
147+
func addNodesForPackage(g *pkggraph.PkgGraph, pkg *pkgjson.Package) (foundDuplicate bool, err error) {
148148
var (
149149
newRunNode *pkggraph.PkgNode
150150
newBuildNode *pkggraph.PkgNode
@@ -156,34 +156,23 @@ func addNodesForPackage(g *pkggraph.PkgGraph, pkg *pkgjson.Package) (err error)
156156
return
157157
}
158158

159-
skipNewTestNode := false
160159
if nodes != nil {
161-
logger.Log.Warnf(`Duplicate package name for package %+v read from SRPM "%s" (Previous: %+v)`, pkg.Provides, pkg.SrpmPath, nodes.RunNode)
162-
newRunNode = nodes.RunNode
163-
newBuildNode = nodes.BuildNode
164-
newTestNode = nodes.TestNode
165-
166-
// Test nodes must be assigned to the build nodes of their true origin and not a duplicate from a potentially different SRPM.
167-
skipNewTestNode = true
160+
logger.Log.Warnf(`Skipping duplicate package name for package %+v read from SRPM "%s". Original: %+v.`, pkg.Provides, pkg.SrpmPath, nodes.RunNode)
161+
foundDuplicate = true
162+
return
168163
}
169164

170-
if newRunNode == nil {
171-
// Add "Run" node
172-
newRunNode, err = g.AddPkgNode(pkg.Provides, pkggraph.StateMeta, pkggraph.TypeLocalRun, pkg.SrpmPath, pkg.RpmPath, pkg.SpecPath, pkg.SourceDir, pkg.Architecture, pkggraph.LocalRepo)
173-
if err != nil {
174-
return
175-
}
176-
logger.Log.Debugf("Adding run node %s with id %d\n", newRunNode.FriendlyName(), newRunNode.ID())
165+
newRunNode, err = g.AddPkgNode(pkg.Provides, pkggraph.StateMeta, pkggraph.TypeLocalRun, pkg.SrpmPath, pkg.RpmPath, pkg.SpecPath, pkg.SourceDir, pkg.Architecture, pkggraph.LocalRepo)
166+
if err != nil {
167+
return
177168
}
169+
logger.Log.Debugf("Adding run node '%s' with id %d.", newRunNode.FriendlyName(), newRunNode.ID())
178170

179-
if newBuildNode == nil {
180-
// Add "Build" node
181-
newBuildNode, err = g.AddPkgNode(pkg.Provides, pkggraph.StateBuild, pkggraph.TypeLocalBuild, pkg.SrpmPath, pkg.RpmPath, pkg.SpecPath, pkg.SourceDir, pkg.Architecture, pkggraph.LocalRepo)
182-
if err != nil {
183-
return
184-
}
185-
logger.Log.Debugf("Adding build node %s with id %d\n", newBuildNode.FriendlyName(), newBuildNode.ID())
171+
newBuildNode, err = g.AddPkgNode(pkg.Provides, pkggraph.StateBuild, pkggraph.TypeLocalBuild, pkg.SrpmPath, pkg.RpmPath, pkg.SpecPath, pkg.SourceDir, pkg.Architecture, pkggraph.LocalRepo)
172+
if err != nil {
173+
return
186174
}
175+
logger.Log.Debugf("Adding build node '%s' with id %d.", newBuildNode.FriendlyName(), newBuildNode.ID())
187176

188177
// A "run" node has an implicit dependency on its corresponding "build" node, encode that here.
189178
err = g.AddEdge(newRunNode, newBuildNode)
@@ -192,19 +181,16 @@ func addNodesForPackage(g *pkggraph.PkgGraph, pkg *pkgjson.Package) (err error)
192181
return
193182
}
194183

195-
if skipNewTestNode || !pkg.RunTests {
184+
if !pkg.RunTests {
196185
logger.Log.Debugf("Skipping adding a test node for package %+v", pkg)
197186
return
198187
}
199188

200-
if newTestNode == nil {
201-
// Add "Test" node
202-
newTestNode, err = g.AddPkgNode(pkg.Provides, pkggraph.StateBuild, pkggraph.TypeTest, pkg.SrpmPath, pkggraph.NoRPMPath, pkg.SpecPath, pkg.SourceDir, pkg.Architecture, pkggraph.LocalRepo)
203-
if err != nil {
204-
return
205-
}
206-
logger.Log.Debugf("Adding test node %s with id %d\n", newTestNode.FriendlyName(), newTestNode.ID())
189+
newTestNode, err = g.AddPkgNode(pkg.Provides, pkggraph.StateBuild, pkggraph.TypeTest, pkg.SrpmPath, pkggraph.NoRPMPath, pkg.SpecPath, pkg.SourceDir, pkg.Architecture, pkggraph.LocalRepo)
190+
if err != nil {
191+
return
207192
}
193+
logger.Log.Debugf("Adding test node '%s' with id %d.", newTestNode.FriendlyName(), newTestNode.ID())
208194

209195
// A "test" node has a dependency on its corresponding "build" node. This dependency is required
210196
// to guarantee we will first check if the build node needs to be built or not before we make
@@ -331,12 +317,17 @@ func populateGraph(graph *pkggraph.PkgGraph, repo *pkgjson.PackageRepo) (err err
331317

332318
// Scan and add each package we know about
333319
logger.Log.Infof("Adding all packages from %s", *input)
320+
uniquePackages := make(map[*pkgjson.Package]bool)
334321
for _, pkg := range packages {
335-
err = addNodesForPackage(graph, pkg)
322+
foundDuplicate, err := addNodesForPackage(graph, pkg)
336323
if err != nil {
337324
logger.Log.Errorf("Failed to add local package %+v", pkg)
338325
return err
339326
}
327+
328+
if !foundDuplicate {
329+
uniquePackages[pkg] = true
330+
}
340331
}
341332
logger.Log.Infof("\tAdded %d packages", len(packages))
342333

@@ -346,11 +337,10 @@ func populateGraph(graph *pkggraph.PkgGraph, repo *pkgjson.PackageRepo) (err err
346337
// Rescan and add all the dependencies
347338
logger.Log.Infof("Adding all dependencies from %s", *input)
348339
dependenciesAdded := 0
349-
for idx := range packages {
350-
pkg := packages[idx]
351-
num, err := addPkgDependencies(graph, pkg)
340+
for uniquePkg := range uniquePackages {
341+
num, err := addPkgDependencies(graph, uniquePkg)
352342
if err != nil {
353-
logger.Log.Errorf("Failed to add dependency %+v", pkg)
343+
logger.Log.Errorf("Failed to add dependency %+v", uniquePkg)
354344
return err
355345
}
356346
dependenciesAdded += num

0 commit comments

Comments
 (0)