X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=ifchange.go;fp=ifchange.go;h=a55120e2e995b957c78dc46f44614229542f3488;hb=6dce71355599d4caf8267f6f02520037480f7ba3;hp=1ebe72163cfbb85302d374faf0a80957f9d60122;hpb=e1afa1a3b0f7e4e06f636f584a47bb8cfc885e7c;p=goredo.git diff --git a/ifchange.go b/ifchange.go index 1ebe721..a55120e 100644 --- a/ifchange.go +++ b/ifchange.go @@ -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 }