X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=ifchange.go;h=84bd2607bafad1011c23f908f27a0d7a62e17561;hb=317438ff2d0e1d2ee397a89bf692350df068a723;hp=0b8d694ff730023e71d4dcb2d3314fe84a5328b0;hpb=e935c1db3ae2ff6d920ff37802774ba2e85629f0;p=goredo.git diff --git a/ifchange.go b/ifchange.go index 0b8d694..84bd260 100644 --- a/ifchange.go +++ b/ifchange.go @@ -18,7 +18,6 @@ along with this program. If not, see . package main import ( - "os" "path" "strings" ) @@ -36,15 +35,11 @@ func collectDeps( return nil } depPath := path.Join(cwd, RedoDir, tgt+DepSuffix) - fdDep, err := os.Open(depPath) - if err != nil { - return nil - } - depInfo, err := depRead(fdDep) - fdDep.Close() + depInfo, err := depRead(depPath) if err != nil { return nil } + // DepInfoCache[depPath] = depInfo seen[tgtFull] = struct{}{} var alwayses []string returnReady := false @@ -62,19 +57,18 @@ func collectDeps( returnReady = true } } - for _, m := range depInfo.ifchanges { - dep := m["Target"] - if dep == "" { + for _, dep := range depInfo.ifchanges { + if dep.tgt == "" { return alwayses } - if dep == tgt { + if dep.tgt == tgt { continue } - if !includeSrc && isSrc(cwd, dep) { + if !includeSrc && isSrc(cwd, dep.tgt) { continue } if !returnReady { - depRel := cwdMustRel(cwd, dep) + depRel := cwdMustRel(cwd, dep.tgt) if m, ok := deps[depRel]; ok { m[tgtRel] = struct{}{} } else { @@ -83,7 +77,7 @@ func collectDeps( deps[depRel] = m } alwayses = append(alwayses, - collectDeps(cwd, dep, level+1, deps, includeSrc, seen)...) + collectDeps(cwd, dep.tgt, level+1, deps, includeSrc, seen)...) } } return alwayses