X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=dep.go;h=d819440a18b57909e05e387941030fc84482aa95;hb=19b13ea1334d377dd9c6a36ea70c9141b8fd447d;hp=7c4e35aa700a4edf7c52dcb88b19e344321d3b90;hpb=0030b3e73152bf9d9ad3e435fa42e607c7865321;p=goredo.git diff --git a/dep.go b/dep.go index 7c4e35a..d819440 100644 --- a/dep.go +++ b/dep.go @@ -86,7 +86,7 @@ func fileHash(fd *os.File) (string, error) { return hex.EncodeToString(h.Sum(nil)), nil } -func depWrite(fdDep *os.File, cwd, tgt string) error { +func depWrite(fdDep *os.File, cwd, tgt, hsh string) error { tracef(CDebug, "ifchange: %s <- %s", fdDep.Name(), tgt) fd, err := os.Open(path.Join(cwd, tgt)) if err != nil { @@ -100,13 +100,15 @@ func depWrite(fdDep *os.File, cwd, tgt string) error { if fi.IsDir() { return nil } - inode, err := inodeFromFile(fd) + inode, err := inodeFromFileByFd(fd) if err != nil { return err } - hsh, err := fileHash(fd) - if err != nil { - return err + if hsh == "" { + hsh, err = fileHash(fd) + if err != nil { + return err + } } fields := []recfile.Field{ {Name: "Type", Value: DepTypeIfchange}, @@ -137,7 +139,7 @@ func depsWrite(fdDep *os.File, tgts []string) error { panic(err) } if _, errStat := os.Stat(tgt); errStat == nil { - err = depWrite(fdDep, tgtDir, tgtRel) + err = depWrite(fdDep, tgtDir, tgtRel, "") } else { tracef(CDebug, "ifchange: %s <- %s (non-existing)", fdDep.Name(), tgtRel) fields := []recfile.Field{