1*b40554a2SAndroid Build Coastguard Workerset -e 2*b40554a2SAndroid Build Coastguard Worker 3*b40554a2SAndroid Build Coastguard Worker# Grab libraries we'll need later at the beginning 4*b40554a2SAndroid Build Coastguard Workersudo apt-get install libssl1.0-dev libcurl4-openssl-dev 5*b40554a2SAndroid Build Coastguard Worker 6*b40554a2SAndroid Build Coastguard Worker# Grab clang prebuilt 7*b40554a2SAndroid Build Coastguard Workergit clone https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86 clang-prebuilt --filter=blob:none -n 8*b40554a2SAndroid Build Coastguard Workergit -C clang-prebuilt checkout 8a6de3cbfcd642b21ebaf9663596b3f7e942d1c5 9*b40554a2SAndroid Build Coastguard WorkerCLANGDIR=${PWD}/clang-prebuilt/clang-r353983c/bin 10*b40554a2SAndroid Build Coastguard Workerexport CC=${CLANGDIR}/clang 11*b40554a2SAndroid Build Coastguard Workerexport CXX=${CLANGDIR}/clang++ 12*b40554a2SAndroid Build Coastguard Workerexport AR=${CLANGDIR}/llvm-ar 13*b40554a2SAndroid Build Coastguard Worker# Old rustc incorrectly assumed ar lived next to cc 14*b40554a2SAndroid Build Coastguard Workercp ${AR} ${CLANGDIR}/ar 15*b40554a2SAndroid Build Coastguard Worker 16*b40554a2SAndroid Build Coastguard Worker# Fetch rustc-1.19 and rustc-1.20 17*b40554a2SAndroid Build Coastguard Workerwget https://static.rust-lang.org/dist/rustc-1.19.0-src.tar.gz 18*b40554a2SAndroid Build Coastguard Workerwget https://static.rust-lang.org/dist/rustc-1.20.0-src.tar.gz 19*b40554a2SAndroid Build Coastguard Workersha256sum -c rustc-shasums 20*b40554a2SAndroid Build Coastguard Workerexport RUSTC_1_19=${PWD}/rustc-1.19.0-src.tar.gz 21*b40554a2SAndroid Build Coastguard Workerexport RUSTC_1_20=${PWD}/rustc-1.20.0-src.tar.gz 22*b40554a2SAndroid Build Coastguard Worker 23*b40554a2SAndroid Build Coastguard Worker# Build rustc-1.19 with mrustc 24*b40554a2SAndroid Build Coastguard Workergit clone https://github.com/thepowersgang/mrustc -b v0.8.0 25*b40554a2SAndroid Build Coastguard Workergit -C mrustc am ${PWD}/mrustc-patches/* 26*b40554a2SAndroid Build Coastguard Workercd mrustc 27*b40554a2SAndroid Build Coastguard Worker 28*b40554a2SAndroid Build Coastguard Worker# Build mrustc 29*b40554a2SAndroid Build Coastguard Workermake bin/mrustc 30*b40554a2SAndroid Build Coastguard Worker 31*b40554a2SAndroid Build Coastguard Workertar xf ${RUSTC_1_19} 32*b40554a2SAndroid Build Coastguard Worker# Build rustc/cargo 33*b40554a2SAndroid Build Coastguard Workermake output/rustc 34*b40554a2SAndroid Build Coastguard Workermake output/cargo 35*b40554a2SAndroid Build Coastguard Worker 36*b40554a2SAndroid Build Coastguard Worker# Build prefix and stdlibs 37*b40554a2SAndroid Build Coastguard Workermake -C run_rustc 38*b40554a2SAndroid Build Coastguard Worker 39*b40554a2SAndroid Build Coastguard Worker# Build rustc-1.20 with our mrustc-rustc 1.19 40*b40554a2SAndroid Build Coastguard WorkerPREFIX=${PWD}/run_rustc/prefix/ 41*b40554a2SAndroid Build Coastguard WorkerMRUSTC_RUSTC=${PWD}/mrustc-rustc-rustc/ 42*b40554a2SAndroid Build Coastguard Workermkdir -p ${MRUSTC_RUSTC} 43*b40554a2SAndroid Build Coastguard Workertar xf ${RUSTC_1_20} -C ${MRUSTC_RUSTC} 44*b40554a2SAndroid Build Coastguard WorkerMRUSTC_RUSTC_SRC=${MRUSTC_RUSTC}/rustc-1.20.0-src 45*b40554a2SAndroid Build Coastguard Workercat - > ${MRUSTC_RUSTC_SRC}/config.toml <<EOF 46*b40554a2SAndroid Build Coastguard Worker[build] 47*b40554a2SAndroid Build Coastguard Workercargo = "${PREFIX}bin/cargo" 48*b40554a2SAndroid Build Coastguard Workerrustc = "${PREFIX}bin/rustc" 49*b40554a2SAndroid Build Coastguard Workerfull-bootstrap = true 50*b40554a2SAndroid Build Coastguard Workervendor = true 51*b40554a2SAndroid Build Coastguard Workerextended = true 52*b40554a2SAndroid Build Coastguard Worker[target.x86_64-unknown-linux-gnu] 53*b40554a2SAndroid Build Coastguard Workercc = "${CC}" 54*b40554a2SAndroid Build Coastguard Workercxx = "${CXX}" 55*b40554a2SAndroid Build Coastguard Workerar = "${AR}" 56*b40554a2SAndroid Build Coastguard WorkerEOF 57*b40554a2SAndroid Build Coastguard Workermv ${MRUSTC_RUSTC_SRC} build 58*b40554a2SAndroid Build Coastguard Workerpushd build 59*b40554a2SAndroid Build Coastguard Worker./x.py build --stage 3 2>&1 > build.log 60*b40554a2SAndroid Build Coastguard Workerpopd 61*b40554a2SAndroid Build Coastguard Workermv build ${MRUSTC_RUSTC_SRC} 62*b40554a2SAndroid Build Coastguard Worker 63*b40554a2SAndroid Build Coastguard Worker# Build rustc-1.20 with official 1.19 for comparison 64*b40554a2SAndroid Build Coastguard WorkerOFFICIAL_RUSTC=${PWD}/official-rustc-rustc/ 65*b40554a2SAndroid Build Coastguard Workermkdir -p ${OFFICIAL_RUSTC} 66*b40554a2SAndroid Build Coastguard Workertar xf ${RUSTC_1_20} -C ${OFFICIAL_RUSTC} 67*b40554a2SAndroid Build Coastguard WorkerOFFICIAL_RUSTC_SRC=${OFFICIAL_RUSTC}/rustc-1.20.0-src 68*b40554a2SAndroid Build Coastguard Workercat - > ${OFFICIAL_RUSTC_SRC}/config.toml <<EOF 69*b40554a2SAndroid Build Coastguard Worker[build] 70*b40554a2SAndroid Build Coastguard Workerfull-bootstrap = true 71*b40554a2SAndroid Build Coastguard Workervendor = true 72*b40554a2SAndroid Build Coastguard Workerextended = true 73*b40554a2SAndroid Build Coastguard Worker[target.x86_64-unknown-linux-gnu] 74*b40554a2SAndroid Build Coastguard Workercc = "${CC}" 75*b40554a2SAndroid Build Coastguard Workercxx = "${CXX}" 76*b40554a2SAndroid Build Coastguard Workerar = "${AR}" 77*b40554a2SAndroid Build Coastguard WorkerEOF 78*b40554a2SAndroid Build Coastguard Workermv ${OFFICIAL_RUSTC_SRC} build 79*b40554a2SAndroid Build Coastguard Workerpushd build 80*b40554a2SAndroid Build Coastguard Worker./x.py build --stage 3 2>&1 > build.log 81*b40554a2SAndroid Build Coastguard Workerpopd 82*b40554a2SAndroid Build Coastguard Workermv build ${OFFICIAL_RUSTC_SRC} 83*b40554a2SAndroid Build Coastguard Worker 84*b40554a2SAndroid Build Coastguard Worker# Summarize differences 85*b40554a2SAndroid Build Coastguard Workerdiff -r ${OFFICIAL_RUSTC_SRC}/build/x86_64-unknown-linux-gnu/stage3 ${MRUSTC_RUSTC_SRC}/build/x86_64-unknown-linux-gnu/stage3 86