mrustc: init

This contains some extraordinarily ugly hacks for a set of even uglier
Makefiles.

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
cat
2026-07-19 05:39:38 +09:00
parent a1b0a10fcf
commit c6378d7cc7
2 changed files with 91 additions and 0 deletions
+77
View File
@@ -0,0 +1,77 @@
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-dont-download-rustc.patch" ];
extra = [ rustc-bootstrap-source ];
enterSource = true;
writable = true;
chmod = 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 CC=gcc
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"
`;
preCheck = `
make -f minicargo.mk LIBS
make local_tests
`;
check = [ "test" ];
install = `
OUTDIR="output-$RUSTC_VERSION"
make -f minicargo.mk "$OUTDIR/rustc"
make -f minicargo.mk "$OUTDIR/cargo"
make -C run_rustc
`;
};
inputs = [
bash,
patch,
cmake,
python,
// mrustc requires buggy gcc behaviour
gcc,
kernel-headers,
];
}