This allows `postgresql.withPackages` to easily override the paths to the default and man outputs for `pg_config`. It avoids all `buildEnv`-dev-output hackery, which it didn't properly support, and separates the logic cleanly.
36 lines
898 B
Nix
36 lines
898 B
Nix
{
|
|
diffutils,
|
|
lib,
|
|
replaceVarsWith,
|
|
runtimeShell,
|
|
stdenv,
|
|
# PostgreSQL package
|
|
finalPackage,
|
|
# PostgreSQL package's outputs
|
|
outputs,
|
|
}:
|
|
|
|
replaceVarsWith {
|
|
name = "pg_config";
|
|
src = ./pg_config.sh;
|
|
dir = "bin";
|
|
isExecutable = true;
|
|
replacements = {
|
|
inherit runtimeShell;
|
|
"pg_config.env" = replaceVarsWith {
|
|
name = "pg_config.env";
|
|
src = "${lib.getDev finalPackage}/nix-support/pg_config.env";
|
|
replacements = outputs;
|
|
};
|
|
};
|
|
nativeCheckInputs = [
|
|
diffutils
|
|
];
|
|
# 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
|
|
'';
|
|
}
|