package go {
	description = "the Go programming language toolchain";
	website = "https://go.dev";
	anitya = 1227;

	version# = "1.26.5";
	source = remoteTar {
		url = "https://go.dev/dl/go"+version+".src.tar.gz";
		checksum = "13yt1u_NGOd62LO-WZ8W6CUXodOrEF5CdkiTTiH9E635IHn1luvlXYjsHpBXNFSw";
		compress = gzip;
	};

	patches = [
		// https://go.dev/issue/77674
		"746640.patch",
		// https://go.dev/issue/80308
		"799064.patch",
	];

	env = [
		"CC=cc",
		"GOCACHE=/tmp/gocache",
		"GOROOT_BOOTSTRAP=/system/go",
		"TMPDIR=/dev/shm/go",
	];

	enterSource = true;

	exec = generic {
		inPlace = true;
		build = `
mkdir /work/system/ "${TMPDIR}"
cp -r . /work/system/go
cd /work/system/go/src/
chmod -R +w ..

sed -i \
	's,/lib/ld-musl-`+linuxArch+`.so.1,/system/bin/linker,' \
	cmd/link/internal/`+arch+`/obj.go

rm \
	os/root_unix_test.go \
	runtime/crash_cgo_test.go \
	cmd/cgo/internal/testsanitizers/tsan_test.go \
	cmd/cgo/internal/testsanitizers/cshared_test.go

set +u
. ./make.bash "$@" --no-banner
set -u
`;
		check = "bash run.bash --no-rebuild\n";
		install = `
../bin/go tool dist banner # print build info

mkdir /work/system/bin
ln -s \
	../go/bin/go \
	../go/bin/gofmt \
	/work/system/bin
`;
	};

	inputs = [ bash, go-bootstrap ];
}
