| #!/bin/bash | |
| set -e | |
| # Use current path for building and installing TiDB. | |
| TIDB_PATH=`pwd` | |
| echo "building TiDB components in $TIDB_PATH" | |
| # All the binaries are installed in the `bin` directory. | |
| mkdir -p $TIDB_PATH/bin | |
| # Assume we install go in /usr/local/go | |
| export PATH=$PATH:/usr/local/go/bin | |
| echo "checking if go is installed" | |
| # Go is required | |
| go version | |
| # The output might be like: go version go1.6 darwin/amd64 | |
| echo "checking if rust is installed" | |
| # Rust nightly is required | |
| rustc -V | |
| # The output might be like: rustc 1.12.0-nightly (7ad125c4e 2016-07-11) | |
| # Set the GOPATH correctly. | |
| export GOPATH=$TIDB_PATH/deps/go | |
| # Build TiDB | |
| echo "building TiDB..." | |
| rm -rf $GOPATH/src/github.com/pingcap/tidb | |
| git clone --depth=1 https://github.com/pingcap/tidb.git $GOPATH/src/github.com/pingcap/tidb | |
| cd $GOPATH/src/github.com/pingcap/tidb | |
| make | |
| cp -f ./bin/tidb-server $TIDB_PATH/bin | |
| cd $TIDB_PATH | |
| echo "TiDB is built" | |
| # Build PD | |
| echo "building PD..." | |
| rm -rf $GOPATH/src/github.com/pingcap/pd | |
| git clone --depth=1 https://github.com/pingcap/pd.git $GOPATH/src/github.com/pingcap/pd | |
| cd $GOPATH/src/github.com/pingcap/pd | |
| make | |
| cp -f ./bin/pd-server $TIDB_PATH/bin | |
| cd $TIDB_PATH | |
| echo "PD is built" | |
| # Build TiKV | |
| echo "building TiKV..." | |
| rm -rf $TIDB_PATH/deps/tikv | |
| git clone --depth=1 https://github.com/pingcap/tikv.git $TIDB_PATH/deps/tikv | |
| cd $TIDB_PATH/deps/tikv | |
| make release | |
| cp -f ./bin/tikv-server $TIDB_PATH/bin | |
| cd $TIDB_PATH | |
| echo "TiKV is built" |