| #!/usr/bin/env bash | |
| # Copyright 2009 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. | |
| eval $(gomake --no-print-directory -f ../Make.inc go-env) | |
| OUT="Make.deps" | |
| TMP="Make.deps.tmp" | |
| if [ -f $OUT ] && ! [ -w $OUT ]; then | |
| echo "$0: $OUT is read-only; aborting." 1>&2 | |
| exit 1 | |
| fi | |
| # Get list of directories from Makefile | |
| dirs=$(gomake --no-print-directory echo-dirs) | |
| dirpat=$(echo $dirs C | awk '{ | |
| for(i=1;i<=NF;i++){ | |
| x=$i | |
| gsub("/", "\\/", x) | |
| printf("/^(%s)$/\n", x) | |
| } | |
| }') | |
| # Append old names of renamed packages. TODO: clean up after renaming. | |
| dirpat="$dirpat | |
| /^(asn1)$/ | |
| /^(big)$/ | |
| /^(cmath)$/ | |
| /^(csv)$/ | |
| /^(exec)$/ | |
| /^(exp\/template\/html)$/ | |
| /^(gob)$/ | |
| /^(http)/ | |
| /^(http\/cgi)$/ | |
| /^(http\/fcgi)$/ | |
| /^(http\/httptest)$/ | |
| /^(http\/pprof)$/ | |
| /^(json)$/ | |
| /^(mail)$/ | |
| /^(rand)$/ | |
| /^(rpc)$/ | |
| /^(scanner)$/ | |
| /^(smtp)$/ | |
| /^(syslog)$/ | |
| /^(tabwriter)$/ | |
| /^(url)$/ | |
| /^(template)$/ | |
| /^(template\/parse)$/ | |
| /^(utf16)$/ | |
| /^(utf8)$/ | |
| /^(xml)$/ | |
| " | |
| for dir in $dirs; do ( | |
| cd $dir >/dev/null || exit 1 | |
| sources=$(sed -n 's/^[ ]*\([^ ]*\.go\)[ ]*\\*[ ]*$/\1/p' Makefile) | |
| sources=$(echo $sources | sed 's/\$(GOOS)/'$GOOS'/g') | |
| sources=$(echo $sources | sed 's/\$(GOARCH)/'$GOARCH'/g') | |
| # /dev/null here means we get an empty dependency list if $sources is empty | |
| # instead of listing every file in the directory. | |
| sources=$(ls $sources /dev/null 2> /dev/null) # remove .s, .c, etc. | |
| deps=$( | |
| sed -n '/^import.*"/p; /^import[ \t]*(/,/^)/p' $sources /dev/null | | |
| cut -d '"' -f2 | | |
| awk "$dirpat" | | |
| grep -v "^$dir\$" | | |
| sed 's/$/.install/' | | |
| # TODO: rename the dependencies for renamed directories. TODO: clean up after renaming. | |
| sed 's;^asn1.install$;encoding/asn1.install; | |
| s;^big.install$;math/big.install; | |
| s;^cmath.install$;math/cmplx.install; | |
| s;^csv.install$;encoding/csv.install; | |
| s;^exec.install$;os/exec.install; | |
| s;^exp/template/html.install$;html/template.install; | |
| s;^gob.install$;encoding/gob.install; | |
| s;^http.install$;net/http.install; | |
| s;^http/cgi.install$;net/http/cgi.install; | |
| s;^http/fcgi.install$;net/http/fcgi.install; | |
| s;^http/httptest.install$;net/http/httptest.install; | |
| s;^http/pprof.install$;net/http/pprof.install; | |
| s;^json.install$;encoding/json.install; | |
| s;^mail.install$;net/mail.install; | |
| s;^rpc.install$;net/rpc.install; | |
| s;^rpc/jsonrpc.install$;net/rpc/jsonrpc.install; | |
| s;^scanner.install$;text/scanner.install; | |
| s;^smtp.install$;net/smtp.install; | |
| s;^syslog.install$;log/syslog.install; | |
| s;^tabwriter.install$;text/tabwriter.install; | |
| s;^template.install$;text/template.install; | |
| s;^template/parse.install$;text/template/parse.install; | |
| s;^rand.install$;math/rand.install; | |
| s;^url.install$;net/url.install; | |
| s;^utf16.install$;unicode/utf16.install; | |
| s;^utf8.install$;unicode/utf8.install; | |
| s;^xml.install$;encoding/xml.install;' | | |
| # TODO: end of renamings. | |
| sed 's;^C\.install;runtime/cgo.install;' | | |
| sort -u | |
| ) | |
| echo $dir.install: $deps | |
| ) done > $TMP | |
| mv $TMP $OUT | |
| if (egrep -v '^(exp|old)/' $OUT | egrep -q " (exp|old)/"); then | |
| echo "$0: $OUT contains dependencies to exp or old packages" | |
| exit 1 | |
| fi |