From 0cadba691640011e1b17d950aabc6c9b64dd631f Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Fri, 6 Oct 2023 21:38:59 +0300 Subject: [PATCH] Prepare to rename DepInfo->Dep --- ifchange.go | 18 +++++++------- ood.go | 68 ++++++++++++++++++++++++++--------------------------- run.go | 29 ++++++++++++----------- sources.go | 16 ++++++------- 4 files changed, 65 insertions(+), 66 deletions(-) diff --git a/ifchange.go b/ifchange.go index dbe03cf..0cb50c5 100644 --- a/ifchange.go +++ b/ifchange.go @@ -31,7 +31,7 @@ func collectDeps( if _, ok := seen[tgt.a]; ok { return nil } - depInfo, err := depRead(tgt) + dep, err := depRead(tgt) if err != nil { return nil } @@ -39,8 +39,8 @@ func collectDeps( seen[tgt.a] = struct{}{} var alwayses []*Tgt returnReady := false - if depInfo.always { - if depInfo.build == BuildUUID { + if dep.always { + if dep.build == BuildUUID { tracef( CDebug, "ood: %s%s always, but already build", strings.Repeat(". ", level), tgt, @@ -52,18 +52,18 @@ func collectDeps( returnReady = true } } - for _, dep := range depInfo.ifchanges { - if dep.tgt.a == tgt.a { + for _, ifchange := range dep.ifchanges { + if ifchange.tgt.rel == tgt.rel { continue } - if !includeSrc && isSrc(dep.tgt) { + if !includeSrc && isSrc(ifchange.tgt) { continue } if !returnReady { - if m, ok := deps[dep.tgt.a]; ok { - m[tgt.a] = tgt + if m, ok := deps[ifchange.tgt.rel]; ok { + m[tgt.rel] = tgt } else { - deps[dep.tgt.a] = map[string]*Tgt{tgt.a: tgt} + deps[ifchange.tgt.rel] = map[string]*Tgt{tgt.rel: tgt} } alwayses = append(alwayses, collectDeps(dep.tgt, level+1, deps, includeSrc, seen)...) 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: diff --git a/run.go b/run.go index 7fa4dea..38bfc13 100644 --- a/run.go +++ b/run.go @@ -132,14 +132,14 @@ func mkdirs(pth string) error { return os.MkdirAll(pth, os.FileMode(0777)) } -func isModified(depInfo *DepInfo, tgt *Tgt) ( +func isModified(dep *Dep, tgt *Tgt) ( modified bool, ourInode *Inode, hshPrev Hash, err error, ) { - if depInfo == nil { + if dep == nil { return } - for _, dep := range depInfo.ifchanges { - if dep.tgt.a != tgt.a { + for _, ifchange := range dep.ifchanges { + if ifchange.tgt.a != tgt.a { continue } ourInode, err = inodeFromFileByPath(tgt.a) @@ -260,7 +260,7 @@ func runScript(tgt *Tgt, errs chan error, forced, traced bool) error { // It scans the whole .rec file while searching for the single target, // but that one is always located at the very end - depInfo, err := depRead(tgt) + dep, err := depRead(tgt) if err != nil { if errors.Is(err, fs.ErrNotExist) { err = nil @@ -271,14 +271,14 @@ func runScript(tgt *Tgt, errs chan error, forced, traced bool) error { } // Check if it was already built in parallel - if !forced && depInfo != nil && depInfo.build == BuildUUID { + if !forced && dep != nil && dep.build == BuildUUID { lockRelease() errs <- nil return nil } // Check if target is not modified externally - modified, inodePrev, hshPrev, err := isModified(depInfo, tgt) + modified, inodePrev, hshPrev, err := isModified(dep, tgt) if err != nil { lockRelease() return TgtError{tgt, ErrLine(err)} @@ -294,7 +294,7 @@ func runScript(tgt *Tgt, errs chan error, forced, traced bool) error { }() return nil } - depInfo = nil + dep = nil // Start preparing .rec fdDep, err := tempfile(redoDir, tgt.t+DepSuffix) @@ -558,10 +558,10 @@ func runScript(tgt *Tgt, errs chan error, forced, traced bool) error { err = ErrLine(err) goto Err } - for _, dep := range ifchanges { + for _, ifchange := range ifchanges { fields = append(fields, recfile.Field{ Name: "Ifchange", - Value: dep, + Value: ifchange, }) } } @@ -798,11 +798,12 @@ func runScript(tgt *Tgt, errs chan error, forced, traced bool) error { // Post-commit .rec sanitizing if depInfo, err := depRead(tgt); err == nil { ifchangeSeen := make(map[string]struct{}, len(depInfo.ifchanges)) - for _, dep := range depInfo.ifchanges { - ifchangeSeen[dep.tgt.a] = struct{}{} + ifchangeSeen := make(map[string]struct{}, len(dep.ifchanges)) + for _, ifchange := range dep.ifchanges { + ifchangeSeen[ifchange.tgt.a] = struct{}{} } - for _, dep := range depInfo.ifcreates { - if _, exists := ifchangeSeen[dep.a]; exists { + for _, ifcreate := range dep.ifcreates { + if _, exists := ifchangeSeen[ifcreate.a]; exists { tracef(CWarn, "simultaneous ifcreate and ifchange records: %s", tgt) } } diff --git a/sources.go b/sources.go index 246c124..65f6bbd 100644 --- a/sources.go +++ b/sources.go @@ -33,23 +33,23 @@ func sourcesWalker( continue } seenDeps[tgt.rel] = struct{}{} - depInfo, err := depRead(tgt) + dep, err := depRead(tgt) if err != nil { if errors.Is(err, fs.ErrNotExist) { continue } return ErrLine(err) } - for _, dep := range depInfo.ifchanges { - if _, ok := seen[dep.tgt.rel]; ok { + for _, ifchange := range dep.ifchanges { + if _, ok := seen[ifchange.tgt.rel]; ok { continue } - seen[dep.tgt.rel] = struct{}{} - if isSrc(dep.tgt) { - srcs[dep.tgt.rel] = dep.tgt - } else if dep.tgt.rel != tgt.rel { + seen[ifchange.tgt.rel] = struct{}{} + if isSrc(ifchange.tgt) { + srcs[ifchange.tgt.rel] = ifchange.tgt + } else if ifchange.tgt.rel != tgt.rel { if err := sourcesWalker( - []*Tgt{dep.tgt}, + []*Tgt{ifchange.tgt}, seen, seenDeps, srcs, ); err != nil { return err -- 2.44.0