- depPath := path.Join(cwd, RedoDir, tgt+DepSuffix)
- fdDep, err := os.Open(depPath)
- if err != nil {
- tracef(CDebug, "ood: %s%s -> no dep: %s", indent, tgtOrig, depPath)
- OODCache[path.Join(cwd, tgt)] = true
- return true, nil
- }
- depInfo, err := depRead(fdDep)
- fdDep.Close()
- if err != nil {
- return true, TgtError{tgtOrig, err}
+ dep := DepCache[tgt.rel]
+ var err error
+ if dep == nil {
+ dep, err = depRead(tgt)
+ if err != nil {
+ if errors.Is(err, fs.ErrNotExist) {
+ if isSrc(tgt) {
+ ood = false
+ tracef(CDebug, "ood: %s%s -> is source", indent, tgt)
+ } else {
+ ood = true
+ tracef(CDebug, "ood: %s%s -> no dep: %s", indent, tgt, tgt.dep)
+ }
+ OODCache[tgt.rel] = ood
+ return ood, nil
+ }
+ if err != nil {
+ return true, TgtError{tgt, ErrLine(err)}
+ }
+ }
+ DepCache[tgt.rel] = dep