lol

Merge pull request #138894 from gfrascadorio/master

sleuthkit: add build for JNI libraries

authored by

Michael Raskin and committed by
GitHub
dd4beee6 b22fec9c

+66 -10
+66 -10
pkgs/tools/system/sleuthkit/default.nix
··· 1 - { lib, stdenv, fetchFromGitHub, autoreconfHook, libewf, afflib, openssl, zlib }: 1 + { lib, stdenv, fetchFromGitHub, autoreconfHook, libewf, afflib, openssl, zlib, openjdk, perl, ant }: 2 2 3 3 stdenv.mkDerivation rec { 4 4 version = "4.11.0"; 5 5 pname = "sleuthkit"; 6 6 7 - src = fetchFromGitHub { 7 + sleuthsrc = fetchFromGitHub { 8 8 owner = "sleuthkit"; 9 9 repo = "sleuthkit"; 10 10 rev = "${pname}-${version}"; 11 - sha256 = "sha256-cY55zK6N3tyCLBJtZn4LhK9kLkikJjg640Pm/NA0ALY="; 11 + sha256 = "1dh06k8grrj3wcx3h9m490p69bw41dz6cv8j5j1drpldmv67k3ki"; 12 12 }; 13 13 14 + # Fetch libraries using a fixed output derivation 15 + rdeps = stdenv.mkDerivation rec { 16 + 17 + version = "1.0"; 18 + pname = "sleuthkit-deps"; 19 + nativeBuildInputs = [ openjdk ant ]; 20 + 21 + src = sleuthsrc; 22 + 23 + # unpack, build, install 24 + dontConfigure = true; 25 + 26 + buildPhase = '' 27 + export IVY_HOME=$NIX_BUILD_TOP/.ant 28 + pushd bindings/java 29 + ant retrieve-deps 30 + popd 31 + pushd case-uco/java 32 + ant get-ivy-dependencies 33 + popd 34 + ''; 35 + 36 + installPhase = '' 37 + export IVY_HOME=$NIX_BUILD_TOP/.ant 38 + mkdir -m 755 -p $out/bindings/java 39 + cp -r bindings/java/lib $out/bindings/java 40 + mkdir -m 755 -p $out/case-uco/java 41 + cp -r case-uco/java/lib $out/case-uco/java 42 + cp -r $IVY_HOME/lib $out 43 + chmod -R 755 $out/lib 44 + ''; 45 + 46 + outputHashMode = "recursive"; 47 + outputHash = "0fq7v6zlgybg4v6k9wqjlk4gaqgjrpihbnr182vaqriihflav2s8"; 48 + outputHashAlgo = "sha256"; 49 + }; 50 + 51 + src = sleuthsrc; 52 + 14 53 postPatch = '' 15 54 substituteInPlace tsk/img/ewf.cpp --replace libewf_handle_read_random libewf_handle_read_buffer_at_offset 16 55 ''; 17 56 18 57 enableParallelBuilding = true; 19 58 20 - nativeBuildInputs = [ autoreconfHook ]; 59 + nativeBuildInputs = [ autoreconfHook openjdk perl ant rdeps ]; 21 60 buildInputs = [ libewf afflib openssl zlib ]; 22 61 23 - # Hack to fix the RPATH. 24 - preFixup = "rm -rf */.libs"; 62 + # Hack to fix the RPATH 63 + preFixup = '' 64 + rm -rf */.libs 65 + ''; 25 66 26 - meta = { 67 + postUnpack = '' 68 + export IVY_HOME="$NIX_BUILD_TOP/.ant" 69 + export JAVA_HOME="${openjdk}" 70 + export ant_args="-Doffline=true -Ddefault-jar-location=$IVY_HOME/lib" 71 + 72 + # pre-positioning these jar files allows -Doffline=true to work 73 + mkdir -p source/{bindings,case-uco}/java $IVY_HOME 74 + cp -r ${rdeps}/bindings/java/lib source/bindings/java 75 + chmod -R 755 source/bindings/java 76 + cp -r ${rdeps}/case-uco/java/lib source/case-uco/java 77 + chmod -R 755 source/case-uco/java 78 + cp -r ${rdeps}/lib $IVY_HOME 79 + chmod -R 755 $IVY_HOME 80 + ''; 81 + 82 + meta = with lib; { 27 83 description = "A forensic/data recovery tool"; 28 84 homepage = "https://www.sleuthkit.org/"; 29 - maintainers = [ lib.maintainers.raskin ]; 30 - platforms = lib.platforms.linux; 31 - license = lib.licenses.ipl10; 85 + maintainers = with maintainers; [ raskin gfrascadorio ]; 86 + platforms = platforms.linux; 87 + license = licenses.ipl10; 32 88 }; 33 89 }