Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{ 2 lib, 3 stdenv, 4 fetchFromGitHub, 5 autoreconfHook, 6 ant, 7 jdk, 8 perl, 9 stripJavaArchivesHook, 10 afflib, 11 libewf, 12 openssl, 13 zlib, 14}: 15 16stdenv.mkDerivation (finalAttrs: { 17 pname = "sleuthkit"; 18 version = "4.12.1"; # Note: when updating don't forget to also update the rdeps outputHash 19 20 src = fetchFromGitHub { 21 owner = "sleuthkit"; 22 repo = "sleuthkit"; 23 rev = "sleuthkit-${finalAttrs.version}"; 24 hash = "sha256-q51UY2lIcLijycNaq9oQIwUXpp/1mfc3oPN4syOPF44="; 25 }; 26 27 # Fetch libraries using a fixed output derivation 28 rdeps = stdenv.mkDerivation { 29 name = "sleuthkit-${finalAttrs.version}-deps"; 30 inherit (finalAttrs) src; 31 32 nativeBuildInputs = [ 33 ant 34 jdk 35 ]; 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 mkdir -m 755 -p $out/bindings/java 52 cp -r bindings/java/lib $out/bindings/java 53 mkdir -m 755 -p $out/case-uco/java 54 cp -r case-uco/java/lib $out/case-uco/java 55 cp -r $IVY_HOME/lib $out 56 chmod -R 755 $out/lib 57 ''; 58 59 outputHashMode = "recursive"; 60 outputHashAlgo = "sha256"; 61 outputHash = "sha256-mc/KQrwn3xpPI0ngOLcpoQDaJJm/rM8XgaX//5PiRZk="; 62 }; 63 64 postUnpack = '' 65 export IVY_HOME="$NIX_BUILD_TOP/.ant" 66 export ANT_ARGS="-Doffline=true -Ddefault-jar-location=$IVY_HOME/lib" 67 68 # pre-positioning these jar files allows -Doffline=true to work 69 mkdir -p source/{bindings,case-uco}/java $IVY_HOME 70 cp -r ${finalAttrs.rdeps}/bindings/java/lib source/bindings/java 71 chmod -R 755 source/bindings/java 72 cp -r ${finalAttrs.rdeps}/case-uco/java/lib source/case-uco/java 73 chmod -R 755 source/case-uco/java 74 cp -r ${finalAttrs.rdeps}/lib $IVY_HOME 75 chmod -R 755 $IVY_HOME 76 ''; 77 78 postPatch = '' 79 substituteInPlace tsk/img/ewf.cpp --replace libewf_handle_read_random libewf_handle_read_buffer_at_offset 80 ''; 81 82 enableParallelBuilding = true; 83 84 nativeBuildInputs = [ 85 autoreconfHook 86 ant 87 jdk 88 perl 89 stripJavaArchivesHook 90 ]; 91 92 buildInputs = [ 93 afflib 94 libewf 95 openssl 96 zlib 97 ]; 98 99 # Hack to fix the RPATH 100 preFixup = '' 101 rm -rf */.libs 102 ''; 103 104 meta = with lib; { 105 description = "Forensic/data recovery tool"; 106 homepage = "https://www.sleuthkit.org/"; 107 changelog = "https://github.com/sleuthkit/sleuthkit/blob/${finalAttrs.src.rev}/NEWS.txt"; 108 maintainers = with maintainers; [ 109 raskin 110 gfrascadorio 111 ]; 112 platforms = platforms.unix; 113 sourceProvenance = with sourceTypes; [ 114 fromSource 115 binaryBytecode # dependencies 116 ]; 117 license = licenses.ipl10; 118 }; 119})