]> Cypherpunks.ru repositories - goredo.git/blobdiff - ifchange.go
Binary format and many optimisations
[goredo.git] / ifchange.go
index 1ebe72163cfbb85302d374faf0a80957f9d60122..a55120e2e995b957c78dc46f44614229542f3488 100644 (file)
@@ -26,17 +26,15 @@ func collectDeps(
        level int,
        deps map[string]map[string]*Tgt,
        includeSrc bool,
-       seen map[string]struct{},
 ) []*Tgt {
-       if _, ok := seen[tgt.a]; ok {
+       if _, ok := DepCache[tgt.rel]; ok {
                return nil
        }
        dep, err := depRead(tgt)
        if err != nil {
                return nil
        }
-       DepInfoCache[tgt.Dep()] = depInfo
-       seen[tgt.a] = struct{}{}
+       DepCache[tgt.rel] = dep
        var alwayses []*Tgt
        returnReady := false
        if dep.always {
@@ -64,7 +62,7 @@ func collectDeps(
                                deps[ifchange.tgt.rel] = map[string]*Tgt{tgt.rel: tgt}
                        }
                        alwayses = append(alwayses,
-                               collectDeps(dep.tgt, level+1, deps, includeSrc, seen)...)
+                               collectDeps(ifchange.tgt, level+1, deps, includeSrc)...)
                }
        }
        return alwayses
@@ -75,20 +73,15 @@ func buildDependants(tgts []*Tgt) map[string]*Tgt {
        tracef(CDebug, "collecting deps")
        seen := make(map[string]*Tgt)
        deps := make(map[string]map[string]*Tgt)
-       {
-               collectDepsSeen := make(map[string]struct{})
-               for _, tgtInitial := range tgts {
-                       for _, tgt := range collectDeps(tgtInitial, 0, deps, false, collectDepsSeen) {
-                               if tgt.a != tgtInitial.a {
-                                       seen[tgt.a] = tgt
-                               }
+       for _, tgtInitial := range tgts {
+               for _, tgt := range collectDeps(tgtInitial, 0, deps, false) {
+                       if tgt.rel != tgtInitial.rel {
+                               seen[tgt.rel] = tgt
                        }
                }
-               InodeCache = make(map[string][]*Inode)
        }
        TgtCache = nil
-       HashCache = nil
-       InodeCache = nil
+       IfchangeCache = nil
        if len(seen) == 0 {
                return seen
        }