diff --git a/pkgs/development/libraries/openssl/1.0.1-cygwin64.patch b/pkgs/development/libraries/openssl/1.0.1-cygwin64.patch new file mode 100644 index 000000000000..63112abf3a39 --- /dev/null +++ b/pkgs/development/libraries/openssl/1.0.1-cygwin64.patch @@ -0,0 +1,136 @@ +--- openssl-1.0.1e/config 2014-10-23 15:53:23.436600000 +0200 ++++ openssl-1.0.1e/config 2014-10-23 15:55:33.837000000 +0200 +@@ -832,6 +832,7 @@ + # these are all covered by the catchall below + # *-dgux) OUT="dgux" ;; + mips-sony-newsos4) OUT="newsos4-gcc" ;; ++ x86_64-*-cygwin) OUT="Cygwin-x86_64" ;; + *-*-cygwin_pre1.3) OUT="Cygwin-pre1.3" ;; + *-*-cygwin) OUT="Cygwin" ;; + t3e-cray-unicosmk) OUT="cray-t3e" ;; +--- openssl-1.0.1e/Configure 2013-02-17 17:06:18.682058900 -0600 ++++ openssl-1.0.1e/Configure 2013-02-17 16:38:08.000000000 -0600 +@@ -550,6 +550,7 @@ my %table=( + "Cygwin-pre1.3", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::(unknown):CYGWIN32::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:win32", + "Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall:::CYGWIN32::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_asm}:coff:dlfcn:cygwin-shared:-D_WINDLL:-shared:.dll.a", + "debug-Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -march=i486 -Wall -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -g -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations -Werror:::CYGWIN32:::${no_asm}:dlfcn:cygwin-shared:-D_WINDLL:-shared:.dll.a", ++"Cygwin-x86_64", "gcc:-DTERMIOS -DL_ENDIAN -O3 -Wall:::CYGWIN32::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:mingw64:dlfcn:cygwin-shared:-D_WINDLL:-shared:.dll.a", + + # NetWare from David Ward (dsward@novell.com) + # requires either MetroWerks NLM development tools, or gcc / nlmconv +@@ -1128,7 +1129,7 @@ foreach (sort @experimental) + + my $IsMK1MF=scalar grep /^$target$/,@MK1MF_Builds; + +-$exe_ext=".exe" if ($target eq "Cygwin" || $target eq "DJGPP" || $target =~ /^mingw/); ++$exe_ext=".exe" if ($target =~ /^Cygwin/ || $target eq "DJGPP" || $target =~ /^mingw/); + $exe_ext=".nlm" if ($target =~ /netware/); + $exe_ext=".pm" if ($target =~ /vos/); + $openssldir="/usr/local/ssl" if ($openssldir eq "" and $prefix eq ""); +--- openssl-1.0.1e/Makefile.org 2013-02-11 09:26:04.000000000 -0600 ++++ openssl-1.0.1e/Makefile.org 2013-02-17 16:38:08.000000000 -0600 +@@ -326,9 +326,9 @@ clean-shared: + done; \ + fi; \ + ( set -x; rm -f lib$$i$(SHLIB_EXT) ); \ +- if [ "$(PLATFORM)" = "Cygwin" ]; then \ ++ case "$(PLATFORM)" in Cygwin*) \ + ( set -x; rm -f cyg$$i$(SHLIB_EXT) lib$$i$(SHLIB_EXT).a ); \ +- fi; \ ++ esac; \ + done + + link-shared: +@@ -571,11 +571,7 @@ install_sw: + do \ + if [ -f "$$i" -o -f "$$i.a" ]; then \ + ( echo installing $$i; \ +- if [ "$(PLATFORM)" != "Cygwin" ]; then \ +- cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \ +- chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \ +- mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i; \ +- else \ ++ case "$(PLATFORM)" in Cygwin*) \ + c=`echo $$i | sed 's/^lib\(.*\)\.dll\.a/cyg\1-$(SHLIB_VERSION_NUMBER).dll/'`; \ + cp $$c $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \ + chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \ +@@ -583,7 +579,12 @@ install_sw: + cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \ + chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \ + mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i; \ +- fi ); \ ++ ;; \ ++ *) \ ++ cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \ ++ chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \ ++ mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i; \ ++ esac ); \ + if expr $(PLATFORM) : 'mingw' > /dev/null; then \ + ( case $$i in \ + *crypto*) i=libeay32.dll;; \ +@@ -643,9 +644,9 @@ install_docs: + @pod2man="`cd ./util; ./pod2mantest $(PERL)`"; \ + here="`pwd`"; \ + filecase=; \ +- if [ "$(PLATFORM)" = "DJGPP" -o "$(PLATFORM)" = "Cygwin" -o "$(PLATFORM)" = "mingw" ]; then \ ++ case "$(PLATFORM)" in DJGPP|Cygwin*|mingw*) \ + filecase=-i; \ +- fi; \ ++ esac; \ + set -e; for i in doc/apps/*.pod; do \ + fn=`basename $$i .pod`; \ + sec=`$(PERL) util/extract-section.pl 1 < $$i`; \ +--- openssl-1.0.1e/engines/ccgost/Makefile 2013-02-11 09:26:04.000000000 -0600 ++++ openssl-1.0.1e/engines/ccgost/Makefile 2013-02-17 17:05:47.759290200 -0600 +@@ -45,7 +45,11 @@ install: + set -e; \ + echo installing $(LIBNAME); \ + pfx=lib; \ +- if [ "$(PLATFORM)" != "Cygwin" ]; then \ ++ case "$(PLATFORM)" in Cygwin*) \ ++ sfx=".so"; \ ++ cp cyg$(LIBNAME).dll $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$${pfx}$(LIBNAME)$$sfx.new; \ ++ ;; \ ++ *) \ + case "$(CFLAGS)" in \ + *DSO_BEOS*) sfx=".so";; \ + *DSO_DLFCN*) sfx=`expr "$(SHLIB_EXT)" : '.*\(\.[a-z][a-z]*\)' \| ".so"`;; \ +@@ -54,10 +58,7 @@ install: + *) sfx=".bad";; \ + esac; \ + cp $${pfx}$(LIBNAME)$$sfx $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$${pfx}$(LIBNAME)$$sfx.new; \ +- else \ +- sfx=".so"; \ +- cp cyg$(LIBNAME).dll $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$${pfx}$(LIBNAME)$$sfx.new; \ +- fi; \ ++ esac; \ + chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$${pfx}$(LIBNAME)$$sfx.new; \ + mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$${pfx}$(LIBNAME)$$sfx.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$${pfx}$(LIBNAME)$$sfx; \ + fi +--- openssl-1.0.1i/engines/Makefile 2014-10-23 16:08:19.360200000 +0200 ++++ openssl-1.0.1i/engines/Makefile 2014-10-23 16:10:54.205800000 +0200 +@@ -111,7 +111,11 @@ + for l in $(LIBNAMES); do \ + ( echo installing $$l; \ + pfx=lib; \ +- if [ "$(PLATFORM)" != "Cygwin" ]; then \ ++ case "$(PLATFORM)" in Cygwin*) \ ++ sfx=".so"; \ ++ cp cyg$$l.dll $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new; \ ++ ;; \ ++ *) \ + case "$(CFLAGS)" in \ + *DSO_BEOS*) sfx=".so";; \ + *DSO_DLFCN*) sfx=`expr "$(SHLIB_EXT)" : '.*\(\.[a-z][a-z]*\)' \| ".so"`;; \ +@@ -120,10 +124,7 @@ + *) sfx=".bad";; \ + esac; \ + cp $$pfx$$l$$sfx $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new; \ +- else \ +- sfx=".so"; \ +- cp cyg$$l.dll $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new; \ +- fi; \ ++ esac; \ + chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new; \ + mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx ); \ + done; \ diff --git a/pkgs/development/libraries/openssl/default.nix b/pkgs/development/libraries/openssl/default.nix index 7255e91f282d..7f428fd584b9 100644 --- a/pkgs/development/libraries/openssl/default.nix +++ b/pkgs/development/libraries/openssl/default.nix @@ -35,6 +35,7 @@ let ++ stdenv.lib.optional isDarwin ./darwin-arch.patch; + extraPatches = stdenv.lib.optional stdenv.isCygwin ./1.0.1-cygwin64.patch; in stdenv.mkDerivation { @@ -48,7 +49,7 @@ stdenv.mkDerivation { sha256 = "0x7gvyybmqm4lv62mlhlm80f1rn7il2qh8224rahqv0i15xhnpq9"; }; - patches = patchesCross false; + patches = (patchesCross false) ++ extraPatches; buildInputs = stdenv.lib.optional withCryptodev cryptodevHeaders; @@ -62,12 +63,11 @@ stdenv.mkDerivation { else "./config"; configureFlags = "shared --libdir=lib --openssldir=etc/ssl" + - stdenv.lib.optionalString withCryptodev " -DHAVE_CRYPTODEV -DUSE_CRYPTODEV_DIGESTS" + - stdenv.lib.optionalString (stdenv.system == "x86_64-cygwin") " no-asm"; + stdenv.lib.optionalString withCryptodev " -DHAVE_CRYPTODEV -DUSE_CRYPTODEV_DIGESTS"; - preBuild = stdenv.lib.optionalString (stdenv.system == "x86_64-cygwin") '' - sed -i -e "s|-march=i486|-march=x86-64|g" Makefile - ''; + # CYGXXX: used to be set for cygwin with optionalString. Not needed + # anymore but kept to prevent rebuild. + preBuild = ""; makeFlags = "MANDIR=$(out)/share/man";