diff options
author | Alyssa Ross <hi@alyssa.is> | 2023-09-22 19:21:26 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2023-09-22 19:21:26 +0000 |
commit | ea2acbed493e218f696673a004a95829392c5e33 (patch) | |
tree | c5716552f205bbf4d4addfa4675ea5073786bd06 /nixpkgs/pkgs/development/compilers/go/1.21.nix | |
parent | 06ba6c84f858b011fb1132721e5d5e28fcda4a8a (diff) | |
parent | 8aa8cd68f4745eb92f003666bfd300f3e67cd9c1 (diff) | |
download | nixlib-ea2acbed493e218f696673a004a95829392c5e33.tar nixlib-ea2acbed493e218f696673a004a95829392c5e33.tar.gz nixlib-ea2acbed493e218f696673a004a95829392c5e33.tar.bz2 nixlib-ea2acbed493e218f696673a004a95829392c5e33.tar.lz nixlib-ea2acbed493e218f696673a004a95829392c5e33.tar.xz nixlib-ea2acbed493e218f696673a004a95829392c5e33.tar.zst nixlib-ea2acbed493e218f696673a004a95829392c5e33.zip |
Merge branch 'staging' of https://github.com/NixOS/nixpkgs
Diffstat (limited to 'nixpkgs/pkgs/development/compilers/go/1.21.nix')
-rw-r--r-- | nixpkgs/pkgs/development/compilers/go/1.21.nix | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/nixpkgs/pkgs/development/compilers/go/1.21.nix b/nixpkgs/pkgs/development/compilers/go/1.21.nix index 6fca091f24d2..e0562ad32b98 100644 --- a/nixpkgs/pkgs/development/compilers/go/1.21.nix +++ b/nixpkgs/pkgs/development/compilers/go/1.21.nix @@ -64,6 +64,10 @@ stdenv.mkDerivation (finalAttrs: { depsTargetTarget = lib.optional stdenv.targetPlatform.isWindows threadsCross.package; + postPatch = '' + patchShebangs . + ''; + patches = [ (substituteAll { src = ./iana-etc-1.17.patch; @@ -88,6 +92,8 @@ stdenv.mkDerivation (finalAttrs: { GOOS = 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; @@ -110,16 +116,14 @@ stdenv.mkDerivation (finalAttrs: { GOROOT_BOOTSTRAP = if useGccGoBootstrap then goBootstrap else "${goBootstrap}/share/go"; - # Note that we use distpack to avoid moving around cross-compiled binaries. - # The paths are slightly different when buildPlatform != hostPlatform and - # distpack handles assembling outputs in the right place, same as the official - # Go binary releases. See also https://pkg.go.dev/cmd/distpack buildPhase = '' runHook preBuild export GOCACHE=$TMPDIR/go-cache # this is compiled into the binary export GOROOT_FINAL=$out/share/go + 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. @@ -128,16 +132,34 @@ stdenv.mkDerivation (finalAttrs: { ulimit -a pushd src - bash make.bash -no-banner -distpack + ./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,bin} - tar -C $out/share -x -z -f "pkg/distpack/go${finalAttrs.version}.$GOOS-$GOARCH.tar.gz" - ln -s $out/share/go/bin/* $out/bin + mkdir -p $GOROOT_FINAL + cp -a bin pkg src lib misc api doc go.env $GOROOT_FINAL + mkdir -p $out/bin + ln -s $GOROOT_FINAL/bin/* $out/bin runHook postInstall ''; |