}
type Dep struct {
- stamp Hash
ifcreates []*Tgt
ifchanges []*Ifchange
+ stamp Hash
build uuid.UUID
always bool
}
func stamp(w io.Writer, fdDepName string, hsh Hash) (err error) {
tracef(CDebug, "stamp: %s <- %s", fdDepName, hsh)
_, err = io.Copy(w, bytes.NewBuffer(chunkWrite(append(
- []byte{DepTypeStamp}, []byte(hsh)...,
+ []byte{DepTypeStamp}, hsh[:]...,
))))
return
}
func fileHash(fd io.Reader) (Hash, error) {
h := blake3.New(HashLen, nil)
if _, err := io.Copy(h, bufio.NewReader(fd)); err != nil {
- return "", err
+ return HashNull, err
}
return Hash(h.Sum(nil)), nil
}
if isDir {
return nil
}
- if hsh == "" {
+ if hsh == HashNull {
hsh, err = fileHash(fd)
if err != nil {
return ErrLine(err)
_, err = io.Copy(w, bytes.NewBuffer(chunkWrite(bytes.Join([][]byte{
{DepTypeIfchange},
inode[:],
- []byte(hsh),
+ hsh[:],
[]byte(tgt.RelTo(cwd)),
}, nil))))
return
}
tgtDir := path.Join(cwd, DirPrefix)
if _, errStat := os.Stat(tgt.a); errStat == nil {
- err = ErrLine(depWrite(fdDepW, fdDep.Name(), tgtDir, tgt, ""))
+ err = ErrLine(depWrite(fdDepW, fdDep.Name(), tgtDir, tgt, HashNull))
} else {
tgtRel := tgt.RelTo(tgtDir)
err = ErrLine(depWriteNonex(fdDepW, fdDep.Name(), tgtRel))
}
}
- if err = depWrite(fdDepW, fdDep.Name(), tgtH, doFile, ""); err != nil {
+ if err = depWrite(fdDepW, fdDep.Name(), tgtH, doFile, HashNull); err != nil {
cleanup()
return TgtError{tgt, ErrLine(err)}
}
}
} else {
var hsh Hash
- if hshPrev != "" {
+ if hshPrev != HashNull {
_, err = fd.Seek(0, io.SeekStart)
if err != nil {
err = ErrLine(err)