return TgtError{tgtOrig, err}
}
+ shCtx := fmt.Sprintf("sh: %s: cwd:%s", tgtOrig, cwd)
+ jsToken := jsAcquire(shCtx)
+ jsNeedsRelease := true
+ defer func() {
+ if jsNeedsRelease {
+ jsRelease(shCtx, jsToken)
+ }
+ }()
+
// Acquire lock
fdLock, err := os.OpenFile(
path.Join(redoDir, tgt+LockSuffix),
path.Join(dirPrefix, basename),
tmpPathRel,
)
+ shCtx = fmt.Sprintf(
+ "sh: %s: %s %s cwd:%s dirprefix:%s",
+ tgtOrig, cmdName, args, cwd, dirPrefix,
+ )
cmd := exec.Command(cmdName, args...)
cmd.Dir = cwd
return TgtError{tgtOrig, err}
}
}
- shCtx := fmt.Sprintf(
- "sh: %s: %s %s cwd:%s dirprefix:%s",
- tgtOrig, cmdName, args, cwd, dirPrefix,
- )
tracef(CDebug, "%s", shCtx)
+ jsNeedsRelease = false
Jobs.Add(1)
go func() {
- jsToken := jsAcquire(shCtx)
if JSR == nil {
// infinite jobs
cmd.Env = append(cmd.Env, fmt.Sprintf("%s=NO", EnvJobs))
}
}
+ defer jsRelease(shCtx, jsToken)
+
var finished time.Time
var exitErr *exec.ExitError
started := time.Now()
cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%s", EnvDepCwd, cwd))
defer func() {
- jsRelease(shCtx, jsToken)
fdDep.Close()
fdStdout.Close()
if fdStderr != nil {