github.com/MangoDowner/go-gm@v0.0.0-20180818020936-8baa2bd4408c/src/cmd/dist/mkdeps.bash (about)

     1  #!/bin/bash
     2  # Copyright 2015 The Go Authors. All rights reserved.
     3  # Use of this source code is governed by a BSD-style
     4  # license that can be found in the LICENSE file.
     5  
     6  set -e
     7  
     8  # We need to test enough GOOS/GOARCH combinations to pick up all the
     9  # package dependencies.
    10  gooslist="windows linux darwin solaris"
    11  goarchlist="386 amd64 arm arm64 ppc64"
    12  
    13  echo NOTE: errors about loading internal/syscall/windows are ok
    14  
    15  deps_of() {
    16  	for goos in $gooslist
    17  	do
    18  		for goarch in $goarchlist
    19  		do
    20  			GOOS=$goos GOARCH=$goarch go list -tags cmd_go_bootstrap -f '{{range .Deps}}{{$.ImportPath}} {{.}}
    21  {{end}}' $*
    22  		done
    23  	done | sort -u | grep . | grep -v ' unsafe$'
    24  }
    25  
    26  all="$(deps_of cmd/go | awk '{print $2}') cmd/go"
    27  deps_of $all >tmp.all.deps
    28  
    29  (
    30  	echo '// generated by mkdeps.bash'
    31  	echo
    32  	echo 'package main'
    33  	echo
    34  	echo 'var builddeps = map[string][]string{'
    35  	for pkg in $all
    36  	do
    37  		echo -n "\"$pkg\": {"
    38  		for dep in $(awk -v pkg=$pkg '$1==pkg {print $2}' tmp.all.deps)
    39  		do
    40  			echo -n "\"$dep\","
    41  		done
    42  		echo '},'
    43  	done
    44  	echo '}'
    45  ) |gofmt >deps.go
    46  
    47  rm -f tmp.all.deps