From 1a160f714516ae4d6d8af92380b0713fdd2eadf6 Mon Sep 17 00:00:00 2001 From: Justin Bedo Date: Tue, 14 May 2019 14:19:18 +1000 Subject: strip: remove store paths from outputs to minimise closures --- default.nix | 23 ++++++++++++++++++++++- tools/fastqc-check.nix | 10 +++++++--- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/default.nix b/default.nix index 25834a9..03869bc 100644 --- a/default.nix +++ b/default.nix @@ -75,7 +75,28 @@ let # Export nixpkgs and standard library lib pkgs = nixpkgs; lib = nixpkgs.lib // { types = types; shard = callBionix ./lib/shard.nix {};}; - stage = x@{ name, ... }: { multicore = false; } // nixpkgs.stdenvNoCC.mkDerivation (x // {name = "bionix-" + name;}); + stage = x@{ name, stripStorePaths ? true, ... }: + (if stripStorePaths then strip else x: x) ({ multicore = false; } // nixpkgs.stdenvNoCC.mkDerivation (x // {name = "bionix-" + name; })); + strip = drv: drv.overrideAttrs (attrs: { + buildCommand = attrs.buildCommand + '' + + function rewrite { + sed -i 's|/nix/store/[^-]*|/nix/store/00000000000000000000000000000000|g' $1 + } + function rewriteOutput { + if [ -f ''${!1} ] ; then + rewrite ''${!1} + else + for f in $(find ''${!1} -type f) ; do + rewrite $f + done + fi + } + for o in $outputs ; do + rewriteOutput $o + done + ''; + }); # splitting/joining splitFile = file: drv: stage { diff --git a/tools/fastqc-check.nix b/tools/fastqc-check.nix index d33b987..9b6dd96 100644 --- a/tools/fastqc-check.nix +++ b/tools/fastqc-check.nix @@ -9,12 +9,16 @@ input: stage { name = "fastqc-check"; - buildInputs = [ bionix.fastqc.fastqc ]; + buildInputs = [ bionix.fastqc.fastqc pkgs.unzip ]; + stripStorePaths = false; # we do it explicity for fastqc + outputs = [ "out" "zip" ]; buildCommand = '' - mkdir $out fastqc \ - -o $out \ + -o $TMPDIR \ ${optionalString (flags != null) flags} \ ${input} + + sed "s|$(basename ${input})|input|g" *.html > $out + cp *.zip $zip ''; } -- cgit v1.2.3