parent
4389ae5208
commit
85932bc5a9
@ -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"; |
||||
}) |
||||
} |
||||
|
Loading…
Reference in new issue