1#!/usr/bin/env bash 2set -ex 3 4source shared.sh 5 6GCC=8.5.0 7 8curl https://ftp.gnu.org/gnu/gcc/gcc-$GCC/gcc-$GCC.tar.xz | xzcat | tar xf - 9cd gcc-$GCC 10 11# FIXME(#49246): Remove the `sed` below. 12# 13# On 2018 March 21st, two Travis builders' cache for Docker are suddenly invalidated. Normally this 14# is fine, because we just need to rebuild the Docker image. However, it reveals a network issue: 15# downloading from `ftp://gcc.gnu.org/` from Travis (using passive mode) often leads to "Connection 16# timed out" error, and even when the download completed, the file is usually corrupted. This causes 17# nothing to be landed that day. 18# 19# We observed that the `gcc-4.8.5.tar.bz2` above can be downloaded successfully, so as a stability 20# improvement we try to download from the HTTPS mirror instead. Turns out this uncovered the third 21# bug: the host `gcc.gnu.org` and `cygwin.com` share the same IP, and the TLS certificate of the 22# latter host is presented to `wget`! Therefore, we choose to download from the insecure HTTP server 23# instead here. 24# 25sed -i'' 's|ftp://gcc\.gnu\.org/|https://gcc.gnu.org/|g' ./contrib/download_prerequisites 26 27./contrib/download_prerequisites 28mkdir ../gcc-build 29cd ../gcc-build 30hide_output ../gcc-$GCC/configure \ 31 --prefix=/rustroot \ 32 --enable-languages=c,c++ \ 33 --disable-gnu-unique-object 34hide_output make -j$(nproc) 35hide_output make install 36ln -s gcc /rustroot/bin/cc 37 38cd .. 39rm -rf gcc-build 40rm -rf gcc-$GCC 41 42# FIXME: clang doesn't find 32-bit libraries in /rustroot/lib, 43# but it does look all the way under /rustroot/lib/[...]/32, 44# so we can link stuff there to help it out. 45ln /rustroot/lib/*.{a,so} -rst /rustroot/lib/gcc/x86_64-pc-linux-gnu/$GCC/32/ 46