]> Cypherpunks.ru repositories - goredo.git/blobdiff - ood.go
Download link for 1.16.0 release
[goredo.git] / ood.go
diff --git a/ood.go b/ood.go
index 533ef46ea2f64d6dc6de0b3797ec4f2139a12381..9dfed348a1637c88b76419b80dda1a552a9c4546 100644 (file)
--- a/ood.go
+++ b/ood.go
@@ -23,6 +23,7 @@ import (
        "errors"
        "fmt"
        "io"
+       "log"
        "os"
        "path"
        "path/filepath"
@@ -109,6 +110,10 @@ func isOOD(cwd, tgtOrig string, level int, seen map[string]struct{}) (bool, erro
                trace(CDebug, "ood: %s%s -> already built", indent, tgtOrig)
                return false, nil
        }
+       if _, err := os.Stat(path.Join(cwd, tgt)); err != nil && os.IsNotExist(err) {
+               trace(CDebug, "ood: %s%s -> non-existent", indent, tgtOrig)
+               return true, nil
+       }
        ood := false
 
        for _, dep := range depInfo.ifcreates {
@@ -223,13 +228,13 @@ func isOODWithTrace(
        }
 RecordOODTgt:
        if err = unix.Flock(int(FdOODTgtsLock.Fd()), unix.LOCK_EX); err != nil {
-               panic(err)
+               log.Fatalln(err)
        }
        if _, err = FdOODTgts.Seek(0, io.SeekEnd); err != nil {
-               panic(err)
+               log.Fatalln(err)
        }
        if _, err := FdOODTgts.WriteString(p + "\x00"); err != nil {
-               panic(err)
+               log.Fatalln(err)
        }
        unix.Flock(int(FdOODTgtsLock.Fd()), unix.LOCK_UN)
        return true, nil
@@ -237,10 +242,10 @@ RecordOODTgt:
 
 func oodTgtsClear() {
        if err := unix.Flock(int(FdOODTgtsLock.Fd()), unix.LOCK_EX); err != nil {
-               panic(err)
+               log.Fatalln(err)
        }
        if err := FdOODTgts.Truncate(0); err != nil {
-               panic(err)
+               log.Fatalln(err)
        }
        unix.Flock(int(FdOODTgtsLock.Fd()), unix.LOCK_UN)
 }