diff options
| author | aszlig <aszlig@redmoonstudios.org> | 2015-10-13 04:33:14 +0200 |
|---|---|---|
| committer | Bjørn Forsman <bjorn.forsman@gmail.com> | 2016-05-09 15:10:27 +0200 |
| commit | c111cc896e7a86575fa16d89fe4183a10ca57dd5 (patch) | |
| tree | bd759c4a6e928c398517e53c889aca0dd78ff7e5 | |
| parent | john: Disable building with -march=native. (diff) | |
| download | nixpkgs-c111cc896e7a86575fa16d89fe4183a10ca57dd5.tar.gz | |
john: Make package work out of the box.
So far it was only possible to run john if you've either copied over the
default configuration over to ~/.john and substitute $JOHN with the
right path or set $JOHN to the store path directly.
Both methods are not really a very good user experience, so we're now
patching in the resulting paths into the default rules/configurations.
This also splits off configuration files into $out/etc/john instead of
putting everything into $out/share/john and now also properly installs
the auxiliary programs into $out/bin.
Closes #8792.
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
Reported-by: devhell <"^"@regexmail.net>
Cc: @offlinehacker
(cherry picked from commit 902bcf1422ecabb6efa771505ba5b6b3c76254c8)
| -rw-r--r-- | pkgs/tools/security/john/default.nix | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/pkgs/tools/security/john/default.nix b/pkgs/tools/security/john/default.nix index 993a3a3bb85b..90ef375b79b6 100644 --- a/pkgs/tools/security/john/default.nix +++ b/pkgs/tools/security/john/default.nix @@ -1,4 +1,6 @@ -{ stdenv, fetchurl, openssl, nss, nspr, kerberos, gmp, zlib, libpcap, re2 }: +{ stdenv, fetchurl, openssl, nss, nspr, kerberos, gmp, zlib, libpcap, re2 +, writeText +}: with stdenv.lib; @@ -11,18 +13,34 @@ stdenv.mkDerivation rec { sha256 = "08q92sfdvkz47rx6qjn7qv57cmlpy7i7rgddapq5384mb413vjds"; }; - buildInputs = [ openssl nss nspr kerberos gmp zlib libpcap re2 ]; - - NIX_CFLAGS_COMPILE = "-DJOHN_SYSTEMWIDE=1"; + postPatch = '' + sed -ri -e ' + s!^(#define\s+CFG_[A-Z]+_NAME\s+).*/!\1"'"$out"'/etc/john/! + /^#define\s+JOHN_SYSTEMWIDE/s!/usr!'"$out"'! + ' src/params.h + sed -ri -e '/^\.include/ { + s!\$JOHN!'"$out"'/etc/john! + s!^(\.include\s*)<([^./]+\.conf)>!\1"'"$out"'/etc/john/\2"! + }' run/*.conf + ''; preConfigure = "cd src"; configureFlags = [ "--disable-native-macro" ]; + buildInputs = [ openssl nss nspr kerberos gmp zlib libpcap re2 ]; + + NIX_CFLAGS_COMPILE = [ "-DJOHN_SYSTEMWIDE=1" ]; + installPhase = '' - mkdir -p "$out/share/john" - mkdir -p "$out/bin" - cp -R ../run/* "$out/share/john" - ln -s "$out/share/john/john" "$out/bin/john" + mkdir -p "$out/etc/john" "$out/share/john" "$out/share/doc/john" + find ../run -mindepth 1 -maxdepth 1 -type f -executable \ + -exec "${stdenv.shell}" "${writeText "john-binary-install.sh" '' + filename="$(basename "$1")" + install -vD "$1" "$out/bin/''${filename%.*}" + ''}" {} \; + cp -vt "$out/etc/john" ../run/*.conf + cp -vt "$out/share/john" ../run/*.chr ../run/password.lst + cp -vrt "$out/share/doc/john" ../doc/* ''; meta = { |
