package rustc-bootstrap-source { description = "rustc source tree used by mrustc"; exclude = true; version# = "1.90.0"; output = remoteTar { url = "https://static.rust-lang.org/dist/rustc-"+version+"-src.tar.gz"; compress = gzip; checksum = "kUjk5mOHRc7cTom0uJ5afFTkhFcXLYK8tJl_aqduffGSHc0TH_a-KKz6PI0nk_xK"; }; chmod = true; } package mrustc { description = "alternative rust compiler (re-implementation)"; website = "https://github.com/thepowersgang/mrustc"; anitya = 391250; version# = "0.12.0"; source = remoteGitHub { suffix = "thepowersgang/mrustc"; tag = "v"+version; checksum = "Db25OAKL_1yZIF6MlXOTHhrEJ-Pd-i-accVtt5rJollmpKm6B3bgS0xN7hoC1cVu"; }; patches = [ "0001-do-not-download-rustc.patch", "0002-Revert-HIR-Typecheck-Optimise-by-doing-multiple-chec.patch", ]; extra = [ rustc-bootstrap-source ]; minimal = true; enterSource = true; writable = true; chmod = true; exec = make { inPlace = true; skipConfigure = true; preMake = ` ln -sf gcc /system/bin/cc ln -sf g++ /system/bin/c++ export PARLEVEL=`+jobsE+` export RUSTC_SOURCE='../extra/rustc-bootstrap-source' export RUSTC_VERSION="$(cut -d ' ' -f 1 "$RUSTC_SOURCE/version")" export MRUSTC_TARGET_VER="$(cut -d '.' -f 1,2 <<< "$RUSTC_VERSION")" export OUTDIR_SUF="-$RUSTC_VERSION" patch -d "$RUSTC_SOURCE" -p0 < "rustc-$RUSTC_VERSION-src.patch" touch "$RUSTC_SOURCE/dl-version" ln -s "$RUSTC_SOURCE" "rustc-$RUSTC_VERSION-src" sed -i 's/\$(shell git show --pretty=%H -s --no-show-signature)/unknown/' Makefile sed -i 's/\$(shell git show -s --pretty=%h --no-show-signature)/unknown/' Makefile sed -i 's/\$(shell git symbolic-ref -q --short HEAD || git describe --tags --exact-match)/v`+version+`/' Makefile sed -i 's/\$(shell git diff-index --quiet HEAD; echo $$?)/0/' Makefile sed -i 's/\$(shell env LC_TIME=C date -u +"%a, %e %b %Y %T +0000")/Thu, 1 Jan 1970 00:00:00 +0000/' Makefile `; preCheck = ` make -f minicargo.mk LIBS make local_tests `; check = [ "test" ]; install = ` LLVM="$(which llvm-config)" OUTDIR="output-$RUSTC_VERSION" make -f minicargo.mk LLVM_CONFIG="$LLVM" "$OUTDIR/rustc" make -f minicargo.mk LLVM_CONFIG="$LLVM" "$OUTDIR/cargo" make -C LLVM_CONFIG="$LLVM" run_rustc `; }; inputs = [ bash, patch, llvm, // mrustc requires buggy gcc behaviour gcc, ]; }