MYNEWT-558 newt - depgraph dup nodes in split tgts
Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/commit/a3ddaaab Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/tree/a3ddaaab Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/diff/a3ddaaab Branch: refs/heads/mynewt_1_0_0 Commit: a3ddaaabbc25a1548c177604824c67eb58961206 Parents: 0369efc Author: Christopher Collins <[email protected]> Authored: Mon Feb 6 17:34:12 2017 -0800 Committer: Marko Kiiskila <[email protected]> Committed: Mon Mar 6 13:29:06 2017 -0800 ---------------------------------------------------------------------- newt/builder/buildutil.go | 4 ++-- newt/builder/depgraph.go | 48 ---------------------------------------- newt/builder/targetbuild.go | 4 ++-- newt/resolve/resolve.go | 24 ++++++++------------ 4 files changed, 13 insertions(+), 67 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/a3ddaaab/newt/builder/buildutil.go ---------------------------------------------------------------------- diff --git a/newt/builder/buildutil.go b/newt/builder/buildutil.go index 15ab0c2..61e5b65 100644 --- a/newt/builder/buildutil.go +++ b/newt/builder/buildutil.go @@ -106,7 +106,7 @@ func logDepInfo(res *resolve.Resolution) { } // Log dependency graph. - dg, err := joinedDepGraph(res.Sets()) + dg, err := depGraph(res.MasterSet) if err != nil { log.Debugf("Error while constructing dependency graph: %s\n", err.Error()) @@ -115,7 +115,7 @@ func logDepInfo(res *resolve.Resolution) { } // Log reverse dependency graph. - rdg, err := joinedRevdepGraph(res.Sets()) + rdg, err := revdepGraph(res.MasterSet) if err != nil { log.Debugf("Error while constructing reverse dependency graph: %s\n", err.Error()) http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/a3ddaaab/newt/builder/depgraph.go ---------------------------------------------------------------------- diff --git a/newt/builder/depgraph.go b/newt/builder/depgraph.go index f38906c..6fc8a19 100644 --- a/newt/builder/depgraph.go +++ b/newt/builder/depgraph.go @@ -89,54 +89,6 @@ func revdepGraph(rs *resolve.ResolveSet) (DepGraph, error) { return graphMapToDepGraph(revGm), nil } -func mergeDepGraphs(graphs ...DepGraph) DepGraph { - gm := graphMap{} - - for _, graph := range graphs { - for parent, children := range graph { - if gm[parent] == nil { - gm[parent] = map[*resolve.ResolveDep]struct{}{} - } - - for _, child := range children { - graphMapAdd(gm, parent, child) - } - } - } - - dg := graphMapToDepGraph(gm) - - return dg -} - -func joinedDepGraph(rss []*resolve.ResolveSet) (DepGraph, error) { - finalGraph := DepGraph{} - - for _, rs := range rss { - graph, err := depGraph(rs) - if err != nil { - return nil, err - } - finalGraph = mergeDepGraphs(finalGraph, graph) - } - - return finalGraph, nil -} - -func joinedRevdepGraph(rss []*resolve.ResolveSet) (DepGraph, error) { - finalGraph := DepGraph{} - - for _, rs := range rss { - graph, err := revdepGraph(rs) - if err != nil { - return nil, err - } - finalGraph = mergeDepGraphs(finalGraph, graph) - } - - return finalGraph, nil -} - func depString(dep *resolve.ResolveDep) string { s := fmt.Sprintf("%s", dep.Rpkg.Lpkg.FullName()) if dep.Api != "" { http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/a3ddaaab/newt/builder/targetbuild.go ---------------------------------------------------------------------- diff --git a/newt/builder/targetbuild.go b/newt/builder/targetbuild.go index 2bea6ef..64710db 100644 --- a/newt/builder/targetbuild.go +++ b/newt/builder/targetbuild.go @@ -669,7 +669,7 @@ func (t *TargetBuilder) CreateDepGraph() (DepGraph, error) { return nil, err } - return joinedDepGraph(t.res.Sets()) + return depGraph(t.res.MasterSet) } func (t *TargetBuilder) CreateRevdepGraph() (DepGraph, error) { @@ -677,5 +677,5 @@ func (t *TargetBuilder) CreateRevdepGraph() (DepGraph, error) { return nil, err } - return joinedRevdepGraph(t.res.Sets()) + return revdepGraph(t.res.MasterSet) } http://git-wip-us.apache.org/repos/asf/incubator-mynewt-newt/blob/a3ddaaab/newt/resolve/resolve.go ---------------------------------------------------------------------- diff --git a/newt/resolve/resolve.go b/newt/resolve/resolve.go index c4a1d38..8a675c0 100644 --- a/newt/resolve/resolve.go +++ b/newt/resolve/resolve.go @@ -78,8 +78,12 @@ type Resolution struct { UnsatisfiedApis map[string][]*ResolvePackage LpkgRpkgMap map[*pkg.LocalPackage]*ResolvePackage - LoaderSet *ResolveSet - AppSet *ResolveSet + + // Contains all dependencies; union of loader and app. + MasterSet *ResolveSet + + LoaderSet *ResolveSet + AppSet *ResolveSet } func newResolver( @@ -112,25 +116,13 @@ func newResolution() *Resolution { UnsatisfiedApis: map[string][]*ResolvePackage{}, } + r.MasterSet = &ResolveSet{Res: r} r.LoaderSet = &ResolveSet{Res: r} r.AppSet = &ResolveSet{Res: r} return r } -func (res *Resolution) Sets() []*ResolveSet { - rss := []*ResolveSet{} - - if res.LoaderSet != nil { - rss = append(rss, res.LoaderSet) - } - if res.AppSet != nil { - rss = append(rss, res.AppSet) - } - - return rss -} - func NewResolvePkg(lpkg *pkg.LocalPackage) *ResolvePackage { return &ResolvePackage{ Lpkg: lpkg, @@ -542,6 +534,8 @@ func ResolveFull( res.LpkgRpkgMap = r.pkgMap + res.MasterSet.Rpkgs = r.rpkgSlice() + // If there is no loader, then the set of all packages is just the app // packages. We already resolved the necessary dependency information when // syscfg was calculated above.
