anchor.diff: -{ lib, stdenv, fetchurl, openssl, cyrus_sasl, db, groff, libtool }:
  +{ lib, stdenv, fetchurl, openssl, db, groff, libtool
  +, withCyrusSasl ? true
  +, cyrus_sasl
  +}:
   
   stdenv.mkDerivation rec {
     pname = "openldap";
  
positive.code:   ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
      "--with-yielding_select=yes"
      "ac_cv_func_memcmp_working=yes"
    ] ++ lib.optional (openssl == null) "--without-tls"
      ++ lib.optional (cyrus_sasl == null) "--without-cyrus-sasl"
      ++ lib.optional stdenv.isFreeBSD "--with-pic";
  
    postBuild = ''
  
negative.code:     "moduledir=$(out)/lib/modules"
    ];
  
    # 1. Libraries left in the build location confuse `patchelf --shrink-rpath`
    #    Delete these to let patchelf discover the right path instead.
    #    FIXME: that one can be removed when https://github.com/NixOS/patchelf/pull/98
    #    is in Nixpkgs patchelf.
    # 2. Fixup broken libtool for openssl and cyrus_sasl (if it is not disabled)
    preFixup = ''
      rm -r $out/var
      rm -r libraries/*/.libs
      rm -r contrib/slapd-modules/passwd/*/.libs
      for f in $out/lib/libldap.la $out/lib/libldap_r.la; do
        substituteInPlace "$f" --replace '-lssl' '-L${openssl.out}/lib -lssl'
    '' + lib.optionalString withCyrusSasl ''
        substituteInPlace "$f" --replace '-lsasl2' '-L${cyrus_sasl.out}/lib -lsasl2'
    '' + ''
      done
    '';
  
    postInstall = ''
  