From c1338b3b06b00edcade5e81985e8d6823dd7a40e Mon Sep 17 00:00:00 2001 From: "William A. Kennington III" Date: Wed, 5 Aug 2015 16:23:03 -0700 Subject: [PATCH] buildGoPackage: Remove references to the go compiler to reduce closure size for binaries --- pkgs/development/go-modules/generic/default.nix | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pkgs/development/go-modules/generic/default.nix b/pkgs/development/go-modules/generic/default.nix index e07fecf7dfd..021b57c0a19 100644 --- a/pkgs/development/go-modules/generic/default.nix +++ b/pkgs/development/go-modules/generic/default.nix @@ -22,6 +22,12 @@ if disabled then throw "${name} not supported for go ${go.meta.branch}" else let args = lib.filterAttrs (name: _: name != "extraSrcs") args'; + + removeReferences = [ go ]; + + removeExpr = refs: lib.flip lib.concatMapStrings refs (ref: '' + | sed "s,${ref},$(echo "${ref}" | sed "s,$NIX_STORE/[^-]*,$NIX_STORE/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee,"),g" \ + ''); in go.stdenv.mkDerivation ( @@ -146,10 +152,17 @@ go.stdenv.mkDerivation ( dir="$NIX_BUILD_TOP/go/bin" [ -e "$dir" ] && cp -r $dir $out + while read file; do + cat $file ${removeExpr removeReferences} > $file.tmp + mv $file.tmp $file + chmod +x $file + done < <(find $out/bin -type f 2>/dev/null) runHook postInstall ''; + disallowedReferences = [ go ] ++ lib.optional (!dontRenameImports) govers; + passthru = passthru // lib.optionalAttrs (goPackageAliases != []) { inherit goPackageAliases; }; meta = {