summary refs log tree commit diff
path: root/pkgs/development/libraries/openssl/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/libraries/openssl/default.nix')
-rw-r--r--pkgs/development/libraries/openssl/default.nix33
1 files changed, 22 insertions, 11 deletions
diff --git a/pkgs/development/libraries/openssl/default.nix b/pkgs/development/libraries/openssl/default.nix
index dd5e03c33f92..633e43ac6a68 100644
--- a/pkgs/development/libraries/openssl/default.nix
+++ b/pkgs/development/libraries/openssl/default.nix
@@ -6,17 +6,8 @@ let
   opensslCrossSystem = stdenv.lib.attrByPath [ "openssl" "system" ]
     (throw "openssl needs its platform name cross building" null)
     stdenv.cross;
-in
-
-stdenv.mkDerivation {
-  inherit name;
 
-  src = fetchurl {
-    url = "http://www.openssl.org/source/${name}.tar.gz";
-    sha256 = "1xw0ffzmr4wbnb0glywgks375dvq8x87pgxmwx6vhgvkflkxqqg3";
-  };
-
-  patches =
+  patchesCross = isCross:
     [ # Allow the location of the X509 certificate file (the CA
       # bundle) to be set through the environment variable
       # ‘OPENSSL_X509_CERT_FILE’.  This is necessary because the
@@ -26,7 +17,25 @@ stdenv.mkDerivation {
       # environment variable is ignored for setuid binaries.
       ./cert-file.patch
     ]
-    ++ stdenv.lib.optional stdenv.isDarwin ./darwin-arch.patch;
+
+    ++ (stdenv.lib.optionals (isCross && opensslCrossSystem == "hurd-x86")
+         [ ./cert-file-path-max.patch # merge with `cert-file.patch' eventually
+           ./gnu.patch                # submitted upstream
+         ])
+
+    ++ (stdenv.lib.optional stdenv.isDarwin ./darwin-arch.patch);
+  
+in
+
+stdenv.mkDerivation {
+  inherit name;
+
+  src = fetchurl {
+    url = "http://www.openssl.org/source/${name}.tar.gz";
+    sha256 = "1xw0ffzmr4wbnb0glywgks375dvq8x87pgxmwx6vhgvkflkxqqg3";
+  };
+
+  patches = patchesCross false;
 
   buildNativeInputs = [ perl ];
 
@@ -49,6 +58,8 @@ stdenv.mkDerivation {
     ''; # */
 
   crossAttrs = {
+    patches = patchesCross true;
+
     preConfigure=''
       # It's configure does not like --build or --host
       export configureFlags="--libdir=lib --cross-compile-prefix=${stdenv.cross.config}- shared ${opensslCrossSystem}"