summary refs log tree commit diff
path: root/pkgs/development/libraries/kerberos
diff options
context:
space:
mode:
authorWilliam A. Kennington III <william@wkennington.com>2015-05-28 00:53:47 -0700
committerWilliam A. Kennington III <william@wkennington.com>2015-05-28 02:20:08 -0700
commit85932bc5a998060e76090273b51d35133a7a2dbb (patch)
tree7127b2ef72a1ef9d6286f0e3c64a71c44f582d5a /pkgs/development/libraries/kerberos
parent4389ae5208ec9b7e80b3b0e4ee10e2709333519f (diff)
downloadnixlib-85932bc5a998060e76090273b51d35133a7a2dbb.tar
nixlib-85932bc5a998060e76090273b51d35133a7a2dbb.tar.gz
nixlib-85932bc5a998060e76090273b51d35133a7a2dbb.tar.bz2
nixlib-85932bc5a998060e76090273b51d35133a7a2dbb.tar.lz
nixlib-85932bc5a998060e76090273b51d35133a7a2dbb.tar.xz
nixlib-85932bc5a998060e76090273b51d35133a7a2dbb.tar.zst
nixlib-85932bc5a998060e76090273b51d35133a7a2dbb.zip
krb5: 1.13.1 -> 1.13.2
Diffstat (limited to 'pkgs/development/libraries/kerberos')
-rw-r--r--pkgs/development/libraries/kerberos/krb5.nix120
1 files changed, 103 insertions, 17 deletions
diff --git a/pkgs/development/libraries/kerberos/krb5.nix b/pkgs/development/libraries/kerberos/krb5.nix
index 41c570ee554e..c60ff03aa67a 100644
--- a/pkgs/development/libraries/kerberos/krb5.nix
+++ b/pkgs/development/libraries/kerberos/krb5.nix
@@ -1,41 +1,127 @@
-{ stdenv, fetchurl, pkgconfig, perl, ncurses, yacc, openssl, openldap, bootstrap_cmds }:
+{ stdenv, fetchurl, pkgconfig, perl
+, yacc, bootstrap_cmds
 
+# Optional Dependencies
+, libedit ? null, readline ? null, ncurses ? null, libverto ? null
+, openldap ? null, db ? null
+
+# Crypto Dependencies
+, openssl ? null, nss ? null, nspr ? null
+
+# Extra Arguments
+, prefix ? ""
+}:
+
+with stdenv;
 let
-  pname = "krb5";
-  version = "1.13.1";
-  name = "${pname}-${version}";
-  webpage = http://web.mit.edu/kerberos/;
-in
+  libOnly = prefix == "lib";
+
+  optOpenssl = shouldUsePkg openssl;
+  optNss = shouldUsePkg nss;
+  optNspr = shouldUsePkg nspr;
+  optLibedit = if libOnly then null else shouldUsePkg libedit;
+  optReadline = if libOnly then null else shouldUsePkg readline;
+  optNcurses = if libOnly then null else shouldUsePkg ncurses;
+  optLibverto = shouldUsePkg libverto;
+  optOpenldap = if libOnly then null else shouldUsePkg openldap;
+  optDb = if libOnly then null else shouldUsePkg db;
+
+  # Prefer the openssl implementation
+  cryptoStr = if optOpenssl != null then "openssl"
+    else if optNss != null && optNspr != null then "nss"
+    else "builtin";
+
+  cryptoInputs = {
+    "openssl" = [ optOpenssl ];
+    "nss" = [ optNss optNspr ];
+    "builtin" = [ ];
+  }.${cryptoStr};
+
+  tlsStr = if optOpenssl != null then "openssl"
+    else "no";
 
-stdenv.mkDerivation (rec {
-  inherit name;
+  tlsInputs = {
+    "openssl" = [ optOpenssl ];
+    "no" = [ ];
+  }.${tlsStr};
+
+  # Libedit is less buggy in krb5, readline breaks tests
+  lineParserStr = if optLibedit != null then "libedit"
+    else if optReadline != null && optNcurses != null then "readline"
+    else "no";
+
+  lineParserInputs = {
+    "libedit" = [ optLibedit ];
+    "readline" = [ optReadline optNcurses ];
+    "no" = [ ];
+  }.${lineParserStr};
+in
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  name = "${prefix}krb5-${version}";
+  version = "1.13.2";
 
   src = fetchurl {
-    url = "${webpage}dist/krb5/1.13/${name}-signed.tar";
-    sha256 = "0gk6jvr64rf6l4xcyxn8i3fr5d1j7dhqvwyv3vw2qdkzz7yjkxjd";
+    url = "${meta.homepage}dist/krb5/1.13/krb5-${version}-signed.tar";
+    sha256 = "1qbdzyrws7d0q4filsibh28z54pd5l987jr0ygv43iq9085w6a75";
   };
 
-  buildInputs = [ pkgconfig perl ncurses yacc openssl openldap ]
+  nativeBuildInputs = [ pkgconfig perl ];
+  buildInputs = [ yacc optOpenssl optLibverto optOpenldap ]
+    ++ cryptoInputs ++ tlsInputs ++ lineParserInputs
     # Provides the mig command used by the build scripts
-    ++ stdenv.lib.optional stdenv.isDarwin bootstrap_cmds ;
+    ++ stdenv.lib.optional stdenv.isDarwin bootstrap_cmds;
 
   unpackPhase = ''
     tar -xf $src
-    tar -xzf ${name}.tar.gz
-    cd ${name}/src
+    tar -xzf krb5-${version}.tar.gz
+    cd krb5-${version}/src
   '';
 
-  configureFlags = [ "--with-tcl=no" ];
+  configureFlags = [
+    (mkOther                                "sysconfdir"          "/etc")
+    (mkOther                                "localstatedir"       "/var")
+    (mkEnable false                         "athena"              null)
+    (mkWith   false                         "vague-errors"        null)
+    (mkWith   true                          "crypto-impl"         cryptoStr)
+    (mkWith   true                          "pkinit-crypto-impl"  cryptoStr)
+    (mkWith   true                          "tls-impl"            tlsStr)
+    (mkEnable true                          "aesni"               null)
+    (mkEnable true                          "kdc-lookaside-cache" null)
+    (mkEnable (optOpenssl != null)          "pkinit"              null)
+    (mkWith   (lineParserStr == "libedit")  "libedit"             null)
+    (mkWith   (lineParserStr == "readline") "readline"            null)
+    (mkWith   (optLibverto != null)         "system-verto"        null)
+    (mkWith   (optOpenldap != null)         "ldap"                null)
+    (mkWith   false                         "tcl"                 null)
+    (mkWith   (optDb != null)               "system-db"           null)
+  ];
+
+  buildPhase = optionalString libOnly ''
+    (cd util; make)
+    (cd include; make)
+    (cd lib; make)
+    (cd build-tools; make)
+  '';
+
+  installPhase = optionalString libOnly ''
+    mkdir -p $out/{bin,include/{gssapi,gssrpc,kadm5,krb5},lib/pkgconfig,sbin,share/{et,man/man1}}
+    (cd util; make install)
+    (cd include; make install)
+    (cd lib; make install)
+    (cd build-tools; make install)
+    rm -rf $out/{bin,sbin,share}
+  '';
 
   enableParallelBuilding = true;
 
   meta = with stdenv.lib; {
+    homepage = http://web.mit.edu/kerberos/;
     description = "MIT Kerberos 5";
-    homepage = webpage;
     license = "MPL";
     platforms = platforms.unix;
     maintainers = with maintainers; [ wkennington ];
   };
 
   passthru.implementation = "krb5";
-})
+}