| <!--{ | |
| "Title": "Go Reproducible Build Report", | |
| "layout": "article", | |
| "template": true | |
| }--> | |
| <style> | |
| details { margin-left: 2em; } | |
| pre { margin-left: 2em; } | |
| .time { color: #777; } | |
| </style> | |
| <p> | |
| As of Go 1.21, Go's binary toolchain downloads served by <a href="/dl/">go.dev/dl/</a> can be | |
| reproduced and verified by anyone, on any platform, | |
| using <a href="https://pkg.go.dev/golang.org/x/build/cmd/gorebuild">golang.org/x/build/cmd/gorebuild</a>. | |
| For more details, see the blog post | |
| “<a href="/blog/rebuild">Perfectly Reproducible, Verified Go Toolchains</a>.” | |
| </p> | |
| <p> | |
| This page is updated daily with the results of running <code>gorebuild</code> in an Ubuntu VM, | |
| using this script: | |
| </p> | |
| <pre> | |
| apt-get update && | |
| apt-get -y install software-properties-common && | |
| add-apt-repository universe && | |
| apt-get -y install golang-go git msitools && | |
| go run golang.org/x/build/cmd/gorebuild@latest -p=4 | |
| </pre> | |
| <p> | |
| The installation of <code>git</code> enables <code>gorebuild</code> | |
| to fetch Go source code from its canonical Git repository, and | |
| the installation of <code>msitools</code> lets <code>gorebuild</code> | |
| check the contents of the Windows MSI installation file. | |
| The <code>-p=4</code> means to run up to four builds in parallel. | |
| </p> | |
| {{define "marker"}}<span style="marker">{{template "markersymbol" .}}</span>{{end}} | |
| {{define "markersymbol"}} | |
| {{- if eq . "PASS" -}} ✅ | |
| {{- else if eq . "SKIP" -}} — | |
| {{- else -}} ❌ | |
| {{- end -}} | |
| {{end}} | |
| {{define "log"}} | |
| <pre> | |
| {{range .Messages}}<span class="time">{{(rfc3339 .Time).UTC.Format "15:04:05"}}</span> {{.Text}} | |
| {{end}} | |
| </pre> | |
| {{end}} | |
| {{define "autoopen"}} {{if not (eq . "PASS")}} open {{end}} {{end}} | |
| {{$Report := json gorebuild}} | |
| {{with $Report}} | |
| Gorebuild version {{.Version}}.<br> | |
| Built with Go version {{.GoVersion}}, {{.GOOS}}-{{.GOARCH}}.<br> | |
| <br> | |
| Rebuild started at {{(rfc3339 .Start).UTC.Format "2006-01-02 15:04:05"}} UTC.<br> | |
| Rebuild finished at {{(rfc3339 .End).UTC.Format "2006-01-02 15:04:05"}} UTC.<br> | |
| Elapsed time: {{((rfc3339 .End).Sub (rfc3339 .Start)).Round 1e9}}. | |
| <h2 id="releases">Releases</h2> | |
| {{range .Releases}} | |
| <details {{template "autoopen" .Log.Status}} > | |
| <summary><b id="{{.Version}}">{{template "marker" .Log.Status}} {{.Version}}</b></summary> | |
| <details> | |
| <summary>Log</summary> | |
| {{template "log" .Log}} | |
| </details> | |
| {{range .Files}} | |
| <details {{template "autoopen" .Log.Status}}> | |
| <summary><b id="{{.Name}}">{{template "marker" .Log.Status}} {{.Name}}</b></summary> | |
| {{template "log" .Log}} | |
| </details> | |
| {{end}} | |
| </details> | |
| {{end}} | |
| <h2 id="bootstraps">Bootstraps</h2> | |
| {{range .Bootstraps}} | |
| <details> | |
| <summary><b>Bootstrap {{.Version}}</b></summary> | |
| {{template "log" .Log}} | |
| </details> | |
| {{end}} | |
| {{end}} |