"os"
"os/exec"
"path"
- "path/filepath"
"strconv"
"strings"
"sync"
log.Fatal(err)
}
}
- var depInfo *DepInfo
- fdDep, err := os.Open(path.Join(redoDir, tgt+DepSuffix))
+ build, err := depReadBuild(path.Join(redoDir, tgt+DepSuffix))
if err != nil {
- if os.IsNotExist(err) {
+ if errors.Is(err, fs.ErrNotExist) {
err = errors.New("was not built: no .rec")
}
goto Finish
}
- defer fdDep.Close()
- depInfo, err = depRead(fdDep)
- if err != nil {
- goto Finish
- }
- if depInfo.build != BuildUUID {
+ if build != BuildUUID {
err = errors.New("was not built: build differs")
}
Finish:
// Check if it was already built in parallel
if !forced {
- if fdDep, err := os.Open(path.Join(redoDir, tgt+DepSuffix)); err == nil {
- depInfo, err := depRead(fdDep)
- fdDep.Close()
- if err == nil && depInfo.build == BuildUUID {
- lockRelease()
- errs <- nil
- return nil
- }
+ if build, err := depReadBuild(path.Join(redoDir, tgt+DepSuffix)); err == nil && build == BuildUUID {
+ lockRelease()
+ errs <- nil
+ return nil
}
}
stdoutPath := fdStdout.Name()
fdStdout.Close()
tmpPath := stdoutPath + ".3" // and for $3
- tmpPathRel, err := filepath.Rel(cwd, tmpPath)
- if err != nil {
- panic(err)
- }
+ tmpPathRel := mustRel(cwd, tmpPath)
args = append(
args,
path.Join(dirPrefix, tgt),
return
}
tmpExists = true
- } else if !os.IsNotExist(err) {
+ } else if !errors.Is(err, fs.ErrNotExist) {
runErr.Err = ErrLine(err)
errs <- runErr
return