diff --git a/pkgs/development/python-modules/langgraph-checkpoint-postgres/default.nix b/pkgs/development/python-modules/langgraph-checkpoint-postgres/default.nix index c1ea48e77f52..21b45dcb0d4f 100644 --- a/pkgs/development/python-modules/langgraph-checkpoint-postgres/default.nix +++ b/pkgs/development/python-modules/langgraph-checkpoint-postgres/default.nix @@ -58,10 +58,7 @@ buildPythonPackage rec { "psycopg-pool" ]; - # Temporarily disabled until the following is solved: - # https://github.com/NixOS/nixpkgs/pull/425384 - doCheck = false; - # doCheck = !(stdenvNoCC.hostPlatform.isDarwin); + doCheck = !(stdenvNoCC.hostPlatform.isDarwin); nativeCheckInputs = [ pytest-asyncio diff --git a/pkgs/development/python-modules/pgvector/default.nix b/pkgs/development/python-modules/pgvector/default.nix index 377535d893c8..cc604bc87997 100644 --- a/pkgs/development/python-modules/pgvector/default.nix +++ b/pkgs/development/python-modules/pgvector/default.nix @@ -42,10 +42,6 @@ buildPythonPackage rec { dependencies = [ numpy ]; - # Temporarily disabled until the following is solved: - # https://github.com/NixOS/nixpkgs/pull/425384 - doCheck = false; - nativeCheckInputs = [ asyncpg django diff --git a/pkgs/servers/sql/postgresql/generic.nix b/pkgs/servers/sql/postgresql/generic.nix index 34714a51b731..de6b2d4e7a02 100644 --- a/pkgs/servers/sql/postgresql/generic.nix +++ b/pkgs/servers/sql/postgresql/generic.nix @@ -460,9 +460,12 @@ let "$out/bin/pg_config" > "$dev/nix-support/pg_config.expected" '' + '' - rm "$out/bin/pg_config" - make -C src/common pg_config.env - install -D src/common/pg_config.env "$dev/nix-support/pg_config.env" + rm "$out/bin/pg_config" + make -C src/common pg_config.env + substituteInPlace src/common/pg_config.env \ + --replace-fail "$out" "@out@" \ + --replace-fail "$man" "@man@" + install -D src/common/pg_config.env "$dev/nix-support/pg_config.env" # postgres exposes external symbols get_pkginclude_path and similar. Those # can't be stripped away by --gc-sections/LTO, because they could theoretically @@ -589,7 +592,13 @@ let postgresql = this; }; - pg_config = buildPackages.callPackage ./pg_config.nix { inherit (finalAttrs) finalPackage; }; + pg_config = buildPackages.callPackage ./pg_config.nix { + inherit (finalAttrs) finalPackage; + outputs = { + out = lib.getOutput "out" finalAttrs.finalPackage; + man = lib.getOutput "man" finalAttrs.finalPackage; + }; + }; tests = { postgresql = nixosTests.postgresql.postgresql.passthru.override finalAttrs.finalPackage; @@ -643,84 +652,76 @@ let f: let installedExtensions = f postgresql.pkgs; - finalPackage = - (buildEnv { - name = "${postgresql.pname}-and-plugins-${postgresql.version}"; - paths = installedExtensions ++ [ - # consider keeping in-sync with `postBuild` below - postgresql - postgresql.man # in case user installs this into environment - ]; + finalPackage = buildEnv { + name = "${postgresql.pname}-and-plugins-${postgresql.version}"; + paths = installedExtensions ++ [ + # consider keeping in-sync with `postBuild` below + postgresql + postgresql.man # in case user installs this into environment + ]; - pathsToLink = [ - "/" - "/bin" - "/share/postgresql/extension" - # Unbreaks Omnigres' build system - "/share/postgresql/timezonesets" - "/share/postgresql/tsearch_data" - ]; + pathsToLink = [ + "/" + "/bin" + "/share/postgresql/extension" + # Unbreaks Omnigres' build system + "/share/postgresql/timezonesets" + "/share/postgresql/tsearch_data" + ]; - nativeBuildInputs = [ makeBinaryWrapper ]; - postBuild = - let - args = lib.concatMap (ext: ext.wrapperArgs or [ ]) installedExtensions; - in - '' - wrapProgram "$out/bin/postgres" ${lib.concatStringsSep " " args} + nativeBuildInputs = [ makeBinaryWrapper ]; + postBuild = + let + args = lib.concatMap (ext: ext.wrapperArgs or [ ]) installedExtensions; + in + '' + wrapProgram "$out/bin/postgres" ${lib.concatStringsSep " " args} + ''; - mkdir -p "$dev/nix-support" - substitute "${lib.getDev postgresql}/nix-support/pg_config.env" "$dev/nix-support/pg_config.env" \ - --replace-fail "${postgresql}" "$out" \ - --replace-fail "${postgresql.man}" "$out" - ''; + passthru = { + inherit installedExtensions; + inherit (postgresql) + pkgs + psqlSchema + version + ; - passthru = { - inherit installedExtensions; - inherit (postgresql) - pkgs - psqlSchema - version + pg_config = postgresql.pg_config.override { + outputs = { + out = finalPackage; + man = finalPackage; + }; + }; + + withJIT = postgresqlWithPackages { + inherit + buildEnv + lib + makeBinaryWrapper + postgresql ; + } (_: installedExtensions ++ [ postgresql.jit ]); + withoutJIT = postgresqlWithPackages { + inherit + buildEnv + lib + makeBinaryWrapper + postgresql + ; + } (_: lib.remove postgresql.jit installedExtensions); - pg_config = postgresql.pg_config.override { inherit finalPackage; }; - - withJIT = postgresqlWithPackages { + withPackages = + f': + postgresqlWithPackages { inherit buildEnv lib makeBinaryWrapper postgresql ; - } (_: installedExtensions ++ [ postgresql.jit ]); - withoutJIT = postgresqlWithPackages { - inherit - buildEnv - lib - makeBinaryWrapper - postgresql - ; - } (_: lib.remove postgresql.jit installedExtensions); - - withPackages = - f': - postgresqlWithPackages { - inherit - buildEnv - lib - makeBinaryWrapper - postgresql - ; - } (ps: installedExtensions ++ f' ps); - }; - }).overrideAttrs - { - # buildEnv doesn't support passing `outputs`, so going via overrideAttrs. - outputs = [ - "out" - "dev" - ]; - }; + } (ps: installedExtensions ++ f' ps); + }; + }; in finalPackage; diff --git a/pkgs/servers/sql/postgresql/libpq.nix b/pkgs/servers/sql/postgresql/libpq.nix index d3f3da989186..ab977dfb531d 100644 --- a/pkgs/servers/sql/postgresql/libpq.nix +++ b/pkgs/servers/sql/postgresql/libpq.nix @@ -128,6 +128,9 @@ stdenv.mkDerivation (finalAttrs: { make -C src/interfaces/libpq install make -C src/port install + substituteInPlace src/common/pg_config.env \ + --replace-fail "$out" "@out@" + install -D src/common/pg_config.env "$dev/nix-support/pg_config.env" moveToOutput "lib/*.a" "$dev" @@ -151,6 +154,9 @@ stdenv.mkDerivation (finalAttrs: { passthru.pg_config = buildPackages.callPackage ./pg_config.nix { inherit (finalAttrs) finalPackage; + outputs = { + out = lib.getOutput "out" finalAttrs.finalPackage; + }; }; meta = { diff --git a/pkgs/servers/sql/postgresql/pg_config.nix b/pkgs/servers/sql/postgresql/pg_config.nix index 20544cdb0614..c4cc1cee06cd 100644 --- a/pkgs/servers/sql/postgresql/pg_config.nix +++ b/pkgs/servers/sql/postgresql/pg_config.nix @@ -6,6 +6,8 @@ stdenv, # PostgreSQL package finalPackage, + # PostgreSQL package's outputs + outputs, }: replaceVarsWith { @@ -15,12 +17,17 @@ replaceVarsWith { isExecutable = true; replacements = { inherit runtimeShell; - postgresql-dev = lib.getDev finalPackage; + "pg_config.env" = replaceVarsWith { + name = "pg_config.env"; + src = "${lib.getDev finalPackage}/nix-support/pg_config.env"; + replacements = outputs; + }; }; nativeCheckInputs = [ diffutils ]; - postCheck = '' + # The expected output only matches when outputs have *not* been altered by postgresql.withPackages. + postCheck = lib.optionalString (outputs.out == lib.getOutput "out" finalPackage) '' if [ -e ${lib.getDev finalPackage}/nix-support/pg_config.expected ]; then diff ${lib.getDev finalPackage}/nix-support/pg_config.expected <($out/bin/pg_config) fi diff --git a/pkgs/servers/sql/postgresql/pg_config.sh b/pkgs/servers/sql/postgresql/pg_config.sh index 3f0aa08eb70c..ff18e3a4752b 100644 --- a/pkgs/servers/sql/postgresql/pg_config.sh +++ b/pkgs/servers/sql/postgresql/pg_config.sh @@ -13,7 +13,7 @@ set -euo pipefail # https://github.com/postgres/postgres/blob/7510ac6203bc8e3c56eae95466feaeebfc1b4f31/src/bin/pg_config/pg_config.sh # https://github.com/postgres/postgres/blob/master/src/bin/pg_config/pg_config.c -source @postgresql-dev@/nix-support/pg_config.env +source @pg_config.env@ help=" pg_config provides information about the installed version of PostgreSQL.