fix balance check in server logic
[epoint] / pkg / deps.sh
1 #!/bin/sh
2
3 OUT="Make.deps"
4 TMP="Make.deps.tmp"
5
6 if [ -f $OUT ] && ! [ -w $OUT ]; then
7         echo "$0: $OUT is read-only; aborting." 1>&2
8         exit 1
9 fi
10
11 # Get list of directories from Makefile
12 dirs=$(make --no-print-directory echo-dirs)
13 dirpat=$(echo $dirs C | awk '{
14         for(i=1;i<=NF;i++){ 
15                 x=$i
16                 gsub("/", "\\/", x)
17                 printf("/^(epoint\\/%s)$/\n", x)
18         }
19 }')
20
21 for dir in $dirs; do (
22         cd $dir >/dev/null || exit 1
23
24         sources=$(sed -n 's/^[  ]*\([^  ]*\.go\)[       ]*\\*[  ]*$/\1/p' Makefile)
25         sources=$(echo $sources | sed 's/\$(GOOS)/'$GOOS'/g')
26         sources=$(echo $sources | sed 's/\$(GOARCH)/'$GOARCH'/g')
27         # /dev/null here means we get an empty dependency list if $sources is empty
28         # instead of listing every file in the directory.
29         sources=$(ls $sources /dev/null 2> /dev/null)  # remove .s, .c, etc.
30
31         deps=$(
32                 sed -n '/^import.*"/p; /^import[ \t]*(/,/^)/p' $sources /dev/null |
33                 cut -d '"' -f2 |
34                 awk "$dirpat" |
35                 grep -v "^$dir\$" |
36                 sed 's/epoint\///;s/$/.install/' |
37                 sort -u
38         )
39
40         echo $dir.install: $deps
41 ) done > $TMP
42
43 mv $TMP $OUT