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.

Reply via email to