| #!/bin/bash |
| |
| # Copyright 2015 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. |
| |
| # Run this script to update the packages ./exact and ./types |
| # in the $GOROOT/src/go directory. They are vendored from the |
| # original sources in x/tools. Imports are renamed as needed. |
| # |
| # Delete this script once go/exact and go/types don't exist anymore in x/tools. |
| # |
| # NOTE(adonovan): the standard packages have intentionally diverged |
| # from x/tools, so this script is a unlikely to be useful. Upstream |
| # changes should be cherry-picked in to the standard library. |
| |
| set -e |
| |
| ### Safety first. |
| if [ ! -d "$GOPATH" ]; then |
| echo 2>&1 '$GOPATH must be set.' |
| exit 1 |
| fi |
| if [ ! -d "$GOROOT" ]; then |
| echo 2>&1 '$GOROOT must be set.' |
| exit 1 |
| fi |
| |
| GODIR=$GOROOT/src/go |
| |
| function vendor() ( |
| SRCDIR=$GOPATH/src/golang.org/x/tools/$1 |
| DSTDIR=$GODIR/$2 |
| |
| echo 2>&1 "vendoring $SRCDIR => $DSTDIR" |
| |
| # create directory |
| rm -rf $DSTDIR |
| mkdir -p $DSTDIR |
| cd $DSTDIR |
| |
| # copy go sources and update import paths |
| for f in $SRCDIR/*.go; do |
| # copy $f and update imports |
| sed -e 's|"golang.org/x/tools/go/exact"|"go/exact"|' \ |
| -e 's|"golang.org/x/tools/go/types"|"go/types"|' \ |
| -e 's|"golang.org/x/tools/go/gcimporter"|"go/internal/gcimporter"|' \ |
| $f | gofmt > tmp.go |
| mv -f tmp.go `basename $f` |
| done |
| |
| # copy testdata, if any |
| if [ -e $SRCDIR/testdata ]; then |
| cp -R $SRCDIR/testdata/ $DSTDIR/testdata/ |
| fi |
| ) |
| |
| function install() ( |
| PKG=$GODIR/$1 |
| |
| echo 2>&1 "installing $PKG" |
| cd $PKG |
| go install |
| ) |
| |
| function test() ( |
| PKG=$GODIR/$1 |
| |
| echo 2>&1 "testing $PKG" |
| cd $PKG |
| if ! go test; then |
| echo 2>&1 "TESTING $PKG FAILED" |
| exit 1 |
| fi |
| ) |
| |
| ### go/exact |
| vendor go/exact exact |
| test exact |
| install exact |
| |
| ### go/types |
| vendor go/types types |
| # cannot test w/o gcimporter |
| install types |
| |
| ### go/gcimporter |
| vendor go/gcimporter internal/gcimporter |
| test internal/gcimporter |
| install internal/gcimporter |
| |
| ### test go/types (requires gcimporter) |
| test types |
| |
| # All done. |
| echo 2>&1 "DONE" |
| exit 0 |