#!/bin/bash # Builds rustc with the mrustc stage0 and downloaded stage0 set -e WORKDIR=${WORKDIR:-rustc_bootstrap}/ RUSTC_VERSION=${*-1.29.0} RUN_RUSTC_SUF="" if [[ "$RUSTC_VERSION" == "1.29.0" ]]; then RUSTC_VERSION_NEXT=1.30.0 elif [[ "$RUSTC_VERSION" == "1.19.0" ]]; then RUSTC_VERSION_NEXT=1.20.0 RUN_RUSTC_SUF=-1.19.0 else echo "Unknown rustc version" fi MAKEFLAGS=-j8 export MAKEFLAGS echo "=== Building stage0 rustc (with libstd)" make -C run_rustc RUSTC_VERSION=${RUSTC_VERSION} PREFIX=${PWD}/run_rustc/output${RUN_RUSTC_SUF}/prefix/ if [ ! -e rustc-${RUSTC_VERSION_NEXT}-src.tar.gz ]; then wget https://static.rust-lang.org/dist/rustc-${RUSTC_VERSION_NEXT}-src.tar.gz fi echo "--- Working in directory ${WORKDIR}" echo "=== Cleaning up" rm -rf ${WORKDIR}build # # Build rustc using entirely mrustc-built tools # echo "=== Building rustc bootstrap mrustc stage0" mkdir -p ${WORKDIR}mrustc/ tar -xf rustc-${RUSTC_VERSION_NEXT}-src.tar.gz -C ${WORKDIR}mrustc/ cat - > ${WORKDIR}mrustc/rustc-${RUSTC_VERSION_NEXT}-src/config.toml < ${WORKDIR}mrustc.log 2>&1 cleanup_mrustc trap - EXIT rm -rf ${WORKDIR}mrustc-output cp -r ${WORKDIR}mrustc/rustc-${RUSTC_VERSION_NEXT}-src/build/x86_64-unknown-linux-gnu/stage2 ${WORKDIR}mrustc-output tar -czf ${WORKDIR}mrustc.tar.gz -C ${WORKDIR} mrustc-output # # Build rustc by downloading the previous version of rustc (and its matching cargo) # echo "=== Building rustc bootstrap downloaded stage0" mkdir -p ${WORKDIR}official/ tar -xf rustc-${RUSTC_VERSION_NEXT}-src.tar.gz -C ${WORKDIR}official/ cat - > ${WORKDIR}official/rustc-${RUSTC_VERSION_NEXT}-src/config.toml < ${WORKDIR}official.log 2>&1 (cd ${WORKDIR} && mv build official) rm -rf ${WORKDIR}official-output cp -r ${WORKDIR}official/rustc-${RUSTC_VERSION_NEXT}-src/build/x86_64-unknown-linux-gnu/stage2 ${WORKDIR}official-output tar -czf ${WORKDIR}official.tar.gz -C ${WORKDIR} official-output