mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-28 16:42:09 +00:00
ef4d78aded
keyutils breaks with bionic. since it's an optional dependency, it seems safe to just disable it with libkrb5 (which otherwise works fine with bionic libc).
84 lines
2.5 KiB
Nix
84 lines
2.5 KiB
Nix
{ stdenv, fetchurl, pkgconfig, perl, yacc, bootstrap_cmds
|
|
, openssl, openldap, libedit, keyutils
|
|
|
|
# Extra Arguments
|
|
, type ? ""
|
|
# This is called "staticOnly" because krb5 does not support
|
|
# builting both static and shared, see below.
|
|
, staticOnly ? false
|
|
}:
|
|
|
|
let
|
|
libOnly = type == "lib";
|
|
in
|
|
with stdenv.lib;
|
|
stdenv.mkDerivation rec {
|
|
name = "${type}krb5-${version}";
|
|
majorVersion = "1.15";
|
|
version = "${majorVersion}.2";
|
|
|
|
src = fetchurl {
|
|
url = "${meta.homepage}dist/krb5/${majorVersion}/krb5-${version}.tar.gz";
|
|
sha256 = "0zn8s7anb10hw3nzwjz7vg10fgmmgvwnibn2zrn3nppjxn9f6f8n";
|
|
};
|
|
|
|
outputs = [ "out" "dev" ];
|
|
|
|
configureFlags = [ "--with-tcl=no" "--localstatedir=/var/lib"]
|
|
# krb5's ./configure does not allow passing --enable-shared and --enable-static at the same time.
|
|
# See https://bbs.archlinux.org/viewtopic.php?pid=1576737#p1576737
|
|
++ optional staticOnly [ "--enable-static" "--disable-shared" ]
|
|
++ optional stdenv.isFreeBSD ''WARN_CFLAGS=""''
|
|
++ optionals (stdenv.buildPlatform != stdenv.hostPlatform)
|
|
[ "krb5_cv_attr_constructor_destructor=yes,yes"
|
|
"ac_cv_func_regcomp=yes"
|
|
"ac_cv_printf_positional=yes"
|
|
];
|
|
|
|
nativeBuildInputs = [ pkgconfig perl ]
|
|
++ optional (!libOnly) yacc
|
|
# Provides the mig command used by the build scripts
|
|
++ optional stdenv.isDarwin bootstrap_cmds;
|
|
buildInputs = [ openssl ]
|
|
++ optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.libc != "bionic") [ keyutils ]
|
|
++ optionals (!libOnly) [ openldap libedit ];
|
|
|
|
preConfigure = "cd ./src";
|
|
|
|
buildPhase = optionalString libOnly ''
|
|
MAKE="make -j $NIX_BUILD_CORES -l $NIX_BUILD_CORES"
|
|
(cd util; $MAKE)
|
|
(cd include; $MAKE)
|
|
(cd lib; $MAKE)
|
|
(cd build-tools; $MAKE)
|
|
'';
|
|
|
|
installPhase = optionalString libOnly ''
|
|
mkdir -p "$out"/{bin,sbin,lib/pkgconfig,share/{et,man/man1}} \
|
|
"$dev"/include/{gssapi,gssrpc,kadm5,krb5}
|
|
(cd util; $MAKE install)
|
|
(cd include; $MAKE install)
|
|
(cd lib; $MAKE install)
|
|
(cd build-tools; $MAKE install)
|
|
${postInstall}
|
|
'';
|
|
|
|
# not via outputBin, due to reference from libkrb5.so
|
|
postInstall = ''
|
|
moveToOutput bin "$dev"
|
|
'';
|
|
|
|
enableParallelBuilding = true;
|
|
doCheck = false; # fails with "No suitable file for testing purposes"
|
|
|
|
meta = {
|
|
description = "MIT Kerberos 5";
|
|
homepage = http://web.mit.edu/kerberos/;
|
|
license = licenses.mit;
|
|
platforms = platforms.unix;
|
|
maintainers = with maintainers; [ wkennington ];
|
|
};
|
|
|
|
passthru.implementation = "krb5";
|
|
}
|