anchor.diff:            rm "$out/lib/"*.a
         fi
   
  -    '' +
  -    ''
         mkdir -p $bin
       '' + lib.optionalString (!stdenv.hostPlatform.isWindows)
  +      # Fix bin/c_rehash's perl interpreter line
  +      #
  +      # - openssl 1_0_2: embeds a reference to buildPackages.perl
  +      # - openssl 1_1:   emits "#!/usr/bin/env perl"
  +      #
  +      # In the case of openssl_1_0_2, reset the invalid reference and let the
  +      # interpreter hook take care of it.
  +      #
  +      # In both cases, if withPerl = false, the intepreter line is expected be
  +      # "#!/usr/bin/env perl"
       ''
  -      substituteInPlace $out/bin/c_rehash --replace ${buildPackages.perl} ${perl}
  +      substituteInPlace $out/bin/c_rehash --replace ${buildPackages.perl}/bin/perl "/usr/bin/env perl"
       '' +
       ''
         mv $out/bin $bin/
  
positive.code:     separateDebugInfo = !(stdenv.hostPlatform.useLLVM or false) && stdenv.cc.isGNU;
  
      nativeBuildInputs = [ perl ];
      buildInputs = lib.optional withCryptodev cryptodev;
  
      # TODO(@Ericson2314): Improve with mass rebuild
      configurePlatforms = [];
  
negative.code: , enableSSL2 ? false
  , enableSSL3 ? false
  , static ? stdenv.hostPlatform.isStatic
  # Used to avoid cross compiling perl, for example, in darwin bootstrap tools.
  # This will cause c_rehash to refer to perl via the environment, but otherwise
  # will produce a perfectly functional openssl binary and library.
  , withPerl ? true
  }:
  
  assert (
    lib.assertMsg (!withPerl -> stdenv.hostPlatform != stdenv.buildPlatform)
    "withPerl should not be disabled unless cross compiling"
  );
  
  # Note: this package is used for bootstrapping fetchurl, and thus
  # cannot use fetchpatch! All mutable patches (generated by GitHub or
  