{ stdenv, fetchurl, ps, ncurses, zlib, perl, openssl }:

# Note: zlib is not required; MySQL can use an internal zlib.

stdenv.mkDerivation rec {
  name = "mysql-5.1.73";

  src = fetchurl {
    url = "mirror://mysql/MySQL-5.1/${name}.tar.gz";
    sha256 = "1dfwi4ck0vq6sdci6gz0031s7zz5lc3pddqlgm0292s00l9y5sq5";
  };

  buildInputs = [ ncurses zlib perl openssl ] ++ stdenv.lib.optional stdenv.isLinux ps;

  configureFlags = [
    "--enable-thread-safe-client"
    "--with-ssl=${openssl}"
    "--with-embedded-server"
    "--with-plugins=max-no-ndb"
    "--with-unix-socket-path=/run/mysqld/mysqld.sock"
  ] ++ stdenv.lib.optional (stdenv.system == "x86_64-linux") " --with-lib-ccflags=-fPIC";

  NIX_CFLAGS_COMPILE = if stdenv.system == "x86_64-linux" then "-fPIC" else "";
  NIX_CFLAGS_CXXFLAGS = if stdenv.system == "x86_64-linux" then "-fPIC" else "";
  NIX_LDFLAGS = stdenv.lib.optionalString stdenv.isLinux "-lgcc_s";

  patches = [ ./abi_check.patch ];

  postInstall =
    ''
      ln -s mysqld_safe $out/bin/mysqld
      rm -rf $out/mysql-test $out/sql-bench $out/share/info
    '';

  passthru.mysqlVersion = "5.1";

  meta = {
    homepage = http://www.mysql.com/;
    description = "The world's most popular open source database";
    platforms = stdenv.lib.platforms.all;
  };
}
