#!/bin/sh -e scriptpath=$(readlink -f "$0") llgosrcdir=$(dirname "$scriptpath") cd $llgosrcdir gofrontendrepo=https://go.googlesource.com/gofrontend gofrontendrev=81eb6a3f425b2158c67ee32c0cc973a72ce9d6be gccrepo=svn://gcc.gnu.org/svn/gcc/trunk gccrev=219477 gotoolsrepo=https://go.googlesource.com/tools gotoolsrev=d4e70101500b43ffe705d4c45e50dd4f1c8e3b2e linerrepo=https://github.com/peterh/liner.git linerrev=4d47685ab2fd2dbb46c66b831344d558bc4be5b9 tempdir=$(mktemp -d /tmp/update_third_party.XXXXXX) gofrontenddir=$tempdir/gofrontend gotoolsdir=$tempdir/go.tools linerdir=third_party/liner rm -rf third_party mkdir -p third_party/gofrontend third_party/gotools git_clone() { repo=$1 dir=$2 rev=$3 git clone $repo $dir ( cd $dir git checkout $rev rm -fr .git ) } # --------------------- gofrontend --------------------- git_clone $gofrontendrepo $gofrontenddir $gofrontendrev 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 # Apply a diff that disables testing of packages known to fail. (cd third_party/gofrontend && patch -p1) < libgo-check-failures.diff find third_party/gofrontend -name '*.orig' -exec 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/ # Note: this expects the llgo source tree to be located at llvm/tools/llgo. cp ../../cmake/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/config/default.exp \ third_party/gofrontend/libffi/testsuite/libffi.call/call.exp \ third_party/gofrontend/libffi/testsuite/libffi.complex/complex.exp \ third_party/gofrontend/libffi/testsuite/libffi.go/go.exp \ third_party/gofrontend/libffi/testsuite/libffi.special/special.exp \ third_party/gofrontend/libffi/testsuite/lib/libffi.exp \ third_party/gofrontend/libffi/testsuite/lib/target-libpath.exp \ third_party/gofrontend/libffi/testsuite/lib/wrapper.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 $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' # --------------------- peterh/liner ----------------- git_clone $linerrepo $linerdir $linerrev # --------------------- 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