Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{ lib 2, stdenv 3, fetchFromGitHub 4, autoreconfHook 5, libewf 6, afflib 7, openssl 8, zlib 9, openjdk 10, perl 11, ant 12}: 13 14stdenv.mkDerivation rec { 15 version = "4.12.0"; 16 pname = "sleuthkit"; 17 18 sleuthsrc = fetchFromGitHub { 19 owner = "sleuthkit"; 20 repo = "sleuthkit"; 21 rev = "${pname}-${version}"; 22 hash = "sha256-NX7LNtor7UQJ6HCDz9wGpxbqrLQTTH9+543hOaQOAz4="; 23 }; 24 25 # Fetch libraries using a fixed output derivation 26 rdeps = stdenv.mkDerivation rec { 27 28 version = "1.0"; 29 pname = "sleuthkit-deps"; 30 nativeBuildInputs = [ 31 openjdk 32 ant 33 ]; 34 35 src = sleuthsrc; 36 37 # unpack, build, install 38 dontConfigure = true; 39 40 buildPhase = '' 41 export IVY_HOME=$NIX_BUILD_TOP/.ant 42 pushd bindings/java 43 ant retrieve-deps 44 popd 45 pushd case-uco/java 46 ant get-ivy-dependencies 47 popd 48 ''; 49 50 installPhase = '' 51 export IVY_HOME=$NIX_BUILD_TOP/.ant 52 mkdir -m 755 -p $out/bindings/java 53 cp -r bindings/java/lib $out/bindings/java 54 mkdir -m 755 -p $out/case-uco/java 55 cp -r case-uco/java/lib $out/case-uco/java 56 cp -r $IVY_HOME/lib $out 57 chmod -R 755 $out/lib 58 ''; 59 60 outputHashMode = "recursive"; 61 outputHash = "0fq7v6zlgybg4v6k9wqjlk4gaqgjrpihbnr182vaqriihflav2s8"; 62 outputHashAlgo = "sha256"; 63 }; 64 65 src = sleuthsrc; 66 67 postPatch = '' 68 substituteInPlace tsk/img/ewf.cpp --replace libewf_handle_read_random libewf_handle_read_buffer_at_offset 69 ''; 70 71 enableParallelBuilding = true; 72 73 nativeBuildInputs = [ 74 autoreconfHook 75 openjdk 76 perl 77 ant 78 rdeps 79 ]; 80 81 buildInputs = [ 82 libewf 83 afflib 84 openssl 85 zlib 86 ]; 87 88 # Hack to fix the RPATH 89 preFixup = '' 90 rm -rf */.libs 91 ''; 92 93 postUnpack = '' 94 export IVY_HOME="$NIX_BUILD_TOP/.ant" 95 export JAVA_HOME="${openjdk}" 96 export ant_args="-Doffline=true -Ddefault-jar-location=$IVY_HOME/lib" 97 98 # pre-positioning these jar files allows -Doffline=true to work 99 mkdir -p source/{bindings,case-uco}/java $IVY_HOME 100 cp -r ${rdeps}/bindings/java/lib source/bindings/java 101 chmod -R 755 source/bindings/java 102 cp -r ${rdeps}/case-uco/java/lib source/case-uco/java 103 chmod -R 755 source/case-uco/java 104 cp -r ${rdeps}/lib $IVY_HOME 105 chmod -R 755 $IVY_HOME 106 ''; 107 108 meta = with lib; { 109 description = "A forensic/data recovery tool"; 110 homepage = "https://www.sleuthkit.org/"; 111 changelog = "https://github.com/sleuthkit/sleuthkit/releases/tag/sleuthkit-${version}"; 112 maintainers = with maintainers; [ raskin gfrascadorio ]; 113 platforms = platforms.linux; 114 sourceProvenance = with sourceTypes; [ 115 fromSource 116 binaryBytecode # dependencies 117 ]; 118 license = licenses.ipl10; 119 }; 120}