internal/rosa/package: migrate gcc

The azalea implementation used an adaptation of this as testdata.

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
2026-05-18 22:21:36 +09:00
parent 682b3a2ce5
commit eb2b53307a
5 changed files with 182 additions and 201 deletions

View File

@@ -0,0 +1,87 @@
package binutils {
description = "a collection of binary tools";
website = "https://www.gnu.org/software/binutils";
anitya = 7981;
version* = "2.46.0";
source = remoteTar {
url = "https://ftpmirror.gnu.org/gnu/binutils/binutils-"+version+".tar.bz2";
checksum = "4kK1_EXQipxSqqyvwD4LbiMLFKCUApjq6PeG4XJP4dzxYGqDeqXfh8zLuTyOuOVR";
compress = bzip2;
};
exec = make {};
inputs = [ bash ];
}
package gcc {
description = "The GNU Compiler Collection";
website = "https://www.gnu.org/software/gcc";
anitya = 6502;
version* = "16.1.0";
source = remoteTar {
url = "https://ftp.tsukuba.wide.ad.jp/software/gcc/releases/"+
"gcc-"+version+"/gcc-"+version+".tar.gz";
checksum = "4ASoWbxaA2FW7PAB0zzHDPC5XnNhyaAyjtDPpGzceSLeYnEIXsNYZR3PA_Zu5P0K";
compress = gzip;
};
patches = [
"musl-off64_t-loff_t.patch",
"musl-legacy-lfs.patch",
];
// GCC spends most of its time in its many configure scripts, however
// it also saturates the CPU for a consequential amount of time.
exclusive = true;
early = `
ln -s system/lib /
ln -s system/lib /work/
`;
exec = make {
configure = {
"disable-multilib";
"enable-default-pie";
"disable-nls";
"with-gnu-as";
"with-gnu-ld";
"with-system-zlib";
"enable-languages": "c,c++,go";
"with-native-system-header-dir": "/system/include";
"with-multilib-list": arch {
amd64, arm64 = "''";
};
};
make = [
"BOOT_CFLAGS='-O2 -g'",
"bootstrap",
];
// This toolchain is hacked to pieces, it is not expected to ever work
// well in its current state. That does not matter as long as the
// toolchain it produces passes its own test suite.
skipCheck = true;
};
inputs = [
binutils,
mpc,
zlib,
libucontext,
kernel-headers,
];
runtime = [
binutils,
mpc,
zlib,
libucontext,
];
}