| #!/bin/bash | |
| # Copyright 2015 The Go Authors. All rights reserved. | |
| # Use of this source code is governed by a BSD-style | |
| # license that can be found in the LICENSE file. | |
| set -e | |
| # We need to test enough GOOS/GOARCH combinations to pick up all the | |
| # package dependencies. | |
| gooslist="windows linux darwin solaris" | |
| goarchlist="386 amd64 arm arm64 ppc64" | |
| echo NOTE: errors about loading internal/syscall/windows are ok | |
| deps_of() { | |
| for goos in $gooslist | |
| do | |
| for goarch in $goarchlist | |
| do | |
| GOOS=$goos GOARCH=$goarch go list -tags cmd_go_bootstrap -f '{{range .Deps}}{{$.ImportPath}} {{.}} | |
| {{end}}' $* | |
| done | |
| done | sort -u | grep . | grep -v ' unsafe$' | |
| } | |
| all="$(deps_of cmd/go | awk '{print $2}') cmd/go" | |
| deps_of $all >tmp.all.deps | |
| ( | |
| echo '// generated by mkdeps.bash' | |
| echo | |
| echo 'package main' | |
| echo | |
| echo 'var builddeps = map[string][]string{' | |
| for pkg in $all | |
| do | |
| echo -n "\"$pkg\": {" | |
| for dep in $(awk -v pkg=$pkg '$1==pkg {print $2}' tmp.all.deps) | |
| do | |
| echo -n "\"$dep\"," | |
| done | |
| echo '},' | |
| done | |
| echo '}' | |
| ) |gofmt >deps.go | |
| rm -f tmp.all.deps |