diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2016-02-03 13:54:22 +0100 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2016-02-03 13:54:22 +0100 |
commit | cc2cec63007f6974130a7ba8a491761be5887528 (patch) | |
tree | e8f73e8dd9c39a94b033dab9e3351277f5f7226b /pkgs/development/libraries/openssl/default.nix | |
parent | 788da6894fac5b20d183ce5afbab3bacd7ddeaca (diff) | |
download | nixlib-cc2cec63007f6974130a7ba8a491761be5887528.tar nixlib-cc2cec63007f6974130a7ba8a491761be5887528.tar.gz nixlib-cc2cec63007f6974130a7ba8a491761be5887528.tar.bz2 nixlib-cc2cec63007f6974130a7ba8a491761be5887528.tar.lz nixlib-cc2cec63007f6974130a7ba8a491761be5887528.tar.xz nixlib-cc2cec63007f6974130a7ba8a491761be5887528.tar.zst nixlib-cc2cec63007f6974130a7ba8a491761be5887528.zip |
openssl: Unify 1.0.1 and 1.0.2 expressions
Diffstat (limited to 'pkgs/development/libraries/openssl/default.nix')
-rw-r--r-- | pkgs/development/libraries/openssl/default.nix | 193 |
1 files changed, 102 insertions, 91 deletions
diff --git a/pkgs/development/libraries/openssl/default.nix b/pkgs/development/libraries/openssl/default.nix index e37bdf855dc5..669b4810f85f 100644 --- a/pkgs/development/libraries/openssl/default.nix +++ b/pkgs/development/libraries/openssl/default.nix @@ -1,104 +1,115 @@ { stdenv, fetchurl, perl -, withCryptodev ? false, cryptodevHeaders -}: +, withCryptodev ? false, cryptodevHeaders }: with stdenv.lib; + let - opensslCrossSystem = attrByPath [ "openssl" "system" ] - (throw "openssl needs its platform name cross building" null) - stdenv.cross; -in -stdenv.mkDerivation rec { - name = "openssl-1.0.1r"; - - src = fetchurl { - urls = [ - "http://www.openssl.org/source/${name}.tar.gz" - "http://openssl.linux-mirror.org/source/${name}.tar.gz" + + opensslCrossSystem = stdenv.cross.openssl.system or + (throw "openssl needs its platform name cross building"); + + common = { version, sha256 }: stdenv.mkDerivation rec { + name = "openssl-${version}"; + + src = fetchurl { + url = "http://www.openssl.org/source/${name}.tar.gz"; + inherit sha256; + }; + + outputs = [ "out" "man" ]; + + patches = + [ ./use-etc-ssl-certs.patch ] + ++ optional stdenv.isCygwin ./1.0.1-cygwin64.patch + ++ optional (stdenv.isDarwin || (stdenv ? cross && stdenv.cross.libc == "libSystem")) ./darwin-arch.patch; + + nativeBuildInputs = [ perl ]; + buildInputs = stdenv.lib.optional withCryptodev cryptodevHeaders; + + # On x86_64-darwin, "./config" misdetects the system as + # "darwin-i386-cc". So specify the system type explicitly. + configureScript = + if stdenv.system == "x86_64-darwin" then "./Configure darwin64-x86_64-cc" + else if stdenv.system == "x86_64-solaris" then "./Configure solaris64-x86_64-gcc" + else "./config"; + + configureFlags = [ + "shared" + "--libdir=lib" + "--openssldir=etc/ssl" + ] ++ stdenv.lib.optionals withCryptodev [ + "-DHAVE_CRYPTODEV" + "-DUSE_CRYPTODEV_DIGESTS" ]; - sha256 = "0iik7a3b0mrfrxzngdf7ywfscg9inbw77y0jp2ccw0gdap9xhjvq"; - }; - outputs = [ "out" "man" ]; - - patches = - [ ./use-etc-ssl-certs.patch ] - ++ optional stdenv.isCygwin ./1.0.1-cygwin64.patch - ++ optional (stdenv.isDarwin || (stdenv ? cross && stdenv.cross.libc == "libSystem")) ./darwin-arch.patch; - - nativeBuildInputs = [ perl ]; - buildInputs = stdenv.lib.optional withCryptodev cryptodevHeaders; - - # On x86_64-darwin, "./config" misdetects the system as - # "darwin-i386-cc". So specify the system type explicitly. - configureScript = - if stdenv.system == "x86_64-darwin" then "./Configure darwin64-x86_64-cc" - else if stdenv.system == "x86_64-solaris" then "./Configure solaris64-x86_64-gcc" - else "./config"; - - configureFlags = [ - "shared" - "--libdir=lib" - "--openssldir=etc/ssl" - ] ++ stdenv.lib.optionals withCryptodev [ - "-DHAVE_CRYPTODEV" - "-DUSE_CRYPTODEV_DIGESTS" - ]; - - makeFlags = [ - "MANDIR=$(out)/share/man" - ]; - - # Parallel building is broken in OpenSSL. - enableParallelBuilding = false; - - postInstall = '' - # 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 - - # remove dependency on Perl at runtime - rm -r $out/etc/ssl/misc $out/bin/c_rehash - - rmdir $out/etc/ssl/certs - ''; - - postFixup = '' - # Check to make sure we don't depend on perl - if grep -r '${perl}' $out; then - echo "Found an erroneous dependency on perl ^^^" >&2 - exit 1 - fi - ''; - - setupHook = builtins.toFile "openssl-setup-hook" - '' - export SSL_CERT_FILE=/no-cert-file.crt - ''; + makeFlags = [ + "MANDIR=$(out)/share/man" + ]; + + # Parallel building is broken in OpenSSL. + enableParallelBuilding = false; + + postInstall = '' + # 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 - crossAttrs = { - # upstream patch: https://rt.openssl.org/Ticket/Display.html?id=2558 - postPatch = '' - sed -i -e 's/[$][(]CROSS_COMPILE[)]windres/$(WINDRES)/' Makefile.shared + # remove dependency on Perl at runtime + rm -r $out/etc/ssl/misc $out/bin/c_rehash + + rmdir $out/etc/ssl/{certs,private} ''; - preConfigure='' - # It's configure does not like --build or --host - export configureFlags="${concatStringsSep " " (configureFlags ++ [ opensslCrossSystem ])}" - # WINDRES and RANLIB need to be prefixed when cross compiling; - # the openssl configure script doesn't do that for us - export WINDRES=${stdenv.cross.config}-windres - export RANLIB=${stdenv.cross.config}-ranlib + + postFixup = '' + # Check to make sure we don't depend on perl + if grep -r '${perl}' $out; then + echo "Found an erroneous dependency on perl ^^^" >&2 + exit 1 + fi ''; - configureScript = "./Configure"; + + setupHook = builtins.toFile "openssl-setup-hook" + '' + export SSL_CERT_FILE=/no-cert-file.crt + ''; + + crossAttrs = { + # upstream patch: https://rt.openssl.org/Ticket/Display.html?id=2558 + postPatch = '' + sed -i -e 's/[$][(]CROSS_COMPILE[)]windres/$(WINDRES)/' Makefile.shared + ''; + preConfigure='' + # It's configure does not like --build or --host + export configureFlags="${concatStringsSep " " (configureFlags ++ [ opensslCrossSystem ])}" + # WINDRES and RANLIB need to be prefixed when cross compiling; + # the openssl configure script doesn't do that for us + export WINDRES=${stdenv.cross.config}-windres + export RANLIB=${stdenv.cross.config}-ranlib + ''; + configureScript = "./Configure"; + }; + + meta = { + homepage = http://www.openssl.org/; + description = "A cryptographic library that implements the SSL and TLS protocols"; + platforms = stdenv.lib.platforms.all; + maintainers = [ stdenv.lib.maintainers.simons ]; + priority = 10; # resolves collision with ‘man-pages’ + }; + }; + +in { + + openssl_1_0_1 = common { + version = "1.0.1r"; + sha256 = "0iik7a3b0mrfrxzngdf7ywfscg9inbw77y0jp2ccw0gdap9xhjvq"; }; - meta = { - homepage = http://www.openssl.org/; - description = "A cryptographic library that implements the SSL and TLS protocols"; - platforms = stdenv.lib.platforms.all; - maintainers = [ stdenv.lib.maintainers.simons ]; - priority = 10; # resolves collision with ‘man-pages’ + openssl_1_0_2 = common { + version = "1.0.2f"; + sha256 = "932b4ee4def2b434f85435d9e3e19ca8ba99ce9a065a61524b429a9d5e9b2e9c"; }; + } |