OSDN Git Service

feat(warder): add warder backbone (#181)
[bytom/vapor.git] / vendor / github.com / ugorji / go / codec / build.sh
1 #!/bin/bash
2
3 # Run all the different permutations of all the tests and other things
4 # This helps ensure that nothing gets broken.
5
6 _tests() {
7     local gover=$( go version | cut -f 3 -d ' ' )
8     # note that codecgen requires fastpath, so you cannot do "codecgen notfastpath"
9     local a=( "" "safe"  "notfastpath" "notfastpath safe" "codecgen" "codecgen safe" )
10     for i in "${a[@]}"
11     do
12         echo ">>>> TAGS: $i"
13         local i2=${i:-default}
14         case $gover in
15             go1.[0-6]*) go vet -printfuncs "errorf" "$@" &&
16                               go test ${zargs[*]} -vet off -tags "$i" "$@" ;;
17             *) go vet -printfuncs "errorf" "$@" &&
18                      go test ${zargs[*]} -vet off -tags "alltests $i" -run "Suite" -coverprofile "${i2// /-}.cov.out" "$@" ;;
19         esac
20         if [[ "$?" != 0 ]]; then return 1; fi 
21     done
22     echo "++++++++ TEST SUITES ALL PASSED ++++++++"
23 }
24
25
26 # is a generation needed?
27 _ng() {
28     local a="$1"
29     if [[ ! -e "$a" ]]; then echo 1; return; fi 
30     for i in `ls -1 *.go.tmpl gen.go values_test.go`
31     do
32         if [[ "$a" -ot "$i" ]]; then echo 1; return; fi 
33     done
34 }
35
36 _prependbt() {
37     cat > ${2} <<EOF
38 // +build generated
39
40 EOF
41     cat ${1} >> ${2}
42     rm -f ${1}
43 }
44
45 # _build generates fast-path.go and gen-helper.go.
46 _build() {
47     if ! [[ "${zforce}" || $(_ng "fast-path.generated.go") || $(_ng "gen-helper.generated.go") || $(_ng "gen.generated.go") ]]; then return 0; fi 
48     
49     if [ "${zbak}" ]; then
50         _zts=`date '+%m%d%Y_%H%M%S'`
51         _gg=".generated.go"
52         [ -e "gen-helper${_gg}" ] && mv gen-helper${_gg} gen-helper${_gg}__${_zts}.bak
53         [ -e "fast-path${_gg}" ] && mv fast-path${_gg} fast-path${_gg}__${_zts}.bak
54         [ -e "gen${_gg}" ] && mv gen${_gg} gen${_gg}__${_zts}.bak
55     fi 
56     rm -f gen-helper.generated.go fast-path.generated.go gen.generated.go \
57        *safe.generated.go *_generated_test.go *.generated_ffjson_expose.go 
58
59     cat > gen.generated.go <<EOF
60 // +build codecgen.exec
61
62 // Copyright (c) 2012-2015 Ugorji Nwoke. All rights reserved.
63 // Use of this source code is governed by a MIT license found in the LICENSE file.
64
65 package codec
66
67 // DO NOT EDIT. THIS FILE IS AUTO-GENERATED FROM gen-dec-(map|array).go.tmpl
68
69 const genDecMapTmpl = \`
70 EOF
71     cat >> gen.generated.go < gen-dec-map.go.tmpl
72     cat >> gen.generated.go <<EOF
73 \`
74
75 const genDecListTmpl = \`
76 EOF
77     cat >> gen.generated.go < gen-dec-array.go.tmpl
78     cat >> gen.generated.go <<EOF
79 \`
80
81 const genEncChanTmpl = \`
82 EOF
83     cat >> gen.generated.go < gen-enc-chan.go.tmpl
84     cat >> gen.generated.go <<EOF
85 \`
86 EOF
87     cat > gen-from-tmpl.codec.generated.go <<EOF
88 package codec 
89 import "io"
90 func GenInternalGoFile(r io.Reader, w io.Writer) error {
91 return genInternalGoFile(r, w)
92 }
93 EOF
94     cat > gen-from-tmpl.generated.go <<EOF
95 //+build ignore
96
97 package main
98
99 import "${zpkg}"
100 import "os"
101
102 func run(fnameIn, fnameOut string) {
103 println("____ " + fnameIn + " --> " + fnameOut + " ______")
104 fin, err := os.Open(fnameIn)
105 if err != nil { panic(err) }
106 defer fin.Close()
107 fout, err := os.Create(fnameOut)
108 if err != nil { panic(err) }
109 defer fout.Close()
110 err = codec.GenInternalGoFile(fin, fout)
111 if err != nil { panic(err) }
112 }
113
114 func main() {
115 run("fast-path.go.tmpl", "fast-path.generated.go")
116 run("gen-helper.go.tmpl", "gen-helper.generated.go")
117 run("mammoth-test.go.tmpl", "mammoth_generated_test.go")
118 run("mammoth2-test.go.tmpl", "mammoth2_generated_test.go")
119 }
120 EOF
121
122     # explicitly return 0 if this passes, else return 1
123     go run -tags "notfastpath safe codecgen.exec" gen-from-tmpl.generated.go &&
124         rm -f gen-from-tmpl.*generated.go &&
125         return 0
126     return 1
127 }
128
129 _codegenerators() {
130     if ! [[ $zforce ||
131                 $(_ng "values_codecgen${zsfx}") ]]; then return 0; fi
132
133     # Note: ensure you run the codecgen for this codebase  (using $zgobase/bin/codecgen)
134     local c9="codecgen-scratch.go"
135     true &&
136         echo "codecgen ... " &&
137         $zgobase/bin/codecgen -rt codecgen -t 'codecgen generated' -o values_codecgen${zsfx} -d 19780 $zfin $zfin2 &&
138         cp mammoth2_generated_test.go $c9 &&
139         $zgobase/bin/codecgen -t '!notfastpath' -o mammoth2_codecgen${zsfx} -d 19781 mammoth2_generated_test.go &&
140         rm -f $c9 &&
141         echo "generators done!" 
142 }
143
144 _prebuild() {
145     echo "prebuild: zforce: $zforce , zexternal: $zexternal"
146     zmydir=`pwd`
147     zfin="test_values.generated.go"
148     zfin2="test_values_flex.generated.go"
149     zsfx="_generated_test.go"
150     # zpkg="ugorji.net/codec"
151     zpkg=${zmydir##*/src/}
152     zgobase=${zmydir%%/src/*}
153     # rm -f *_generated_test.go 
154     rm -f codecgen-*.go &&
155         _build &&
156         cp $zmydir/values_test.go $zmydir/$zfin &&
157         cp $zmydir/values_flex_test.go $zmydir/$zfin2 &&
158         _codegenerators &&
159         if [[ "$(type -t _codegenerators_external )" = "function" ]]; then _codegenerators_external ; fi &&
160         if [[ $zforce ]]; then go install ${zargs[*]} .; fi &&
161         echo "prebuild done successfully"
162     rm -f $zmydir/$zfin $zmydir/$zfin2 
163 }
164
165 _make() {
166     zforce=1
167     zexternal=1
168     ( cd codecgen && go install ${zargs[*]} . ) && _prebuild && go install ${zargs[*]} .
169     unset zforce zexternal
170 }
171
172 _clean() {
173     rm -f gen-from-tmpl.*generated.go \
174        codecgen-*.go \
175        test_values.generated.go test_values_flex.generated.go
176 }
177
178 _usage() {
179     cat <<EOF
180 primary usage: $0 
181     -[tmpfxnld] for [tests, make, prebuild (force) (external), inlining diagnostics, mid-stack inlining, race detector]
182 EOF
183     if [[ "$(type -t _usage_run)" = "function" ]]; then _usage_run ; fi
184 }
185
186 _main() {
187     if [[ -z "$1" ]]; then _usage; return 1; fi
188     local x
189     unset zforce zexternal
190     zargs=()
191     while getopts ":ctbqmnrgupfxlzd" flag
192     do
193         case "x$flag" in
194             'xf') zforce=1 ;;
195             'xx') zexternal=1 ;;
196             'xl') zargs+=("-gcflags"); zargs+=("-l=4") ;;
197             'xn') zargs+=("-gcflags"); zargs+=("-m") ;;
198             'xd') zargs+=("-race") ;;
199             x\?) _usage; return 1 ;;
200             *) x=$flag ;;
201         esac
202     done
203     shift $((OPTIND-1))
204     case "x$x" in
205         'xt') _tests "$@" ;;
206         'xq') _benchquick "$@" ;;
207         'xb') _bench "$@" ;;
208         'xm') _make "$@" ;;
209         'xr') _release "$@" ;;
210         'xg') _go ;;
211         'xu') _githubupdate ;;
212         'xp') _prebuild "$@" ;;
213         'xc') _clean "$@" ;;
214         'xz') _analyze "$@" ;;
215     esac
216     unset zforce zexternal 
217 }
218
219 [ "." = `dirname $0` ] && _main "$@"
220