func (e *RunError) Name() string {
var name string
if e.DoFile == "" {
- name = e.Tgt.String()
+ name = e.Tgt.rel
} else {
name = fmt.Sprintf("%s (%s)", e.Tgt, e.DoFile)
}
return os.MkdirAll(pth, os.FileMode(0777))
}
-func isModified(depInfo *DepInfo, tgt *Tgt) (
- modified bool, ourInode *Inode, hshPrev string, err error,
+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)
// 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
}
// 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)}
}()
return nil
}
- depInfo = nil
+ dep = nil
// Start preparing .rec
fdDep, err := tempfile(redoDir, tgt.t+DepSuffix)
doFile = NewTgt(path.Join(ups...))
if strings.HasPrefix(doFile.t, "default.") {
basename = basename[:len(basename)-(len(doFile.t)-len("default.")-len(".do"))-1]
- runErr.DoFile = doFile.String()
+ runErr.DoFile = doFile.rel
}
}
// Prepare command line
var cmdName string
var args []string
- if err = unix.Access(doFile.String(), unix.X_OK); err == nil {
+ if err = unix.Access(doFile.rel, unix.X_OK); err == nil {
cmdName = doFile.t
args = make([]string, 0, 3)
} else {
err = ErrLine(err)
goto Err
}
- for _, dep := range ifchanges {
+ for _, ifchange := range ifchanges {
fields = append(fields, recfile.Field{
Name: "Ifchange",
- Value: dep,
+ Value: ifchange,
})
}
}
errs <- runErr
return
}
- if err != nil {
- runErr.Err = err
- errs <- runErr
- return
- }
if !inode.Equals(inodePrev) {
runErr.Err = Err1WasTouched
errs <- runErr
goto Finish
}
} else {
- var hsh string
+ var hsh Hash
if hshPrev != "" {
_, err = fd.Seek(0, io.SeekStart)
if err != nil {
fdDepOpened = false
// 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{}{}
+ dep, err = depRead(tgt)
+ if err == nil {
+ 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)
}
}