diff options
author | William A. Kennington III <william@wkennington.com> | 2015-05-01 19:13:14 -0700 |
---|---|---|
committer | William A. Kennington III <william@wkennington.com> | 2015-05-01 19:13:14 -0700 |
commit | e9ee5f99615d0980538e60b1079c8438f8d8135c (patch) | |
tree | e64b32ccde31b25649acd9df9e554437558432de /pkgs/development/libraries/libssh2 | |
parent | 42663e41a527f0c4ebdfbf220cba1cc85197a596 (diff) | |
download | nixpkgs-e9ee5f99615d0980538e60b1079c8438f8d8135c.tar nixpkgs-e9ee5f99615d0980538e60b1079c8438f8d8135c.tar.gz nixpkgs-e9ee5f99615d0980538e60b1079c8438f8d8135c.tar.bz2 nixpkgs-e9ee5f99615d0980538e60b1079c8438f8d8135c.tar.lz nixpkgs-e9ee5f99615d0980538e60b1079c8438f8d8135c.tar.xz nixpkgs-e9ee5f99615d0980538e60b1079c8438f8d8135c.tar.zst nixpkgs-e9ee5f99615d0980538e60b1079c8438f8d8135c.zip |
libssh2: Modernize Build
Diffstat (limited to 'pkgs/development/libraries/libssh2')
-rw-r--r-- | pkgs/development/libraries/libssh2/default.nix | 64 |
1 files changed, 59 insertions, 5 deletions
diff --git a/pkgs/development/libraries/libssh2/default.nix b/pkgs/development/libraries/libssh2/default.nix index daeb39bc982..dfaee909620 100644 --- a/pkgs/development/libraries/libssh2/default.nix +++ b/pkgs/development/libraries/libssh2/default.nix @@ -1,19 +1,73 @@ -{stdenv, fetchurlBoot, openssl, zlib}: +{ stdenv, fetchurl +# Optional Dependencies +, zlib ? null + +# Crypto Dependencies +, openssl ? null, libgcrypt ? null +}: + +let + mkFlag = trueStr: falseStr: cond: name: val: + if cond == null then null else + "--${if cond != false then trueStr else falseStr}${name}${if val != null && cond != false then "=${val}" else ""}"; + mkEnable = mkFlag "enable-" "disable-"; + mkWith = mkFlag "with-" "without-"; + mkOther = mkFlag "" "" true; + + shouldUsePkg = pkg: if pkg != null && stdenv.lib.any (x: x == stdenv.system) pkg.meta.platforms then pkg else null; + + # Prefer openssl + cryptoStr = if shouldUsePkg openssl != null then "openssl" + else if shouldUsePkg libgcrypt != null then "libgcrypt" + else "none"; + crypto = { + openssl = openssl; + libgcrypt = libgcrypt; + none = null; + }.${cryptoStr}; + + optZlib = shouldUsePkg zlib; +in + +assert crypto != null; + +with stdenv.lib; stdenv.mkDerivation rec { name = "libssh2-1.5.0"; - src = fetchurlBoot { + src = fetchurl { url = "${meta.homepage}/download/${name}.tar.gz"; sha256 = "1z6hfgak00yz0azx6lk6n688mywhdxx03j6sdf95p3w6ssnnn6c3"; }; - buildInputs = [ openssl zlib ]; + buildInputs = [ crypto optZlib ]; + + configureFlags = [ + (mkWith (cryptoStr == "openssl") "openssl" null) + (mkWith (cryptoStr == "libgcrypt") "libgcrypt" null) + (mkWith false "wicng" null) + (mkWith optZlib "libz" null) + (mkEnable false "crypt-none" null) + (mkEnable false "mac-none" null) + (mkEnable true "gex-new" null) + (mkEnable false "debug" null) + (mkEnable false "examples-build" null) + ]; + + postInstall = optionalString (optZlib != null) '' + sed -i 's,\(-lz\),-L${optZlib}/lib \1,' $out/lib/libssh2.la + '' + optionalString (cryptoStr == "openssl") '' + sed -i 's,\(-lssl\|-lcrypto\),-L${openssl}/lib \1,' $out/lib/libssh2.la + '' + optionalString (cryptoStr == "libgcrypt") '' + sed -i 's,\(-lgcrypt\),-L${libgcrypt}/lib \1,' $out/lib/libssh2.la + ''; meta = { description = "A client-side C library implementing the SSH2 protocol"; homepage = http://www.libssh2.org; - platforms = stdenv.lib.platforms.all; - maintainers = [ stdenv.lib.maintainers.urkud ]; + license = licenses.gpl2; + platforms = platforms.all; + maintainers = with maintainers; [ urkud wkennington ]; }; } |