Commit 3ea668a0 authored by Russ Cox's avatar Russ Cox

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/17070Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
parent 4d9f6802
...@@ -5,23 +5,26 @@ ...@@ -5,23 +5,26 @@
set -e set -e
declare -A alldeps
# We need to test enough GOOS/GOARCH combinations to pick up all the # We need to test enough GOOS/GOARCH combinations to pick up all the
# package dependencies. # package dependencies.
gooslist="windows linux darwin solaris" gooslist="windows linux darwin solaris"
goarchlist="386 amd64 arm arm64 ppc64" goarchlist="386 amd64 arm arm64 ppc64"
for goos in $gooslist; do echo NOTE: errors about loading internal/syscall/windows are ok
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$') deps_of() {
for dep in $deps cmd/go; do for goos in $gooslist
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)" do
done for goarch in $goarchlist
done do
done 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' echo '// generated by mkdeps.bash'
...@@ -29,16 +32,16 @@ export GOOS=windows ...@@ -29,16 +32,16 @@ export GOOS=windows
echo 'package main' echo 'package main'
echo echo
echo 'var builddeps = map[string][]string{' echo 'var builddeps = map[string][]string{'
for pkg in $all
for dep in $(for dep in ${!alldeps[@]}; do echo $dep; done | grep -v '^cmd/go$' | sort) cmd/go; do do
echo -n '"'$dep'"': { echo -n "\"$pkg\": {"
for subdep in ${alldeps[$dep]}; do for dep in $(awk -v pkg=$pkg '$1==pkg {print $2}' tmp.all.deps)
echo $subdep do
done | sort -u | while read subdep; do echo -n "\"$dep\","
echo -n '"'$subdep'"', done
done echo '},'
echo },
done done
echo '}' echo '}'
) |gofmt >deps.go ) |gofmt >deps.go
rm -f tmp.all.deps
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment