Thanks a lot, but I tried to pass timestamp by 
"-X=runtime.buildtimestamp=xxxx" to linker, it fails with the same message.
I guess the timestamp makes the dependence packages always STALE, maybe I 
have to check logic of command "go list".

 

在 2017年12月16日星期六 UTC+8上午5:11:00,Ian Lance Taylor写道:
>
> On Fri, Dec 15, 2017 at 3:08 AM, Ally  Dale <vip...@gmail.com 
> <javascript:>> wrote: 
> > Hi all, 
> > I just need a function to report the timestamp when my app compiled. 
> > 
> > func main() { 
> > 
> > 
> >         unix := runtime.BuildTimestamp() 
> > 
> > 
> >         t := time.Unix(unix, 0) 
> > 
> > 
> >         println("hello world") 
> > 
> > 
> >         println("buildtimestamp:", unix) 
> > 
> > 
> >         println("buildtime     :", t.String()) 
> > 
> > 
> >         // Output: 
> > 
> > 
> >         // hello world 
> > 
> > 
> >         // buildtimestamp: 1513329454 
> > 
> > 
> >         // buildtime     : 2017-12-15 17:17:34 +0800 CST 
> > 
> > 
> > } 
> > 
> > 
> > 
> > [runtime.BuildTimestamp()](
> https://github.com/vipally/go/blob/ally_build_time/src/runtime/symtab.go#L399)
>  
>
> > use a variable defined in 
> > [runtime.firstmoduledata.buildtimestamp](
> https://github.com/vipally/go/blob/ally_build_time/src/runtime/symtab.go#L372)
>  
>
> > which will be written by 
> > [cmd/link](
> https://github.com/vipally/go/blob/ally_build_time/src/cmd/link/internal/ld/symtab.go#L562)
>  
>
> > 
> > My trouble is, if cmd/link use time.Now().Unix() to get unix timestamp, 
> it 
> > will make a new dependence of time for cmd/link. 
> > And this dependence will cause a STALE error when go_bootstrap building. 
> > go tool dist: unexpected stale targets reported by 
> > E:\go\pkg\tool\windows_amd64\go_bootstrap list -gcflags="" -ldflags="" 
> > for [cmd/asm cmd/cgo cmd/compile cmd/link runtime/internal/sys]: 
> >         STALE cmd/asm: stale dependency: runtime/internal/atomic 
> >         STALE cmd/cgo: stale dependency: runtime/internal/atomic 
> >         STALE cmd/compile: stale dependency: runtime/internal/atomic 
> >         STALE cmd/link: stale dependency: runtime/internal/atomic 
> >         STALE runtime/internal/sys: build ID mismatch 
> > 
> > 
> > So, my question is, if I cannot use time.Now().Unix() or runtime.now() 
> to 
> > get unix timestamp in cmd/link. How can I get unix timestamp in 
> > linker(cmd/link)? 
>
> Use something like -ldflags=-X=`VAR=date`.  The -X option is 
> documented at https://golang.org/cmd/link. 
>
> 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.

Reply via email to