I don't grok that reasoning - can you expand on it? Assume for a second that it did NOT update mtime if the result did not change. I can be confident that same mtime == no change, right? It doesn't imply that different mtime == something change, but I think that's OK (for my use, maybe I am limited in my imagination). Even
Does it really matter if some corner cases result in spurious updates? On Fri, Jan 25, 2019 at 3:02 PM Ian Lance Taylor <i...@golang.org> wrote: > > On Fri, Jan 25, 2019 at 1:07 PM 'Tim Hockin' via golang-nuts > <golang-nuts@googlegroups.com> wrote: > > > > Example: > > > > ``` > > $ which git-sync > > > > $ go install -installsuffix "static" ./cmd/git-sync/ > > > > $ ls -l --full-time `which git-sync`; md5sum `which git-sync` > > -rwxr-xr-x 1 thockin primarygroup 13956902 2019-01-25 > > 13:04:40.758632955 -0800 > > /usr/local/google/home/thockin/src/go/bin/git-sync > > 1200f479c8ba86f70f0e4a885ecdd5f2 > > /usr/local/google/home/thockin/src/go/bin/git-sync > > > > $ go install -installsuffix "static" ./cmd/git-sync/ > > > > $ ls -l --full-time `which git-sync`; md5sum `which git-sync` > > -rwxr-xr-x 1 thockin primarygroup 13956902 2019-01-25 > > 13:04:53.817700697 -0800 > > /usr/local/google/home/thockin/src/go/bin/git-sync > > 1200f479c8ba86f70f0e4a885ecdd5f2 > > /usr/local/google/home/thockin/src/go/bin/git-sync > > ``` > > > > Is the desired behavior or just a side-effect? Is there any way to > > defeat it? Would a patch for this be shot down? > > This is intended behavior. The comment in the code > (https://golang.org/src/cmd/go/internal/work/exec.go) is > > // Whether we're smart enough to avoid a complete rebuild > // depends on exactly what the staleness and rebuild algorithms > // are, as well as potentially the state of the Go build cache. > // We don't really want users to be able to infer (or worse start depending > on) > // those details from whether the modification time changes during > // "go install", so do a best-effort update of the file times to make it > // look like we rewrote a.Target even if we did not. Updating the mtime > // may also help other mtime-based systems that depend on our > // previous mtime updates that happened more often. > // This is still not perfect - we ignore the error result, and if the file was > // unwritable for some reason then pretending to have written it is also > // confusing - but it's probably better than not doing the mtime update. > // > // But don't do that for the special case where building an executable > // with -linkshared implicitly installs all its dependent libraries. > // We want to hide that awful detail as much as possible, so don't > // advertise it by touching the mtimes (usually the libraries are up > // to date). > > Ian -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.