diff --git a/pkgs/servers/sql/postgresql/generic.nix b/pkgs/servers/sql/postgresql/generic.nix index a2826aa012f7..54658d76b959 100644 --- a/pkgs/servers/sql/postgresql/generic.nix +++ b/pkgs/servers/sql/postgresql/generic.nix @@ -53,7 +53,11 @@ let , libkrb5 # icu - , icuSupport ? true + # Building with icu in pkgsStatic gives tons of "undefined reference" errors like this: + # /nix/store/452lkaak37d3mzzn3p9ak7aa3wzhdqaj-icu4c-74.2-x86_64-unknown-linux-musl/lib/libicuuc.a(chariter.ao): + # (.data.rel.ro._ZTIN6icu_7417CharacterIteratorE[_ZTIN6icu_7417CharacterIteratorE]+0x0): + # undefined reference to `vtable for __cxxabiv1::__si_class_type_info' + , icuSupport ? !stdenv.hostPlatform.isStatic , icu # JIT @@ -71,7 +75,11 @@ let , gettext # PAM - , pamSupport ? stdenv.hostPlatform.isLinux + # Building with linux-pam in pkgsStatic gives a few "undefined reference" errors like this: + # /nix/store/3s55icpsbc36sgn7sa8q3qq4z6al6rlr-linux-pam-static-x86_64-unknown-linux-musl-1.6.1/lib/libpam.a(pam_audit.o): + # in function `pam_modutil_audit_write':(.text+0x571): + # undefined reference to `audit_close' + , pamSupport ? stdenv.hostPlatform.isLinux && !stdenv.hostPlatform.isStatic , linux-pam # PL/Perl @@ -267,7 +275,7 @@ let # because there is a realistic use-case for extensions to locate the /lib directory to # load other shared modules. remove-references-to -t "$dev" -t "$doc" -t "$man" "$out/bin/postgres" - + '' + lib.optionalString (!stdenv'.hostPlatform.isStatic) '' if [ -z "''${dontDisableStatic:-}" ]; then # Remove static libraries in case dynamic are available. for i in $lib/lib/*.a; do @@ -278,6 +286,7 @@ let fi done fi + '' + '' # The remaining static libraries are libpgcommon.a, libpgport.a and related. # Those are only used when building e.g. extensions, so go to $dev. moveToOutput "lib/*.a" "$dev" @@ -306,7 +315,7 @@ let # Also see /doc/stdenv/platform-notes.chapter.md doCheck = false; # Tests just get stuck on macOS 14.x for v13 and v14 - doInstallCheck = !(stdenv'.hostPlatform.isDarwin && olderThan "15"); + doInstallCheck = !(stdenv'.hostPlatform.isDarwin && olderThan "15") && !(stdenv'.hostPlatform.isStatic); installCheckTarget = "check-world"; passthru = let