X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=ood.go;h=c11b23f5995ab89ef95089477828429e5df00cc0;hb=0cadba691640011e1b17d950aabc6c9b64dd631f;hp=59bf76c18661202467c830526c8c6ee2abfe80b2;hpb=af40222f5a3e6fa82207f7ba31c338eb44566ba3;p=goredo.git diff --git a/ood.go b/ood.go index 59bf76c..c11b23f 100644 --- a/ood.go +++ b/ood.go @@ -105,10 +105,10 @@ func isOOD(tgt *Tgt, level int, seen map[string]*Tgt) (bool, error) { tracef(CDebug, "ood: %s%s -> cached: %v", indent, tgt, ood) return ood, nil } - depInfo := DepInfoCache[tgt.rel] + dep := DepCache[tgt.rel] var err error - if depInfo == nil { - depInfo, err = depRead(tgt) + if dep == nil { + dep, err = depRead(tgt) if err != nil { if errors.Is(err, fs.ErrNotExist) { if isSrc(tgt) { @@ -125,12 +125,10 @@ func isOOD(tgt *Tgt, level int, seen map[string]*Tgt) (bool, error) { return true, TgtError{tgt, ErrLine(err)} } } - if DepInfoCache != nil { - DepInfoCache[tgt.rel] = depInfo - } + DepCache[tgt.rel] = dep } - if depInfo.build == BuildUUID { + if dep.build == BuildUUID { tracef(CDebug, "ood: %s%s -> already built", indent, tgt) OODCache[tgt.rel] = false return false, nil @@ -141,47 +139,47 @@ func isOOD(tgt *Tgt, level int, seen map[string]*Tgt) (bool, error) { return true, nil } - for _, dep := range depInfo.ifcreates { - if FileExists(dep.a) { - tracef(CDebug, "ood: %s%s -> %s created", indent, tgt, dep) + for _, ifcreate := range dep.ifcreates { + if FileExists(ifcreate.a) { + tracef(CDebug, "ood: %s%s -> %s created", indent, tgt, ifcreate) ood = true goto Done } } - for _, dep := range depInfo.ifchanges { - tracef(CDebug, "ood: %s%s -> %s: checking", indent, tgt, dep.tgt) - ood, cached = OODCache[dep.tgt.rel] + for _, ifchange := range dep.ifchanges { + tracef(CDebug, "ood: %s%s -> %s: checking", indent, tgt, ifchange.tgt) + ood, cached = OODCache[ifchange.tgt.rel] if cached { - tracef(CDebug, "ood: %s%s -> %s: cached: %v", indent, tgt, dep.tgt, ood) + tracef(CDebug, "ood: %s%s -> %s: cached: %v", indent, tgt, ifchange.tgt, ood) if ood { goto Done } continue } - inode, err := inodeFromFileByPath(dep.tgt.a) + inode, err := inodeFromFileByPath(ifchange.tgt.a) if err != nil { if errors.Is(err, fs.ErrNotExist) { - tracef(CDebug, "ood: %s%s -> %s: not exists", indent, tgt, dep.tgt) + tracef(CDebug, "ood: %s%s -> %s: not exists", indent, tgt, ifchange.tgt) ood = true - OODCache[dep.tgt.rel] = ood + OODCache[ifchange.tgt.rel] = ood goto Done } return ood, TgtError{tgt, ErrLine(err)} } if inode.Size != dep.inode.Size { - tracef(CDebug, "ood: %s%s -> %s: size differs", indent, tgt, dep.tgt) + tracef(CDebug, "ood: %s%s -> %s: size differs", indent, tgt, ifchange.tgt) ood = true OODCache[dep.tgt.rel] = ood goto Done } if InodeTrust != InodeTrustNone && inode.Equals(dep.inode) { - tracef(CDebug, "ood: %s%s -> %s: same inode", indent, tgt, dep.tgt) + tracef(CDebug, "ood: %s%s -> %s: same inode", indent, tgt, ifchange.tgt) } else { - tracef(CDebug, "ood: %s%s -> %s: inode differs", indent, tgt, dep.tgt) - fd, err := os.Open(dep.tgt.a) + tracef(CDebug, "ood: %s%s -> %s: inode differs", indent, tgt, ifchange.tgt) + fd, err := os.Open(ifchange.tgt.a) if err != nil { return ood, TgtError{tgt, ErrLine(err)} } @@ -191,40 +189,40 @@ func isOOD(tgt *Tgt, level int, seen map[string]*Tgt) (bool, error) { return ood, TgtError{tgt, ErrLine(err)} } if dep.hash != hsh { - tracef(CDebug, "ood: %s%s -> %s: hash differs", indent, tgt, dep.tgt) + tracef(CDebug, "ood: %s%s -> %s: hash differs", indent, tgt, ifchange.tgt) ood = true - OODCache[dep.tgt.rel] = ood + OODCache[ifchange.tgt.rel] = ood goto Done } - tracef(CDebug, "ood: %s%s -> %s: same hash", indent, tgt, dep.tgt) + tracef(CDebug, "ood: %s%s -> %s: same hash", indent, tgt, ifchange.tgt) } - if dep.tgt.rel == tgt.rel { - tracef(CDebug, "ood: %s%s -> %s: same target", indent, tgt, dep.tgt) + if ifchange.tgt.rel == tgt.rel { + tracef(CDebug, "ood: %s%s -> %s: same target", indent, tgt, ifchange.tgt) continue } - if isSrc(dep.tgt) { - tracef(CDebug, "ood: %s%s -> %s: is source", indent, tgt, dep.tgt) - OODCache[dep.tgt.rel] = false + if isSrc(ifchange.tgt) { + tracef(CDebug, "ood: %s%s -> %s: is source", indent, tgt, ifchange.tgt) + OODCache[ifchange.tgt.rel] = false continue } - if _, ok := seen[dep.tgt.rel]; ok { - tracef(CDebug, "ood: %s%s -> %s: was always built", indent, tgt, dep.tgt) - OODCache[dep.tgt.rel] = false + if _, ok := seen[ifchange.tgt.rel]; ok { + tracef(CDebug, "ood: %s%s -> %s: was always built", indent, tgt, ifchange.tgt) + OODCache[ifchange.tgt.rel] = false continue } - depOOD, err := isOODWithTrace(dep.tgt, level+1, seen) + depOOD, err := isOODWithTrace(ifchange.tgt, level+1, seen) if err != nil { return ood, TgtError{tgt, err} } if depOOD { - tracef(CDebug, "ood: %s%s -> %s: ood", indent, tgt, dep.tgt) + tracef(CDebug, "ood: %s%s -> %s: ood", indent, tgt, ifchange.tgt) ood = true goto Done } - tracef(CDebug, "ood: %s%s -> %s: !ood", indent, tgt, dep.tgt) + tracef(CDebug, "ood: %s%s -> %s: !ood", indent, tgt, ifchange.tgt) } Done: