#!/bin/sh -e gofrontendrepo=https://code.google.com/p/gofrontend gofrontendrev=2a85649c19e1 gccrepo=svn://gcc.gnu.org/svn/gcc/trunk gccrev=216268 gotoolsrepo=https://go.googlesource.com/tools gotoolsrev=47f2109c640e97025f36c98610bd9782e815012e tempdir=$(mktemp -d /tmp/update_third_party.XXXXXX) gofrontenddir=$tempdir/gofrontend gotoolsdir=$tempdir/go.tools rm -rf third_party mkdir -p third_party/gofrontend third_party/gotools # --------------------- gofrontend --------------------- hg clone -r $gofrontendrev $gofrontendrepo $gofrontenddir cp -r $gofrontenddir/LICENSE $gofrontenddir/libgo third_party/gofrontend # Apply a diff that eliminates use of the unnamed struct extension beyond what # -fms-extensions supports. (cd third_party/gofrontend && patch -p1) < libgo-noext.diff find third_party/gofrontend -name '*.orig' | xargs rm # Remove GPL licensed files. rm \ third_party/gofrontend/libgo/testsuite/libgo.testmain/testmain.exp \ third_party/gofrontend/libgo/testsuite/lib/libgo.exp \ third_party/gofrontend/libgo/testsuite/config/default.exp # --------------------- gcc --------------------- # Some dependencies are stored in the gcc repository. # TODO(pcc): Ask iant about mirroring these dependencies into gofrontend. for f in config-ml.in depcomp install-sh ltmain.sh missing ; do svn cat -r $gccrev $gccrepo/$f > third_party/gofrontend/$f done mkdir -p third_party/gofrontend/include third_party/gofrontend/libgcc # Copy in our versions of GCC files. cp include/dwarf2.h third_party/gofrontend/include/ cp include/filenames.h third_party/gofrontend/include/ cp include/unwind-pe.h third_party/gofrontend/libgcc/ cp ../../autoconf/config.guess third_party/gofrontend/ cp ../../autoconf/config.sub third_party/gofrontend/ for d in libbacktrace libffi ; do svn export -r $gccrev $gccrepo/$d third_party/gofrontend/$d done # Remove GPL licensed files, and files that confuse our license check. rm \ third_party/gofrontend/libffi/ChangeLog \ third_party/gofrontend/libffi/doc/libffi.texi \ third_party/gofrontend/libffi/msvcc.sh \ third_party/gofrontend/libffi/testsuite/lib/libffi.exp \ third_party/gofrontend/libffi/testsuite/libffi.call/call.exp \ third_party/gofrontend/libffi/testsuite/libffi.special/special.exp \ third_party/gofrontend/libffi/testsuite/config/default.exp # The build requires these files to exist. touch \ third_party/gofrontend/include/dwarf2.def \ third_party/gofrontend/libffi/doc/libffi.texi # --------------------- go.tools --------------------- git clone $gotoolsrepo $gotoolsdir (cd $gotoolsdir && git checkout $gotoolsrev) cp -r $gotoolsdir/LICENSE $gotoolsdir/go third_party/gotools # Vendor the go.tools repository. find third_party/gotools -name '*.go' | xargs sed -i -e \ 's,"golang.org/x/tools/,"llvm.org/llgo/third_party/gotools/,g' # Until the version skew between the "go" tool and the compiler is resolved, # we patch out Go 1.4 specific code in go.tools. sed -i -e '/go1\.4/ d' third_party/gotools/go/exact/go13.go rm third_party/gotools/go/exact/go14.go # --------------------- license check --------------------- # We don't want any GPL licensed code without an autoconf/libtool # exception, or any GPLv3 licensed code. for i in `grep -lr 'General Public License' third_party` ; do if grep -q 'configuration script generated by Autoconf, you may include it under' $i || \ grep -q 'is built using GNU Libtool, you may include this file under the' $i ; then : else echo "$i: license check failed" exit 1 fi done if grep -qr GPLv3 third_party ; then echo "`grep -lr GPLv3 third_party`: license check failed" exit 1 fi rm -rf $tempdir