package rustc-bootstrap-source { description = "rustc source tree used by mrustc"; exclude = true; version# = "1.54.0"; output = remoteTar { url = "https://static.rust-lang.org/dist/rustc-"+version+"-src.tar.gz"; compress = gzip; checksum = "kFXaHMt0dkRxHRGvPulfzhmUmKN_m-KVKNub922LFHMZGkmKdZ1jfLAtyRp659mU"; }; 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-dont-download-rustc.patch" ]; extra = [ rustc-bootstrap-source ]; enterSource = true; writable = true; chmod = true; minimal = true; exec = make { inPlace = true; skipConfigure = true; preMake = ` 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 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" `; preCheck = ` make -f minicargo.mk LIBS `; check = [ "test" ]; }; inputs = [ bash, patch, // mrustc requires buggy gcc behaviour gcc, ]; }