anchor.diff:      sha1 = "b003e3382607ef2c6d85b51e4ed7a4c0a76b8d5a";
     };
   
  -  patches = (patchesCross false) ++ extraPatches;
  -
  -  buildInputs = stdenv.lib.optional withCryptodev cryptodevHeaders;
  +  patches = 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.
  
positive.code:     else if stdenv.system == "x86_64-solaris" then "./Configure solaris64-x86_64-gcc"
      else "./config";
  
    configureFlags = "shared --libdir=lib --openssldir=etc/ssl" +
      stdenv.lib.optionalString 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)" ]; then
            rm "$out/lib/"*.a
        fi
  
        # remove dependency on Perl at runtime
        rm -rf $out/etc/ssl/misc
      '';
  
    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}"
      '';
  
      postInstall = ''
        # Openssl installs readonly files, which otherwise we can't strip.
        # This could at some stdenv hash change be put out of crossAttrs, too
        chmod -R +w $out
  
        # Remove references to perl, to avoid depending on it at runtime
        rm $out/bin/c_rehash $out/ssl/misc/CA.pl $out/ssl/misc/tsget
      '';
      configureScript = "./Configure";
    } // stdenv.lib.optionalAttrs (opensslCrossSystem == "darwin64-x86_64-cc") {
      CC = "gcc";
    };
  
    meta = {
  
negative.code: { stdenv, fetchurl, perl
  , 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.1o";
  
    src = fetchurl {
      urls = [
  