mirror of https://github.com/golang/go.git
cmd/dist: rewrite mkdeps.bash to work on OS X
My version of bash doesn't know what 'declare -A' means. Change-Id: Icf6b0e60ebaea3feaa8661ec0423012f213b53e8 Reviewed-on: https://go-review.googlesource.com/17070 Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
4d9f68028a
commit
3ea668a0f2
|
|
@ -5,23 +5,26 @@
|
|||
|
||||
set -e
|
||||
|
||||
declare -A alldeps
|
||||
|
||||
# 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"
|
||||
|
||||
for goos in $gooslist; do
|
||||
for goarch in $goarchlist; do
|
||||
deps=$(GOOS=$goos GOARCH=$goarch go list -tags cmd_go_bootstrap -f '{{join .Deps "\n"}}' cmd/go | grep -v '^unsafe$')
|
||||
for dep in $deps cmd/go; do
|
||||
alldeps[$dep]="${alldeps[$dep]} $(GOOS=$goos GOARCH=$goarch go list -tags cmd_go_bootstrap -f '{{range .Deps}}{{if not (eq . "unsafe")}}{{print .}} {{end}}{{end}}' $dep)"
|
||||
done
|
||||
done
|
||||
done
|
||||
echo NOTE: errors about loading internal/syscall/windows are ok
|
||||
|
||||
export GOOS=windows
|
||||
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'
|
||||
|
|
@ -29,16 +32,16 @@ export GOOS=windows
|
|||
echo 'package main'
|
||||
echo
|
||||
echo 'var builddeps = map[string][]string{'
|
||||
|
||||
for dep in $(for dep in ${!alldeps[@]}; do echo $dep; done | grep -v '^cmd/go$' | sort) cmd/go; do
|
||||
echo -n '"'$dep'"': {
|
||||
for subdep in ${alldeps[$dep]}; do
|
||||
echo $subdep
|
||||
done | sort -u | while read subdep; do
|
||||
echo -n '"'$subdep'"',
|
||||
done
|
||||
echo },
|
||||
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
|
||||
|
|
|
|||
Loading…
Reference in New Issue