diff options
Diffstat (limited to 'pkgs/servers/sql/postgresql')
18 files changed, 60 insertions, 106 deletions
diff --git a/pkgs/servers/sql/postgresql/12.nix b/pkgs/servers/sql/postgresql/12.nix index 9e0388be04513..d29fc7683048f 100644 --- a/pkgs/servers/sql/postgresql/12.nix +++ b/pkgs/servers/sql/postgresql/12.nix @@ -1,10 +1,4 @@ import ./generic.nix { version = "12.18"; hash = "sha256-T5kZcl2UHOmGjgf+HtHTqGdIWZtIM4ZUdYOSi3TDkYo="; - muslPatches = { - icu-collations-hack = { - url = "https://git.alpinelinux.org/aports/plain/testing/postgresql12/icu-collations-hack.patch?id=d5227c91adda59d4e7f55f13468f0314e8869174"; - hash = "sha256-wuwjvGHArkRNwFo40g3p43W32OrJohretlt6iSRlJKg="; - }; - }; } diff --git a/pkgs/servers/sql/postgresql/13.nix b/pkgs/servers/sql/postgresql/13.nix index a4870812acdb7..c81e15bc7f685 100644 --- a/pkgs/servers/sql/postgresql/13.nix +++ b/pkgs/servers/sql/postgresql/13.nix @@ -2,10 +2,6 @@ import ./generic.nix { version = "13.14"; hash = "sha256-uN8HhVGJiWC9UA3F04oXfpkFN234H+fytmChQH+mpe0="; muslPatches = { - icu-collations-hack = { - url = "https://git.alpinelinux.org/aports/plain/main/postgresql14/icu-collations-hack.patch?id=56999e6d0265ceff5c5239f85fdd33e146f06cb7"; - hash = "sha256-wuwjvGHArkRNwFo40g3p43W32OrJohretlt6iSRlJKg="; - }; disable-test-collate-icu-utf8 = { url = "https://git.alpinelinux.org/aports/plain/main/postgresql13/disable-test-collate.icu.utf8.patch?id=69faa146ec9fff3b981511068f17f9e629d4688b"; hash = "sha256-jS/qxezaiaKhkWeMCXwpz1SDJwUWn9tzN0uKaZ3Ph2Y="; diff --git a/pkgs/servers/sql/postgresql/14.nix b/pkgs/servers/sql/postgresql/14.nix index 2de876cf4ad6c..c96ddd3ddc808 100644 --- a/pkgs/servers/sql/postgresql/14.nix +++ b/pkgs/servers/sql/postgresql/14.nix @@ -2,10 +2,6 @@ import ./generic.nix { version = "14.11"; hash = "sha256-pnC9fc4i3K1Cl7JhE2s7HUoJpvVBcZViqhTKY78paKg="; muslPatches = { - icu-collations-hack = { - url = "https://git.alpinelinux.org/aports/plain/main/postgresql14/icu-collations-hack.patch?id=56999e6d0265ceff5c5239f85fdd33e146f06cb7"; - hash = "sha256-wuwjvGHArkRNwFo40g3p43W32OrJohretlt6iSRlJKg="; - }; disable-test-collate-icu-utf8 = { url = "https://git.alpinelinux.org/aports/plain/main/postgresql14/disable-test-collate.icu.utf8.patch?id=56999e6d0265ceff5c5239f85fdd33e146f06cb7"; hash = "sha256-jXe23AxnFjEl+TZQm4R7rStk2Leo08ctxMNmu1xr5zM="; diff --git a/pkgs/servers/sql/postgresql/15.nix b/pkgs/servers/sql/postgresql/15.nix index f633dc9750850..00dfc0cbbc19d 100644 --- a/pkgs/servers/sql/postgresql/15.nix +++ b/pkgs/servers/sql/postgresql/15.nix @@ -1,10 +1,4 @@ import ./generic.nix { version = "15.6"; hash = "sha256-hFUUbtnGnJOlfelUrq0DAsr60DXCskIXXWqh4X68svs="; - muslPatches = { - icu-collations-hack = { - url = "https://git.alpinelinux.org/aports/plain/main/postgresql15/icu-collations-hack.patch?id=f424e934e6d076c4ae065ce45e734aa283eecb9c"; - hash = "sha256-HgtmhF4OJYU9macGJbTB9PjQi/yW7c3Akm3U0niWs8I="; - }; - }; } diff --git a/pkgs/servers/sql/postgresql/16.nix b/pkgs/servers/sql/postgresql/16.nix index 6a6420643b31a..cdc37b7c62f5f 100644 --- a/pkgs/servers/sql/postgresql/16.nix +++ b/pkgs/servers/sql/postgresql/16.nix @@ -1,10 +1,4 @@ import ./generic.nix { version = "16.2"; hash = "sha256-RG6IKU28LJCFq0twYaZG+mBLS+wDUh1epnHC5a2bKVI="; - muslPatches = { - icu-collations-hack = { - url = "https://git.alpinelinux.org/aports/plain/main/postgresql16/icu-collations-hack.patch?id=08a24be262339fd093e641860680944c3590238e"; - hash = "sha256-+urQdVIlADLdDPeT68XYv5rljhbK8M/7mPZn/cF+FT0="; - }; - }; } diff --git a/pkgs/servers/sql/postgresql/default.nix b/pkgs/servers/sql/postgresql/default.nix index d11a2d06b2d26..ff9f4f4150a22 100644 --- a/pkgs/servers/sql/postgresql/default.nix +++ b/pkgs/servers/sql/postgresql/default.nix @@ -15,7 +15,6 @@ let in self.lib.nameValuePair attrName (import path { inherit jitSupport self; - thisAttr = attrName; }) ) versions; diff --git a/pkgs/servers/sql/postgresql/generic.nix b/pkgs/servers/sql/postgresql/generic.nix index 302350edeb5e0..705407a932560 100644 --- a/pkgs/servers/sql/postgresql/generic.nix +++ b/pkgs/servers/sql/postgresql/generic.nix @@ -16,10 +16,10 @@ let , self, newScope, buildEnv # source specification - , version, hash, muslPatches + , version, hash, muslPatches ? {} # for tests - , testers, nixosTests, thisAttr + , testers, nixosTests # JIT , jitSupport @@ -45,7 +45,8 @@ let stdenv' = if jitSupport then llvmPackages.stdenv else stdenv; in stdenv'.mkDerivation (finalAttrs: { - inherit pname version; + inherit version; + pname = pname + lib.optionalString jitSupport "-jit"; src = fetchurl { url = "mirror://postgresql/source/v${version}/${pname}-${version}.tar.bz2"; @@ -80,16 +81,15 @@ let ] ++ lib.optionals jitSupport [ llvmPackages.llvm.dev nukeReferences patchelf ]; - enableParallelBuilding = !stdenv'.isDarwin; + enableParallelBuilding = true; separateDebugInfo = true; buildFlags = [ "world" ]; - env.NIX_CFLAGS_COMPILE = "-I${libxml2.dev}/include/libxml2"; - - # Otherwise it retains a reference to compiler and fails; see #44767. TODO: better. - preConfigure = "CC=${stdenv'.cc.targetPrefix}cc"; + # Makes cross-compiling work when xml2-config can't be executed on the host. + # Fixed upstream in https://github.com/postgres/postgres/commit/0bc8cebdb889368abdf224aeac8bc197fe4c9ae6 + env.NIX_CFLAGS_COMPILE = lib.optionalString (olderThan "13") "-I${libxml2.dev}/include/libxml2"; configureFlags = [ "--with-openssl" @@ -109,12 +109,11 @@ let ++ lib.optionals stdenv'.isLinux [ "--with-pam" ]; patches = [ - (if atLeast "16" then ./patches/disable-normalize_exec_path.patch - else ./patches/disable-resolve_symlinks.patch) + (if atLeast "16" then ./patches/relative-to-symlinks-16+.patch else ./patches/relative-to-symlinks.patch) ./patches/less-is-more.patch - ./patches/hardcode-pgxs-path.patch + ./patches/paths-for-split-outputs.patch ./patches/specify_pkglibdir_at_runtime.patch - ./patches/findstring.patch + ./patches/paths-with-postgresql-suffix.patch (substituteAll { src = ./patches/locale-binary-path.patch; @@ -125,16 +124,14 @@ let # Using fetchurl instead of fetchpatch on purpose: https://github.com/NixOS/nixpkgs/issues/240141 map fetchurl (lib.attrValues muslPatches) ) ++ lib.optionals stdenv'.isLinux [ - (if atLeast "13" then ./patches/socketdir-in-run-13.patch else ./patches/socketdir-in-run.patch) + (if atLeast "13" then ./patches/socketdir-in-run-13+.patch else ./patches/socketdir-in-run.patch) ]; installTargets = [ "install-world" ]; - LC_ALL = "C"; - postPatch = '' # Hardcode the path to pgxs so pg_config returns the path in $out - substituteInPlace "src/common/config_info.c" --replace HARDCODED_PGXS_PATH "$out/lib" + substituteInPlace "src/common/config_info.c" --subst-var out '' + lib.optionalString jitSupport '' # Force lookup of jit stuff in $out instead of $lib substituteInPlace src/backend/jit/jit.c --replace pkglib_path \"$out/lib\" @@ -201,6 +198,7 @@ let # autodetection doesn't seem to able to find this, but it's there. checkTarget = "check"; + # TODO: Remove after the next set of minor releases on May 9th 2024 preCheck = # On musl, comment skip the following tests, because they break due to # ! ERROR: could not load library "/build/postgresql-11.5/tmp_install/nix/store/...-postgresql-11.5-lib/lib/libpqwalreceiver.so": Error loading shared library libpq.so.5: No such file or directory (needed by /build/postgresql-11.5/tmp_install/nix/store/...-postgresql-11.5-lib/lib/libpqwalreceiver.so) @@ -246,10 +244,18 @@ let this.pkgs; tests = { - postgresql = nixosTests.postgresql-wal-receiver.${thisAttr}; + postgresql-wal-receiver = import ../../../../nixos/tests/postgresql-wal-receiver.nix { + inherit (stdenv) system; + pkgs = self; + package = this; + }; pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; } // lib.optionalAttrs jitSupport { - postgresql-jit = nixosTests.postgresql-jit.${thisAttr}; + postgresql-jit = import ../../../../nixos/tests/postgresql-jit.nix { + inherit (stdenv) system; + pkgs = self; + package = this; + }; }; }; @@ -272,7 +278,9 @@ let # resulting LLVM IR isn't platform-independent this doesn't give you much. # In fact, I tried to test the result in a VM-test, but as soon as JIT was used to optimize # a query, postgres would coredump with `Illegal instruction`. - broken = jitSupport && (stdenv.hostPlatform != stdenv.buildPlatform); + broken = (jitSupport && stdenv.hostPlatform != stdenv.buildPlatform) + # Allmost all tests fail FATAL errors for v12 and v13 + || (jitSupport && stdenv.hostPlatform.isMusl && olderThan "14"); }; }); diff --git a/pkgs/servers/sql/postgresql/patches/disable-resolve_symlinks.patch b/pkgs/servers/sql/postgresql/patches/disable-resolve_symlinks.patch deleted file mode 100644 index fadeea90ac4b6..0000000000000 --- a/pkgs/servers/sql/postgresql/patches/disable-resolve_symlinks.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- a/src/common/exec.c 2014-09-04 20:19:12.236057588 +0200 -+++ b/src/common/exec.c 2014-09-04 20:19:50.550251633 +0200 -@@ -218,6 +218,9 @@ - static int - resolve_symlinks(char *path) - { -+ // On NixOS we *want* stuff relative to symlinks. -+ return 0; -+ - #ifdef HAVE_READLINK - struct stat buf; - char orig_wd[MAXPGPATH], diff --git a/pkgs/servers/sql/postgresql/patches/hardcode-pgxs-path.patch b/pkgs/servers/sql/postgresql/patches/hardcode-pgxs-path.patch deleted file mode 100644 index 6cd449769baac..0000000000000 --- a/pkgs/servers/sql/postgresql/patches/hardcode-pgxs-path.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -Naur postgresql-9.6.1-orig/src/common/config_info.c postgresql-9.6.1/src/common/config_info.c ---- postgresql-9.6.1-orig/src/common/config_info.c 2016-11-22 21:39:29.231929261 +0100 -+++ postgresql-9.6.1/src/common/config_info.c 2016-11-22 23:36:53.685163543 +0100 -@@ -118,7 +118,10 @@ - i++; - - configdata[i].name = pstrdup("PGXS"); -+ strlcpy(path, "HARDCODED_PGXS_PATH", sizeof(path)); -+/* commented out to be able to point to nix $out path - get_pkglib_path(my_exec_path, path); -+*/ - strlcat(path, "/pgxs/src/makefiles/pgxs.mk", sizeof(path)); - cleanup_path(path); - configdata[i].setting = pstrdup(path); diff --git a/pkgs/servers/sql/postgresql/patches/less-is-more.patch b/pkgs/servers/sql/postgresql/patches/less-is-more.patch index f14af9dc22073..a72d1a28f9cea 100644 --- a/pkgs/servers/sql/postgresql/patches/less-is-more.patch +++ b/pkgs/servers/sql/postgresql/patches/less-is-more.patch @@ -1,6 +1,5 @@ -diff -Naur postgresql-9.6.1-orig/src/include/fe_utils/print.h postgresql-9.6.1/src/include/fe_utils/print.h ---- postgresql-9.6.1-orig/src/include/fe_utils/print.h 2016-11-22 21:39:29.148932827 +0100 -+++ postgresql-9.6.1/src/include/fe_utils/print.h 2016-11-22 21:39:36.283626258 +0100 +--- a/src/include/fe_utils/print.h ++++ b/src/include/fe_utils/print.h @@ -18,7 +18,7 @@ /* This is not a particularly great place for this ... */ diff --git a/pkgs/servers/sql/postgresql/patches/locale-binary-path.patch b/pkgs/servers/sql/postgresql/patches/locale-binary-path.patch index 08e90bce750ca..8068683ab64bf 100644 --- a/pkgs/servers/sql/postgresql/patches/locale-binary-path.patch +++ b/pkgs/servers/sql/postgresql/patches/locale-binary-path.patch @@ -1,5 +1,3 @@ -diff --git a/src/backend/commands/collationcmds.c b/src/backend/commands/collationcmds.c -index fcfc02d..d011394 100644 --- a/src/backend/commands/collationcmds.c +++ b/src/backend/commands/collationcmds.c @@ -611,7 +611,7 @@ pg_import_system_collations(PG_FUNCTION_ARGS) diff --git a/pkgs/servers/sql/postgresql/patches/paths-for-split-outputs.patch b/pkgs/servers/sql/postgresql/patches/paths-for-split-outputs.patch new file mode 100644 index 0000000000000..2134f7e81a870 --- /dev/null +++ b/pkgs/servers/sql/postgresql/patches/paths-for-split-outputs.patch @@ -0,0 +1,11 @@ +--- a/src/common/config_info.c ++++ b/src/common/config_info.c +@@ -118,7 +118,7 @@ + i++; + + configdata[i].name = pstrdup("PGXS"); ++ strlcpy(path, "@out@/lib", sizeof(path)); +- get_pkglib_path(my_exec_path, path); + strlcat(path, "/pgxs/src/makefiles/pgxs.mk", sizeof(path)); + cleanup_path(path); + configdata[i].setting = pstrdup(path); diff --git a/pkgs/servers/sql/postgresql/patches/findstring.patch b/pkgs/servers/sql/postgresql/patches/paths-with-postgresql-suffix.patch index 959bf6a6caa4c..04d2f556e0bff 100644 --- a/pkgs/servers/sql/postgresql/patches/findstring.patch +++ b/pkgs/servers/sql/postgresql/patches/paths-with-postgresql-suffix.patch @@ -1,19 +1,3 @@ -From: Matthew Bauer <mjbauer95@gmail.com> -Date: Wed, 29 May 2019 22:51:52 -0400 -Subject: [PATCH] Add /postgresql suffix for Nix outputs - -Nix outputs put the `name' in each store path like -/nix/store/...-<name>. This was confusing the Postgres make script -because it thought its data directory already had postgresql in its -directory. This lead to Postgres installing all of its fils in -$out/share. To fix this, we just look for postgres or psql in the part -after the / using make's notdir. - ---- -From: Matthew Bauer <mjbauer95@gmail.com> -Date: Wed, 29 May 2019 22:51:52 -0400 -Subject: [PATCH] Add /postgresql suffix for Nix outputs - Nix outputs put the `name' in each store path like /nix/store/...-<name>. This was confusing the Postgres make script because it thought its data directory already had postgresql in its @@ -22,8 +6,6 @@ $out/share. To fix this, we just look for postgres or psql in the part after the / using make's notdir. --- -diff --git a/src/Makefile.global.in b/src/Makefile.global.in -index b9d86acaa9..bce05464c3 100644 --- a/src/Makefile.global.in +++ b/src/Makefile.global.in @@ -102,15 +102,15 @@ datarootdir := @datarootdir@ diff --git a/pkgs/servers/sql/postgresql/patches/disable-normalize_exec_path.patch b/pkgs/servers/sql/postgresql/patches/relative-to-symlinks-16+.patch index 349fd4203348a..996072ebd2fbd 100644 --- a/pkgs/servers/sql/postgresql/patches/disable-normalize_exec_path.patch +++ b/pkgs/servers/sql/postgresql/patches/relative-to-symlinks-16+.patch @@ -1,10 +1,11 @@ +On NixOS we *want* stuff relative to symlinks. +--- --- a/src/common/exec.c +++ b/src/common/exec.c -@@ -238,6 +238,9 @@ +@@ -238,6 +238,8 @@ static int normalize_exec_path(char *path) { -+ // On NixOS we *want* stuff relative to symlinks. + return 0; + /* diff --git a/pkgs/servers/sql/postgresql/patches/relative-to-symlinks.patch b/pkgs/servers/sql/postgresql/patches/relative-to-symlinks.patch new file mode 100644 index 0000000000000..c9b199baf960c --- /dev/null +++ b/pkgs/servers/sql/postgresql/patches/relative-to-symlinks.patch @@ -0,0 +1,13 @@ +On NixOS we *want* stuff relative to symlinks. +--- +--- a/src/common/exec.c ++++ b/src/common/exec.c +@@ -218,6 +218,8 @@ + static int + resolve_symlinks(char *path) + { ++ return 0; ++ + #ifdef HAVE_READLINK + struct stat buf; + char orig_wd[MAXPGPATH], diff --git a/pkgs/servers/sql/postgresql/patches/socketdir-in-run-13.patch b/pkgs/servers/sql/postgresql/patches/socketdir-in-run-13+.patch index 72c778b0758ef..fd808b6098249 100644 --- a/pkgs/servers/sql/postgresql/patches/socketdir-in-run-13.patch +++ b/pkgs/servers/sql/postgresql/patches/socketdir-in-run-13+.patch @@ -1,7 +1,5 @@ -diff --git i/src/include/pg_config_manual.h w/src/include/pg_config_manual.h -index 8f3ec6bde1..4fc01e4a0a 100644 ---- i/src/include/pg_config_manual.h -+++ w/src/include/pg_config_manual.h +--- a/src/include/pg_config_manual.h ++++ b/src/include/pg_config_manual.h @@ -201,7 +201,7 @@ * support them yet. */ diff --git a/pkgs/servers/sql/postgresql/patches/socketdir-in-run.patch b/pkgs/servers/sql/postgresql/patches/socketdir-in-run.patch index 969f80ff8fc7f..4932ef69ee360 100644 --- a/pkgs/servers/sql/postgresql/patches/socketdir-in-run.patch +++ b/pkgs/servers/sql/postgresql/patches/socketdir-in-run.patch @@ -1,5 +1,3 @@ -diff --git a/src/include/pg_config_manual.h b/src/include/pg_config_manual.h -index 743401cb96..be5c5f61d2 100644 --- a/src/include/pg_config_manual.h +++ b/src/include/pg_config_manual.h @@ -179,7 +179,7 @@ diff --git a/pkgs/servers/sql/postgresql/patches/specify_pkglibdir_at_runtime.patch b/pkgs/servers/sql/postgresql/patches/specify_pkglibdir_at_runtime.patch index fe95d2ee99f06..b94fc9efcbff8 100644 --- a/pkgs/servers/sql/postgresql/patches/specify_pkglibdir_at_runtime.patch +++ b/pkgs/servers/sql/postgresql/patches/specify_pkglibdir_at_runtime.patch @@ -1,6 +1,5 @@ -diff -ur postgresql-9.5.3-orig/src/port/path.c postgresql-9.5.3/src/port/path.c ---- postgresql-9.5.3-orig/src/port/path.c 2016-05-09 22:50:23.000000000 +0200 -+++ postgresql-9.5.3/src/port/path.c 2016-08-29 22:44:10.507377613 +0200 +--- a/src/port/path.c ++++ b/src/port/path.c @@ -714,7 +714,11 @@ void get_lib_path(const char *my_exec_path, char *ret_path) |