diff --git a/pkgs/servers/sql/postgresql/8.4.x.nix b/pkgs/servers/sql/postgresql/8.4.x.nix index 4c72dbfd448..66933f2ad42 100644 --- a/pkgs/servers/sql/postgresql/8.4.x.nix +++ b/pkgs/servers/sql/postgresql/8.4.x.nix @@ -1,31 +1,10 @@ -{ stdenv, fetchurl, zlib, ncurses, readline, openssl }: +{ callPackage, fetchurl, ... } @ args: -let version = "8.4.22"; in - -stdenv.mkDerivation rec { - name = "postgresql-${version}"; +callPackage ./generic.nix (args // rec { + version = "8.4.22"; src = fetchurl { - url = "mirror://postgresql/source/v${version}/${name}.tar.bz2"; + url = "mirror://postgresql/source/v${version}/postgresql-${version}.tar.bz2"; sha256 = "09iqr9sldiq7jz1rdnywp2wv36lxy5m8kch3vpchd1s4fz75c7aw"; }; - - buildInputs = [ zlib ncurses readline openssl ]; - - LC_ALL = "C"; - - configureFlags = [ "--with-openssl" ]; - - patches = [ ./less-is-more.patch ]; - - passthru = { inherit readline; }; - - meta = with stdenv.lib; { - homepage = http://www.postgresql.org/; - description = "A powerful, open source object-relational database system"; - license = licenses.postgresql; - maintainers = with maintaiers; [ ocharles ]; - platforms = platforms.unix; - hydraPlatforms = platforms.linux; - }; -} +}) diff --git a/pkgs/servers/sql/postgresql/generic.nix b/pkgs/servers/sql/postgresql/generic.nix new file mode 100644 index 00000000000..d7fd28ccb68 --- /dev/null +++ b/pkgs/servers/sql/postgresql/generic.nix @@ -0,0 +1,92 @@ +{ stdenv, bison, flex +, gettext + +# Optional Dependencies +, kerberos ? null, pam ? null, openldap ? null, openssl ? null, readline ? null +, libossp_uuid ? null, libxml2 ? null, libxslt ? null, zlib ? null + +# Extra Arguments +, blockSizeKB ? 8, segmentSizeGB ? 1 +, walBlockSizeKB ? 8, walSegmentSizeMB ? 16 + +# Version specific arguments +, version, src +, ... +}: + +with stdenv; +let + optKerberos = shouldUsePkg kerberos; + optPam = shouldUsePkg pam; + optOpenldap = shouldUsePkg openldap; + optOpenssl = shouldUsePkg openssl; + optReadline = shouldUsePkg readline; + optLibossp_uuid = shouldUsePkg libossp_uuid; + optLibxml2 = shouldUsePkg libxml2; + optLibxslt = shouldUsePkg libxslt; + optZlib = shouldUsePkg zlib; +in +with stdenv.lib; +stdenv.mkDerivation rec { + name = "postgresql-${version}"; + + inherit src; + + patches = [ ./less-is-more.patch ]; + + nativeBuildInputs = [ bison flex ]; + buildInputs = [ + gettext optKerberos optPam optOpenldap optOpenssl optReadline + optLibossp_uuid optLibxml2 optLibxslt optZlib + ]; + + #LC_ALL = "C"; + + configureFlags = [ + (mkOther "sysconfdir" "/etc") + (mkOther "localstatedir" "/var") + (mkEnable true "integer-datetimes" null) + (mkEnable true "nls" null) + (mkWith true "pgport" "5432") + (mkEnable true "shared" null) + (mkEnable true "rpath" null) + (mkEnable true "spinlocks" null) + (mkEnable false "debug" null) + (mkEnable false "profiling" null) + (mkEnable false "coverage" null) + (mkEnable false "dtrace" null) + (mkWith true "blocksize" (toString blockSizeKB)) + (mkWith true "segsize" (toString segmentSizeGB)) + (mkWith true "wal-blocksize" (toString walBlockSizeKB)) + (mkWith true "wal-segsize" (toString walSegmentSizeMB)) + (mkEnable true "autodepend" null) + (mkEnable false "cassert" null) + (mkEnable true "thread-safety" null) + (mkWith false "tcl" null) # Maybe enable some day + (mkWith false "perl" null) # Maybe enable some day + (mkWith false "python" null) # Maybe enable some day + (mkWith (optKerberos != null) "gssapi" null) + (mkWith false "krb5" null) + (mkWith (optPam != null) "pam" null) + (mkWith (optOpenldap != null) "ldap" null) + (mkWith false "bonjour" null) + (mkWith (optOpenssl != null) "openssl" null) + (mkWith (optReadline != null) "readline" null) + (mkWith false "libedit-preferred" null) + (mkWith (optLibossp_uuid != null) "ossp-uuid" null) + (mkWith (optLibxml2 != null) "libxml" null) + (mkWith (optLibxslt != null) "libxslt" null) + (mkWith (optZlib != null) "zlib" null) + ]; + + meta = with stdenv.lib; { + homepage = http://www.postgresql.org/; + description = "A powerful, open source object-relational database system"; + license = licenses.postgresql; + maintainers = with maintaiers; [ ocharles ]; + platforms = platforms.unix; + hydraPlatforms = platforms.linux; + }; + + passthru = { inherit readline; }; +}