about summary refs log tree commit diff
path: root/pkgs/development/tools/analysis/retdec
diff options
context:
space:
mode:
authorWill Dietz <w@wdtz.org>2018-02-02 15:00:33 -0600
committerWill Dietz <w@wdtz.org>2018-02-02 16:12:39 -0600
commit5a08309e8d0ad64e2644a7ab23170625820fcb87 (patch)
tree061a7bd3a5b1422e8203fc0615790276dbda3880 /pkgs/development/tools/analysis/retdec
parent0380728ddc419d9950765317da056dd9f12fc0ae (diff)
downloadnixlib-5a08309e8d0ad64e2644a7ab23170625820fcb87.tar
nixlib-5a08309e8d0ad64e2644a7ab23170625820fcb87.tar.gz
nixlib-5a08309e8d0ad64e2644a7ab23170625820fcb87.tar.bz2
nixlib-5a08309e8d0ad64e2644a7ab23170625820fcb87.tar.lz
nixlib-5a08309e8d0ad64e2644a7ab23170625820fcb87.tar.xz
nixlib-5a08309e8d0ad64e2644a7ab23170625820fcb87.tar.zst
nixlib-5a08309e8d0ad64e2644a7ab23170625820fcb87.zip
retdec: separate "support", greatuly reduce size by default
Don't include PE signatures by default,
offer "full" variant containing them if desired.
Diffstat (limited to 'pkgs/development/tools/analysis/retdec')
-rw-r--r--pkgs/development/tools/analysis/retdec/default.nix22
1 files changed, 15 insertions, 7 deletions
diff --git a/pkgs/development/tools/analysis/retdec/default.nix b/pkgs/development/tools/analysis/retdec/default.nix
index 585fc28345a7..f88546163d44 100644
--- a/pkgs/development/tools/analysis/retdec/default.nix
+++ b/pkgs/development/tools/analysis/retdec/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, fetchurl,
+{ stdenv, fetchFromGitHub, fetchurl, fetchzip,
 # Native build inputs
 cmake,
 autoconf, automake, libtool,
@@ -15,6 +15,8 @@ ncurses,
 libffi,
 libxml2,
 zlib,
+# PE (Windows) data, huge space savings if not needed
+withPEPatterns ? false,
 }:
 
 let
@@ -53,9 +55,14 @@ let
     sha256 = "0r97n4n552ns571diz54qsgarihrxvbn7kvyv8wjyfs9ybrldxqj";
   };
 
-  retdec-support = fetchurl {
+  retdec-support = fetchzip {
     url = "https://github.com/avast-tl/retdec-support/releases/download/2017-12-12/retdec-support_2017-12-12.tar.xz";
-    sha256 = "6376af57a77147f1363896963d8c1b3745ddb9a6bcec83d63a5846c3f78aeef9";
+    sha256 = if withPEPatterns then "0pchl7hb42dm0sdbmpr8d3c6xc0lm6cs4p6g6kdb2cr9c99gjzn3"
+                               else "1hcyq6bf4wk739kb53ic2bs71gsbx6zd07pc07lzfnxf8k497mhv";
+    # Removing PE signatures reduces this from 3.8GB -> 642MB (uncompressed)
+    extraPostFetch = stdenv.lib.optionalString (!withPEPatterns) ''
+      rm -rf $out/generic/yara_patterns/static-code/pe
+    '';
   };
 in stdenv.mkDerivation rec {
   name = "retdec-${version}";
@@ -90,13 +97,14 @@ in stdenv.mkDerivation rec {
     find . -wholename "*/deps/openssl/CMakeLists.txt" -print0 | \
       xargs -0 sed -i -e 's|OPENSSL_URL .*)|OPENSSL_URL ${openssl})|'
 
+    cat > cmake/install-share.sh <<EOF
+      #!/bin/sh
+      mkdir -p $out/share/retdec/
+      ln -s ${retdec-support} $out/share/retdec/support
+    EOF
     chmod +x cmake/*.sh
     patchShebangs cmake/*.sh
 
-    sed -i cmake/install-share.sh \
-      -e 's|WGET_PARAMS.*|cp ${retdec-support} "$INSTALL_PATH/$ARCH_NAME"|' \
-      -e '/echo "RUN: wget/,+7d'
-
     substituteInPlace scripts/unpack.sh --replace '	upx -d' '	${upx}/bin/upx -d'
     substituteInPlace scripts/config.sh --replace /usr/bin/time ${time}/bin/time
   '';