summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzowoq <59103226+zowoq@users.noreply.github.com>2024-12-14 09:02:52 +1000
committerSandro Jäckel <sandro.jaeckel@gmail.com>2025-04-15 16:51:21 +0200
commitea9e2c26615462f7c702f92cf7b7d8480c3ad039 (patch)
tree4c696c91bf5e0c5b42b50fdf1859373b7034f56a
parent[24.11] firefox-devedition-unwrapped: 137.0b10 -> 138.0b5 (#397862) (diff)
downloadnixpkgs-ea9e2c26615462f7c702f92cf7b7d8480c3ad039.tar.gz
go_1_24: init at 1.24rc1
-rw-r--r--pkgs/development/compilers/go/1.24.nix203
-rw-r--r--pkgs/development/compilers/go/bootstrap122.nix27
-rw-r--r--pkgs/top-level/all-packages.nix5
3 files changed, 235 insertions, 0 deletions
diff --git a/pkgs/development/compilers/go/1.24.nix b/pkgs/development/compilers/go/1.24.nix
new file mode 100644
index 000000000000..92653cfeebde
--- /dev/null
+++ b/pkgs/development/compilers/go/1.24.nix
@@ -0,0 +1,203 @@
+{
+ lib,
+ stdenv,
+ fetchurl,
+ tzdata,
+ substituteAll,
+ iana-etc,
+ apple-sdk_11,
+ xcbuild,
+ mailcap,
+ buildPackages,
+ pkgsBuildTarget,
+ threadsCross,
+ testers,
+ skopeo,
+ buildGo124Module,
+}:
+
+let
+ goBootstrap = buildPackages.callPackage ./bootstrap122.nix { };
+
+ skopeoTest = skopeo.override { buildGoModule = buildGo124Module; };
+
+ goarch =
+ platform:
+ {
+ "aarch64" = "arm64";
+ "arm" = "arm";
+ "armv5tel" = "arm";
+ "armv6l" = "arm";
+ "armv7l" = "arm";
+ "i686" = "386";
+ "mips" = "mips";
+ "mips64el" = "mips64le";
+ "mipsel" = "mipsle";
+ "powerpc64" = "ppc64";
+ "powerpc64le" = "ppc64le";
+ "riscv64" = "riscv64";
+ "s390x" = "s390x";
+ "x86_64" = "amd64";
+ "wasm32" = "wasm";
+ }
+ .${platform.parsed.cpu.name} or (throw "Unsupported system: ${platform.parsed.cpu.name}");
+
+ # We need a target compiler which is still runnable at build time,
+ # to handle the cross-building case where build != host == target
+ targetCC = pkgsBuildTarget.targetPackages.stdenv.cc;
+
+ isCross = stdenv.buildPlatform != stdenv.targetPlatform;
+in
+stdenv.mkDerivation (finalAttrs: {
+ pname = "go";
+ version = "1.24rc1";
+
+ src = fetchurl {
+ url = "https://go.dev/dl/go${finalAttrs.version}.src.tar.gz";
+ hash = "sha256-r9iiP9Jg8qJG0XQEmgdrigW7C62T8SIHaNIZuL33U50=";
+ };
+
+ strictDeps = true;
+ buildInputs =
+ [ ]
+ ++ lib.optionals stdenv.hostPlatform.isLinux [ stdenv.cc.libc.out ]
+ ++ lib.optionals (stdenv.hostPlatform.libc == "glibc") [ stdenv.cc.libc.static ];
+
+ depsTargetTargetPropagated = lib.optionals stdenv.targetPlatform.isDarwin [
+ apple-sdk_11
+ xcbuild
+ ];
+
+ depsBuildTarget = lib.optional isCross targetCC;
+
+ depsTargetTarget = lib.optional stdenv.targetPlatform.isWindows threadsCross.package;
+
+ postPatch = ''
+ patchShebangs .
+ '';
+
+ patches = [
+ (substituteAll {
+ src = ./iana-etc-1.17.patch;
+ iana = iana-etc;
+ })
+ # Patch the mimetype database location which is missing on NixOS.
+ # but also allow static binaries built with NixOS to run outside nix
+ (substituteAll {
+ src = ./mailcap-1.17.patch;
+ inherit mailcap;
+ })
+ # prepend the nix path to the zoneinfo files but also leave the original value for static binaries
+ # that run outside a nix server
+ (substituteAll {
+ src = ./tzdata-1.19.patch;
+ inherit tzdata;
+ })
+ ./remove-tools-1.11.patch
+ ./go_no_vendor_checks-1.22.patch
+ ];
+
+ GOOS = if stdenv.targetPlatform.isWasi then "wasip1" else stdenv.targetPlatform.parsed.kernel.name;
+ GOARCH = goarch stdenv.targetPlatform;
+ # GOHOSTOS/GOHOSTARCH must match the building system, not the host system.
+ # Go will nevertheless build a for host system that we will copy over in
+ # the install phase.
+ GOHOSTOS = stdenv.buildPlatform.parsed.kernel.name;
+ GOHOSTARCH = goarch stdenv.buildPlatform;
+
+ # {CC,CXX}_FOR_TARGET must be only set for cross compilation case as go expect those
+ # to be different from CC/CXX
+ CC_FOR_TARGET = if isCross then "${targetCC}/bin/${targetCC.targetPrefix}cc" else null;
+ CXX_FOR_TARGET = if isCross then "${targetCC}/bin/${targetCC.targetPrefix}c++" else null;
+
+ GOARM = toString (
+ lib.intersectLists [ (stdenv.hostPlatform.parsed.cpu.version or "") ] [ "5" "6" "7" ]
+ );
+ GO386 = "softfloat"; # from Arch: don't assume sse2 on i686
+ # Wasi does not support CGO
+ CGO_ENABLED = if stdenv.targetPlatform.isWasi then 0 else 1;
+
+ GOROOT_BOOTSTRAP = "${goBootstrap}/share/go";
+
+ buildPhase = ''
+ runHook preBuild
+ export GOCACHE=$TMPDIR/go-cache
+
+ export PATH=$(pwd)/bin:$PATH
+
+ ${lib.optionalString isCross ''
+ # Independent from host/target, CC should produce code for the building system.
+ # We only set it when cross-compiling.
+ export CC=${buildPackages.stdenv.cc}/bin/cc
+ ''}
+ ulimit -a
+
+ pushd src
+ ./make.bash
+ popd
+ runHook postBuild
+ '';
+
+ preInstall =
+ ''
+ # Contains the wrong perl shebang when cross compiling,
+ # since it is not used for anything we can deleted as well.
+ rm src/regexp/syntax/make_perl_groups.pl
+ ''
+ + (
+ if (stdenv.buildPlatform.system != stdenv.hostPlatform.system) then
+ ''
+ mv bin/*_*/* bin
+ rmdir bin/*_*
+ ${lib.optionalString
+ (!(finalAttrs.GOHOSTARCH == finalAttrs.GOARCH && finalAttrs.GOOS == finalAttrs.GOHOSTOS))
+ ''
+ rm -rf pkg/${finalAttrs.GOHOSTOS}_${finalAttrs.GOHOSTARCH} pkg/tool/${finalAttrs.GOHOSTOS}_${finalAttrs.GOHOSTARCH}
+ ''
+ }
+ ''
+ else
+ lib.optionalString (stdenv.hostPlatform.system != stdenv.targetPlatform.system) ''
+ rm -rf bin/*_*
+ ${lib.optionalString
+ (!(finalAttrs.GOHOSTARCH == finalAttrs.GOARCH && finalAttrs.GOOS == finalAttrs.GOHOSTOS))
+ ''
+ rm -rf pkg/${finalAttrs.GOOS}_${finalAttrs.GOARCH} pkg/tool/${finalAttrs.GOOS}_${finalAttrs.GOARCH}
+ ''
+ }
+ ''
+ );
+
+ installPhase = ''
+ runHook preInstall
+ mkdir -p $out/share/go
+ cp -a bin pkg src lib misc api doc go.env $out/share/go
+ mkdir -p $out/bin
+ ln -s $out/share/go/bin/* $out/bin
+ runHook postInstall
+ '';
+
+ disallowedReferences = [ goBootstrap ];
+
+ passthru = {
+ inherit goBootstrap skopeoTest;
+ tests = {
+ skopeo = testers.testVersion { package = skopeoTest; };
+ version = testers.testVersion {
+ package = finalAttrs.finalPackage;
+ command = "go version";
+ version = "go${finalAttrs.version}";
+ };
+ };
+ };
+
+ meta = with lib; {
+ changelog = "https://go.dev/doc/devel/release#go${lib.versions.majorMinor finalAttrs.version}";
+ description = "Go Programming language";
+ homepage = "https://go.dev/";
+ license = licenses.bsd3;
+ maintainers = teams.golang.members;
+ platforms = platforms.darwin ++ platforms.linux ++ platforms.wasi ++ platforms.freebsd;
+ mainProgram = "go";
+ };
+})
diff --git a/pkgs/development/compilers/go/bootstrap122.nix b/pkgs/development/compilers/go/bootstrap122.nix
new file mode 100644
index 000000000000..44ebbb29f266
--- /dev/null
+++ b/pkgs/development/compilers/go/bootstrap122.nix
@@ -0,0 +1,27 @@
+{ callPackage }:
+callPackage ./binary.nix {
+ version = "1.22.10";
+ hashes = {
+ # Use `print-hashes.sh ${version}` to generate the list below
+ darwin-amd64 = "dd2c4ac3702658c2c20e3a8b394da1917d86156b2cb4312c9d2f657f80067874";
+ darwin-arm64 = "21cf49415ffe0755b45f2b63e75d136528a32f7bb7bdd0166f51d22a03eb0a3f";
+ freebsd-386 = "f82f5d194114963693e0f51fd56d55d8417ca556438062f2b0df608473b62837";
+ freebsd-amd64 = "cce9da240870a4430c5cf1227bcf29d37575043ff16f7982a69f1139c6f564b5";
+ freebsd-arm64 = "abae388d0d42563a242db0d405172cb73e09236f68000ff90c2a327ec8c5764c";
+ freebsd-armv6l = "7c9c8fe30cbabbb4fb597f0f0ad1279fd2b320bc70831eba4c207b55ad46931d";
+ freebsd-riscv64 = "d6f25fd79e17b84d1b61bec3e2fdffc47377b28b51a04b6bdbeac0199313e059";
+ linux-386 = "2ae9f00e9621489b75494fa2b8abfc5d09e0cae6effdd4c13867957ad2e4deba";
+ linux-amd64 = "736ce492a19d756a92719a6121226087ccd91b652ed5caec40ad6dbfb2252092";
+ linux-arm64 = "5213c5e32fde3bd7da65516467b7ffbfe40d2bb5a5f58105e387eef450583eec";
+ linux-armv6l = "a7bbbc80fe736269820bbdf3555e91ada5d18a5cde2276aac3b559bc1d52fc70";
+ linux-loong64 = "0be34dbc69726b52414e0283736f997fee477379ebff66cebd7d8c35f4f64f9d";
+ linux-mips = "bb7d7e99db7ee70063cb57bb7395c392b8b5ed87f37d733a1c91de935c70bb91";
+ linux-mips64 = "c7f0571410297cb29e52d10fed7a2a21aeaeabb9539d0c04a6d778adf0fe7f1b";
+ linux-mips64le = "e66c440c03dd19bf8423034cbde7f6813321beb18d3fcf2ef234c13a25467952";
+ linux-mipsle = "b4e0061f62a9c1f874893aa4951a4883c19762a9dd64c5710554ec5a7aaf311a";
+ linux-ppc64 = "4192158cdedc6a124aa32a099cc6bebebabf1f4d380c46c5e36ea52c30a3888b";
+ linux-ppc64le = "db05b9838f69d741fb9a5301220b1a62014aee025b0baf341aba3d280087b981";
+ linux-riscv64 = "aef9b186c1b9b58c0472dbf54978f97682852a91b2e8d6bf354e59ba9c24438a";
+ linux-s390x = "4ab2286adb096576771801b5099760b1d625fd7b44080449151a4d9b21303672";
+ };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index afedc8e9375f..b406e9c7b96c 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -12604,6 +12604,11 @@ with pkgs;
go = buildPackages.go_1_23;
};
+ go_1_24 = callPackage ../development/compilers/go/1.24.nix { };
+ buildGo124Module = callPackage ../build-support/go/module.nix {
+ go = buildPackages.go_1_24;
+ };
+
### DEVELOPMENT / HARE
hareHook = callPackage ../by-name/ha/hare/hook.nix { };