2014-11-27 08:06:42 +08:00
|
|
|
#!/bin/sh -e
|
|
|
|
|
|
|
|
gofrontendrepo=https://code.google.com/p/gofrontend
|
2014-12-05 04:39:58 +08:00
|
|
|
gofrontendrev=2a85649c19e1
|
2014-11-27 08:06:42 +08:00
|
|
|
|
|
|
|
gccrepo=svn://gcc.gnu.org/svn/gcc/trunk
|
|
|
|
gccrev=216268
|
|
|
|
|
|
|
|
gotoolsrepo=https://code.google.com/p/go.tools
|
|
|
|
gotoolsrev=40c49f5c2b64
|
|
|
|
|
|
|
|
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/go.tools
|
|
|
|
|
|
|
|
# --------------------- 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 ---------------------
|
|
|
|
|
|
|
|
hg clone -r $gotoolsrev $gotoolsrepo $gotoolsdir
|
|
|
|
|
|
|
|
cp -r $gotoolsdir/* third_party/go.tools
|
|
|
|
|
|
|
|
# Vendor the go.tools repository.
|
|
|
|
find third_party/go.tools -name '*.go' | xargs sed -i -e \
|
|
|
|
's,"golang.org/x/tools/,"llvm.org/llgo/third_party/go.tools/,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/go.tools/go/exact/go13.go
|
|
|
|
rm third_party/go.tools/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
|