From 732495017b9ec6e0105c0c31aa20c9b397ef16cb Mon Sep 17 00:00:00 2001 From: Dan Peebles Date: Thu, 7 Jan 2016 22:57:41 -0500 Subject: [PATCH] perl-5.20: break dependency on the compiler that built it This is a major closure size reduction on Darwin, and probably a less significant one on Linux. On darwin, retaining the compiler means adding clang and its dependency llvm to the perl closure, which gives us ~400MB of extra stuff. Considering that Nix itself depends on this version of perl, that makes cutting a new Nix release rather unpleasaont Darwin. After this patch, I was able to get the `nixUnstable` closure down to 21MB after feeding it into a .tar.xz (123MB before compression). There's still room for improvement but this should carry us over until we split outputs. --- pkgs/development/interpreters/perl/5.20/default.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkgs/development/interpreters/perl/5.20/default.nix b/pkgs/development/interpreters/perl/5.20/default.nix index 9cc8af5f427..c91a43963d4 100644 --- a/pkgs/development/interpreters/perl/5.20/default.nix +++ b/pkgs/development/interpreters/perl/5.20/default.nix @@ -93,6 +93,14 @@ stdenv.mkDerivation rec { substituteInPlace dist/PathTools/Cwd.pm --replace "'/bin/pwd'" "'$(type -tP pwd)'" ''; + # Inspired by nuke-references, which I can't depend on because it uses perl. Perhaps it should just use sed :) + postInstall = '' + self=$(echo $out | sed -n "s|^$NIX_STORE/\\([a-z0-9]\{32\}\\)-.*|\1|p") + + sed -i "/$self/b; s|$NIX_STORE/[a-z0-9]\{32\}-|$NIX_STORE/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-|g" "$out"/lib/perl5/*/*/Config.pm + sed -i "/$self/b; s|$NIX_STORE/[a-z0-9]\{32\}-|$NIX_STORE/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-|g" "$out"/lib/perl5/*/*/Config_heavy.pl + ''; + setupHook = ./setup-hook.sh; passthru.libPrefix = "lib/perl5/site_perl";