From 3ea668a0f2dc692213ec79adad382559a15eb889 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Thu, 19 Nov 2015 14:43:27 -0500 Subject: [PATCH] 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 --- src/cmd/dist/mkdeps.bash | 45 +++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/src/cmd/dist/mkdeps.bash b/src/cmd/dist/mkdeps.bash index 78572860ea..71d3c371e4 100755 --- a/src/cmd/dist/mkdeps.bash +++ b/src/cmd/dist/mkdeps.bash @@ -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 + +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$' +} -export GOOS=windows +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 -- 2.48.1