From bc6cfb47500c56bb1c59462e6b6ccb4fb0ba8486 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20Hamb=C3=BCchen?= Date: Sat, 21 Jul 2018 04:40:20 +0200 Subject: [PATCH 1/2] krb5: Add `staticOnly` flag --- pkgs/development/libraries/kerberos/krb5.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkgs/development/libraries/kerberos/krb5.nix b/pkgs/development/libraries/kerberos/krb5.nix index d705aa3388f..8f9c75c441d 100644 --- a/pkgs/development/libraries/kerberos/krb5.nix +++ b/pkgs/development/libraries/kerberos/krb5.nix @@ -3,6 +3,9 @@ # Extra Arguments , type ? "" +# This is called "staticOnly" because krb5 does not support +# builting both static and shared, see below. +, staticOnly ? false }: let @@ -22,6 +25,9 @@ stdenv.mkDerivation rec { 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" From 479dcc3b549dc7378cdb570bf3cb9fba7b9a4d2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20Hamb=C3=BCchen?= Date: Sat, 21 Jul 2018 04:41:01 +0200 Subject: [PATCH 2/2] openssl: Add `static` flag. Its effect on `postInstall` is carefully written to not cause recompilation in the default case. --- pkgs/development/libraries/openssl/default.nix | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/openssl/default.nix b/pkgs/development/libraries/openssl/default.nix index 0251de77d03..746a4445ddb 100644 --- a/pkgs/development/libraries/openssl/default.nix +++ b/pkgs/development/libraries/openssl/default.nix @@ -3,6 +3,7 @@ , fetchpatch , withCryptodev ? false, cryptodevHeaders , enableSSL2 ? false +, static ? false }: with stdenv.lib; @@ -62,7 +63,7 @@ let ''; configureFlags = [ - "shared" + "shared" # "shared" builds both shared and static libraries "--libdir=lib" "--openssldir=etc/ssl" ] ++ stdenv.lib.optionals withCryptodev [ @@ -75,13 +76,16 @@ let enableParallelBuilding = true; - postInstall = '' + postInstall = + stdenv.lib.optionalString (!static) '' # If we're building dynamic libraries, then don't install static # libraries. if [ -n "$(echo $out/lib/*.so $out/lib/*.dylib $out/lib/*.dll)" ]; then rm "$out/lib/"*.a fi + '' + + '' mkdir -p $bin mv $out/bin $bin/