postgresql: replace pg_config with custom script

By replacing upstream's pg_config binary with a shell script, we:
- gain the ability to run pg_config easily when cross-compiling,
- can remove the fake pg_config in the default output,
- can remove the pg_config wrapper script dealing with special cases.

Some 20 years ago, pg_config *was* a shell script upstream, too. It was
changed to a binary, when it was made "relocatable", so it would return
paths depending on the location of the "postgres" binary. However, this
is exactly the thing that just hurts us in nixpkgs - we don't want those
paths to change, we want them to always point at the right outputs. By
writing the script ourselves, this becomes a lot less painful.

This approach means more lines of codes, but all of them are dead simple
and we have a lot less complexity overall.

Additionally, pg_config is now made a separate derivation, only exposed
as "postgresql.pg_config". This has the nice side-effect, that all users
of postgresql and libpq in nixpkgs must be very *explicit* about their
dependency on pg_config. This gives a lot more visibility into the state
of affairs regarding pkg-config support for libpq, which ultimately is
the much better solution.
This commit is contained in:
Wolfgang Walther 2025-03-10 19:35:50 +01:00
parent 4b631f7101
commit 88dfade94b
No known key found for this signature in database
GPG key ID: B39893FA5F65CAE1
32 changed files with 221 additions and 93 deletions

View file

@ -154,7 +154,7 @@ let
defaultGemConfig = pkgs.defaultGemConfig // {
pg = attrs: {
buildFlags =
[ "--with-pg-config=${lib.getDev pkgs."postgresql_${pg_version}"}/bin/pg_config" ];
[ "--with-pg-config=${pkgs."postgresql_${pg_version}".pg_config}/bin/pg_config" ];
};
};
};
@ -172,7 +172,7 @@ let
gemConfig = pkgs.defaultGemConfig // {
pg = attrs: {
buildFlags =
[ "--with-pg-config=${lib.getDev pkgs."postgresql_${pg_version}"}/bin/pg_config" ];
[ "--with-pg-config=${pkgs."postgresql_${pg_version}".pg_config}/bin/pg_config" ];
};
};
};
@ -190,7 +190,7 @@ let
defaultGemConfig = super.defaultGemConfig // {
pg = attrs: {
buildFlags = [
"--with-pg-config=${lib.getDev pkgs."postgresql_${pg_version}"}/bin/pg_config"
"--with-pg-config=${pkgs."postgresql_${pg_version}".pg_config}/bin/pg_config"
];
};
};

View file

@ -11,6 +11,8 @@
- `squid` has been updated to version 7, this release includes multiple breaking changes, like ESI removal.
For more information, [check the release notes](https://github.com/squid-cache/squid/releases/tag/SQUID_7_0_1).
- `postgresql` and `libpq` don't provide `pg_config` by default anymore. Instead, `pg_config` is available via `postgresql.pg_config` or `libpq.pg_config`. This allowed implementing it as a shell script, which can be build for both the build and host systems when cross-compiling. If your build fails to find `pg_config`, add `postgresql.pg_config` or `libpq.pg_config` to `nativeBuildInputs`.
- The [`no-broken-symlinks` hook](https://nixos.org/manual/nixpkgs/unstable/#no-broken-symlinks.sh) was added to catch builds containing dangling or reflexive symlinks, as these are indicative of problems with packaging.
The hook can be disabled by providing `dontCheckForBrokenSymlinks = true;` as an argument to `mkDerivation`.
For more information, [check the docs](https://nixos.org/manual/nixpkgs/unstable/#no-broken-symlinks.sh) or [see this PR](https://github.com/NixOS/nixpkgs/pull/370750).

View file

@ -59,7 +59,10 @@ stdenv.mkDerivation rec {
++ lib.optional withPgSQL libpq
++ lib.optional withSQLite sqlite
++ lib.optional withDB db;
nativeBuildInputs = [ makeWrapper ];
nativeBuildInputs = [
libpq.pg_config
makeWrapper
];
# patch out libmysql >= 5 check, since mariadb-connector is at 3.x
postPatch = ''
sed -i 's/atoi(m) >= 5/1/g' configure m4/mysql_drv.m4
@ -87,8 +90,7 @@ stdenv.mkDerivation rec {
++ lib.optionals withMySQL [
"--with-mysql-includes=${mariadb-connector-c.dev}/include/mysql"
"--with-mysql-libraries=${mariadb-connector-c.out}/lib/mysql"
]
++ lib.optional withPgSQL "--with-pgsql-libraries=${libpq}/lib";
];
# Workaround build failure on -fno-common toolchains like upstream
# gcc-10. Otherwise build fails as:

View file

@ -159,6 +159,9 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [
perl
pkg-config
]
++ lib.optionals (lib.elem "pgsql" extraModules) [
libpq.pg_config
];
buildInputs = extraInputs;

View file

@ -54,7 +54,7 @@ stdenv.mkDerivation rec {
"--localstatedir=/var"
"--with-openssl=${lib.getDev openssl}"
]
++ lib.optional withPostgres "--with-pgsql=${lib.getDev libpq}/bin/pg_config"
++ lib.optional withPostgres "--with-pgsql=${libpq.pg_config}/bin/pg_config"
++ lib.optional withMysql "--with-mysql=${lib.getDev libmysqlclient}/bin/mysql_config";
postConfigure = ''

View file

@ -18,7 +18,10 @@ stdenv.mkDerivation rec {
sha256 = "sha256-joGaCoRMGpEqq7pnT4Qd7XySjZ5wlZPW27WfOv1UFF4=";
};
nativeBuildInputs = [ libxslt.bin ];
nativeBuildInputs = [
libxslt.bin
postgresql.pg_config
];
buildInputs = [ postgresql ];

View file

@ -26,6 +26,7 @@ stdenv.mkDerivation (finalAttrs: {
nativeBuildInputs = [
pkg-config
postgresql.pg_config
];
buildInputs =

View file

@ -33,6 +33,10 @@ stdenv.mkDerivation {
openssl
];
nativeBuildInputs = [
libpq.pg_config
];
passthru.tests.sign-in = nixosTests.pgmanage;
meta = with lib; {

View file

@ -35,6 +35,7 @@ stdenv.mkDerivation rec {
};
nativeBuildInputs = [
libpq.pg_config
pkg-config
] ++ lib.optional stdenv.hostPlatform.isDarwin desktopToDarwinBundle;

View file

@ -24,6 +24,7 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [
autoreconfHook
libpq.pg_config
];
buildInputs = [

View file

@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [
validatePkgConfig
libpq # for pg_config
libpq.pg_config
];
buildInputs = [

View file

@ -58,6 +58,7 @@ stdenv.mkDerivation rec {
gtk-doc
autoconf-archive
yelp-tools
libpq.pg_config
];
buildInputs =

View file

@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [
perl
pkg-config
];
] ++ lib.optional withPostgresql libpq.pg_config;
buildInputs =
[

View file

@ -23,6 +23,10 @@ buildOctavePackage rec {
libpq
];
nativeBuildInputs = [
libpq.pg_config
];
requiredOctavePackages = [
struct
];

View file

@ -73,8 +73,7 @@ let
nativeBuildInputs = [
cython
# needed to find pg_config with strictDeps
libpq
libpq.pg_config
setuptools
tomli
];

View file

@ -38,7 +38,7 @@ buildPythonPackage rec {
# some linker flags are added but the linker ignores them because they're incompatible
# https://github.com/psycopg/psycopg2/blob/89005ac5b849c6428c05660b23c5a266c96e677d/setup.py
substituteInPlace setup.py \
--replace-fail "self.pg_config_exe = self.build_ext.pg_config" 'self.pg_config_exe = "${lib.getDev buildPackages.libpq}/bin/pg_config"'
--replace-fail "self.pg_config_exe = self.build_ext.pg_config" 'self.pg_config_exe = "${libpq.pg_config}/bin/pg_config"'
'';
nativeBuildInputs = [

View file

@ -31,8 +31,7 @@ buildPythonPackage rec {
'';
buildInputs = [ libpq ];
# To find pg_config
nativeBuildInputs = [ libpq ];
nativeBuildInputs = [ libpq.pg_config ];
build-system = [
setuptools

View file

@ -483,7 +483,7 @@ let
RODBC = [ pkgs.libiodbc ];
rpanel = [ pkgs.tclPackages.bwidget ];
Rpoppler = [ pkgs.poppler ];
RPostgreSQL = with pkgs; [ libpq ];
RPostgreSQL = with pkgs; [ libpq.pg_config ];
RProtoBuf = [ pkgs.protobuf ];
RSclient = [ pkgs.openssl.dev ];
Rserve = [ pkgs.openssl ];

View file

@ -669,7 +669,7 @@ in
# Force pkg-config lookup for libpq.
# See https://github.com/ged/ruby-pg/blob/6629dec6656f7ca27619e4675b45225d9e422112/ext/extconf.rb#L34-L55
#
# Note that setting --with-pg-config=${lib.getDev postgresql}/bin/pg_config would add
# Note that setting --with-pg-config=${postgresql.pg_config}/bin/pg_config would add
# an unnecessary reference to the entire postgresql package.
buildFlags = [ "--with-pg-config=ignore" ];
nativeBuildInputs = [ pkg-config ];

View file

@ -93,7 +93,7 @@ let
preBuildAndTest = ''
export PGRX_HOME="$(mktemp -d)"
export PGDATA="$PGRX_HOME/data-${pgrxPostgresMajor}/"
cargo-pgrx pgrx init "--pg${pgrxPostgresMajor}" ${lib.getDev postgresql}/bin/pg_config
cargo-pgrx pgrx init "--pg${pgrxPostgresMajor}" ${postgresql.pg_config}/bin/pg_config
# unix sockets work in sandbox, too.
export PGHOST="$(mktemp -d)"
@ -140,7 +140,7 @@ let
PGRX_BUILD_FLAGS="--frozen -j $NIX_BUILD_CORES ${builtins.concatStringsSep " " cargoBuildFlags}" \
${lib.optionalString stdenv.hostPlatform.isDarwin ''RUSTFLAGS="''${RUSTFLAGS:+''${RUSTFLAGS} }-Clink-args=-Wl,-undefined,dynamic_lookup"''} \
cargo pgrx package \
--pg-config ${lib.getDev postgresql}/bin/pg_config \
--pg-config ${postgresql.pg_config}/bin/pg_config \
${maybeDebugFlag} \
--features "${builtins.concatStringsSep " " buildFeatures}" \
--out-dir "$out"

View file

@ -34,7 +34,10 @@ callPackage ../nginx/generic.nix args rec {
--replace "b/" "b/bundle/nginx-${nginxVersion}/"
'';
nativeBuildInputs = [ perl ];
nativeBuildInputs = [
libpq.pg_config
perl
];
buildInputs = [ libpq ];

View file

@ -32,14 +32,6 @@ assert sqliteSupport -> !mysqlSupport && !postgresqlSupport;
let
inherit (lib) optional optionalString;
fake_pg_config = buildPackages.writeShellScript "pg_config" ''
if [[ "$1" == "--version" ]]; then
$PKG_CONFIG libpq --modversion
else
$PKG_CONFIG libpq --variable="''${1//--/}"
fi
'';
fake_mysql_config = buildPackages.writeShellScript "mysql_config" ''
if [[ "$1" == "--version" ]]; then
$PKG_CONFIG mysqlclient --modversion
@ -60,7 +52,9 @@ import ./versions.nix (
inherit hash;
};
nativeBuildInputs = [ pkg-config ];
nativeBuildInputs = [
pkg-config
] ++ optional postgresqlSupport libpq.pg_config;
buildInputs =
[
curl
@ -93,7 +87,7 @@ import ./versions.nix (
++ optional sqliteSupport "--with-sqlite3=${sqlite.dev}"
++ optional sshSupport "--with-ssh2=${libssh2.dev}"
++ optional mysqlSupport "--with-mysql=${fake_mysql_config}"
++ optional postgresqlSupport "--with-postgresql=${fake_pg_config}";
++ optional postgresqlSupport "--with-postgresql";
prePatch = ''
find database -name data.sql -exec sed -i 's|/usr/bin/||g' {} +

View file

@ -50,7 +50,7 @@ import ./versions.nix (
nativeBuildInputs = [
autoreconfHook
pkg-config
];
] ++ optional postgresqlSupport libpq.pg_config;
buildInputs =
[
curl

View file

@ -76,6 +76,7 @@ postgresqlBuildExtension (finalAttrs: {
dontDisableStatic = true;
nativeCheckInputs = [
postgresql
postgresqlTestHook
cunit
libxslt
@ -93,6 +94,7 @@ postgresqlBuildExtension (finalAttrs: {
'';
configureFlags = [
"--with-pgconfig=${postgresql.pg_config}/bin/pg_config"
"--with-gdalconfig=${gdal}/bin/gdal-config"
"--with-jsondir=${json_c.dev}"
"--disable-extension-upgrades-install"

View file

@ -42,6 +42,7 @@ let
# passthru
buildEnv,
buildPackages,
newScope,
nixosTests,
postgresqlTestHook,
@ -126,8 +127,6 @@ let
)
else
stdenv;
pg_config = writeShellScriptBin "pg_config" (builtins.readFile ./pg_config.sh);
in
stdenv'.mkDerivation (finalAttrs: {
inherit version;
@ -341,8 +340,7 @@ let
postPatch = ''
substituteInPlace "src/Makefile.global.in" --subst-var out
# Hardcode the path to pgxs so pg_config returns the path in $dev
substituteInPlace "src/common/config_info.c" --subst-var dev
cat ${./pg_config.env.mk} >> src/common/Makefile
'';
postInstall =
@ -350,12 +348,9 @@ let
moveToOutput "bin/ecpg" "$dev"
moveToOutput "lib/pgxs" "$dev"
# Pretend pg_config is located in $out/bin to return correct paths, but
# actually have it in -dev to avoid pulling in all other outputs. See the
# pg_config.sh script's comments for details.
moveToOutput "bin/pg_config" "$dev"
install -c -m 755 "${pg_config}"/bin/pg_config "$out/bin/pg_config"
wrapProgram "$dev/bin/pg_config" --argv0 "$out/bin/pg_config"
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"
# postgres exposes external symbols get_pkginclude_path and similar. Those
# can't be stripped away by --gc-sections/LTO, because they could theoretically
@ -458,6 +453,8 @@ let
postgresql = this;
};
pg_config = buildPackages.callPackage ./pg_config.nix { inherit (finalAttrs) finalPackage; };
tests =
{
postgresql = nixosTests.postgresql.postgresql.passthru.override finalAttrs.finalPackage;
@ -519,6 +516,7 @@ let
passthru = {
inherit installedExtensions;
inherit (postgresql)
pg_config
psqlSchema
version
;

View file

@ -18,6 +18,7 @@
# passthru / meta
postgresql,
buildPackages,
# GSSAPI
gssSupport ? with stdenv.hostPlatform; !isWindows && !isStatic,
@ -107,29 +108,19 @@ stdenv.mkDerivation (finalAttrs: {
./patches/socketdir-in-run-13+.patch
];
postPatch = ''
cat ${./pg_config.env.mk} >> src/common/Makefile
'';
installPhase = ''
runHook preInstall
make -C src/bin/pg_config install
make -C src/common install
make -C src/common install pg_config.env
make -C src/include install
make -C src/interfaces/libpq install
make -C src/port install
# Pretend pg_config is located in $out/bin to return correct paths, but
# actually have it in -dev to avoid pulling in all other outputs.
moveToOutput bin/pg_config "$dev"
wrapProgram "$dev/bin/pg_config" --argv0 "$out/bin/pg_config"
# To prevent a "pg_config: could not find own program executable" error, we fake
# pg_config in the default output.
mkdir -p "$out/bin"
cat << EOF > "$out/bin/pg_config" && chmod +x "$out/bin/pg_config"
#!${stdenv.shell}
echo The real pg_config can be found in the -dev output.
exit 1
EOF
install -D src/common/pg_config.env "$dev/nix-support/pg_config.env"
moveToOutput "lib/*.a" "$dev"
rm -rfv $out/share
@ -150,6 +141,10 @@ stdenv.mkDerivation (finalAttrs: {
doCheck = false;
passthru.pg_config = buildPackages.callPackage ./pg_config.nix {
inherit (finalAttrs) finalPackage;
};
meta = {
inherit (postgresql.meta)
homepage

View file

@ -0,0 +1,13 @@
# Everything that pg_config normally returns is put into pg_config.env, so
# that we can read it from our own pg_config script later on.
pg_config.env: $(top_builddir)/src/port/pg_config_paths.h | $(top_builddir)/src/include/pg_config.h
echo "CC=\"$(CC)\"" >$@
echo "CPPFLAGS=\"$(STD_CPPFLAGS)\"" >>$@
echo "CFLAGS=\"$(CFLAGS)\"" >>$@
echo "CFLAGS_SL=\"$(CFLAGS_SL)\"" >>$@
echo "LDFLAGS=\"$(STD_LDFLAGS)\"" >>$@
echo "LDFLAGS_EX=\"$(LDFLAGS_EX)\"" >>$@
echo "LDFLAGS_SL=\"$(LDFLAGS_SL)\"" >>$@
echo "LIBS=\"$(LIBS)\"" >>$@
cat $(top_builddir)/src/port/pg_config_paths.h $(top_builddir)/src/include/pg_config.h \
| sed -nE 's/^#define ([^ ]+) ("?)(.*)\2$$/\1="\3"/p' >>$@

View file

@ -0,0 +1,18 @@
{
lib,
replaceVarsWith,
runtimeShell,
# PostgreSQL package
finalPackage,
}:
replaceVarsWith {
name = "pg_config";
src = ./pg_config.sh;
dir = "bin";
isExecutable = true;
replacements = {
inherit runtimeShell;
postgresql-dev = lib.getDev finalPackage;
};
}

View file

@ -1,37 +1,122 @@
#!@runtimeShell@
set -euo pipefail
# The real pg_config needs to be in the same path as the "postgres" binary
# to return proper paths. However, we want it in the -dev output to prevent
# cyclic references and to prevent blowing up the runtime closure. Thus, we
# have wrapped -dev/bin/pg_config to fake its argv0 to be in the default
# output. Unfortunately, pg_config tries to be smart and tries to find itself -
# which will then fail with:
# pg_config: could not find own program executable
# To counter this, we're creating *this* fake pg_config script and put it into
# the default output. The real pg_config is happy.
# Some extensions, e.g. timescaledb, use the reverse logic and look for pg_config
# in the same path as the "postgres" binary to support multi-version-installs.
# Thus, they will end up calling this script during build, even though the real
# pg_config would be available on PATH, provided by nativeBuildInputs. To help
# this case, we're redirecting the call to pg_config to the one found in PATH,
# iff we can be convinced that it belongs to our -dev output.
# This replacement script for the pg_config binary is based on the original pg_config
# shell script, which was removed from PostgreSQL's codebase in 2004:
# https://github.com/postgres/postgres/commit/cc07f8cfe73f56fce1ddda4ea25d7b0b6c4f0ae9
#
# The main reason for removal was the ability to relocate an existing installation, which
# is exactly the one feature that we are trying to work around in nixpkgs.
# Going back to a shell script is much better for cross compiling.
#
# This file is a combination of the following two files:
# 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
# Avoid infinite recursion
if [[ ! -v PG_CONFIG_CALLED ]]; then
# compares "path of *this* script" with "path, which pg_config on PATH believes it is in"
if [[ "$(readlink -f -- "$0")" == "$(PG_CONFIG_CALLED=1 pg_config --bindir)/pg_config" ]]; then
# The pg_config in PATH returns the same bindir that we're actually called from.
# This means that the pg_config in PATH is the one from "our" -dev output.
# This happens when the -dev output has been put in native build
# inputs and allows us to call the real pg_config without referencing
# the -dev output itself.
exec pg_config "$@"
fi
source @postgresql-dev@/nix-support/pg_config.env
help="
pg_config provides information about the installed version of PostgreSQL.
Usage:
pg_config [OPTION]...
Options:
--bindir show location of user executables
--docdir show location of documentation files
--htmldir show location of HTML documentation files
--includedir show location of C header files of the client
interfaces
--pkgincludedir show location of other C header files
--includedir-server show location of C header files for the server
--libdir show location of object code libraries
--pkglibdir show location of dynamically loadable modules
--localedir show location of locale support files
--mandir show location of manual pages
--sharedir show location of architecture-independent support files
--sysconfdir show location of system-wide configuration files
--pgxs show location of extension makefile
--configure show options given to \"configure\" script when
PostgreSQL was built
--cc show CC value used when PostgreSQL was built
--cppflags show CPPFLAGS value used when PostgreSQL was built
--cflags show CFLAGS value used when PostgreSQL was built
--cflags_sl show CFLAGS_SL value used when PostgreSQL was built
--ldflags show LDFLAGS value used when PostgreSQL was built
--ldflags_ex show LDFLAGS_EX value used when PostgreSQL was built
--ldflags_sl show LDFLAGS_SL value used when PostgreSQL was built
--libs show LIBS value used when PostgreSQL was built
--version show the PostgreSQL version
-?, --help show this help, then exit
With no arguments, all known items are shown.
Report bugs to <${PACKAGE_BUGREPORT}>.
${PACKAGE_NAME} home page: <${PACKAGE_URL}>"
show=()
for opt; do
case "$opt" in
--bindir) show+=("$PGBINDIR") ;;
--docdir) show+=("$DOCDIR") ;;
--htmldir) show+=("$HTMLDIR") ;;
--includedir) show+=("$INCLUDEDIR") ;;
--pkgincludedir) show+=("$PKGINCLUDEDIR") ;;
--includedir-server) show+=("$INCLUDEDIRSERVER") ;;
--libdir) show+=("$LIBDIR") ;;
--pkglibdir) show+=("$PKGLIBDIR") ;;
--localedir) show+=("$LOCALEDIR") ;;
--mandir) show+=("$MANDIR") ;;
--sharedir) show+=("$PGSHAREDIR") ;;
--sysconfdir) show+=("$SYSCONFDIR") ;;
--pgxs) show+=("@postgresql-dev@/lib/pgxs/src/makefiles/pgxs.mk") ;;
--configure) show+=("$CONFIGURE_ARGS") ;;
--cc) show+=("$CC") ;;
--cppflags) show+=("$CPPFLAGS") ;;
--cflags) show+=("$CFLAGS") ;;
--cflags_sl) show+=("$CFLAGS_SL") ;;
--ldflags) show+=("$LDFLAGS") ;;
--ldflags_ex) show+=("$LDFLAGS_EX") ;;
--ldflags_sl) show+=("$LDFLAGS_SL") ;;
--libs) show+=("$LIBS") ;;
--version) show+=("PostgreSQL $PG_VERSION") ;;
--help|-\?) echo "$help"
exit 0 ;;
*) >&2 echo "pg_config: invalid argument: $opt"
>&2 echo "Try \"pg_config --help\" for more information."
exit 1 ;;
esac
done
if [ ${#show[@]} -gt 0 ]; then
printf '%s\n' "${show[@]}"
exit 0
fi
# This will happen in one of these cases:
# - *this* script is the first on PATH
# - np pg_config on PATH
# - some other pg_config on PATH, not from our -dev output
echo The real pg_config can be found in the -dev output.
exit 1
# no arguments -> print everything
cat <<EOF
BINDIR = $PGBINDIR
DOCDIR = $DOCDIR
HTMLDIR = $HTMLDIR
INCLUDEDIR = $INCLUDEDIR
PKGINCLUDEDIR = $PKGINCLUDEDIR
INCLUDEDIR-SERVER = $INCLUDEDIRSERVER
LIBDIR = $LIBDIR
PKGLIBDIR = $PKGLIBDIR
LOCALEDIR = $LOCALEDIR
MANDIR = $MANDIR
SHAREDIR = $PGSHAREDIR
SYSCONFDIR = $SYSCONFDIR
PGXS = @postgresql-dev@/lib/pgxs/src/makefiles/pgxs.mk
CONFIGURE = $CONFIGURE_ARGS
CC = $CC
CPPFLAGS = $CPPFLAGS
CFLAGS = $CFLAGS
CFLAGS_SL = $CFLAGS_SL
LDFLAGS = $LDFLAGS
LDFLAGS_EX = $LDFLAGS_EX
LDFLAGS_SL = $LDFLAGS_SL
LIBS = $LIBS
VERSION = PostgreSQL $PG_VERSION
EOF

View file

@ -86,7 +86,7 @@ let
strictDeps = true;
buildInputs = [ postgresql ] ++ prevAttrs.buildInputs or [ ];
nativeBuildInputs = [ postgresql ] ++ prevAttrs.nativeBuildInputs or [ ];
nativeBuildInputs = [ postgresql.pg_config ] ++ prevAttrs.nativeBuildInputs or [ ];
installFlags = [
"DESTDIR=${placeholder "out"}"

View file

@ -7268,7 +7268,7 @@ with self; {
buildInputs = [ pkgs.postgresql ];
propagatedBuildInputs = [ DBI ];
makeMakerFlags = [ "POSTGRES_HOME=${pkgs.postgresql}" ];
nativeBuildInputs = [ pkgs.postgresql.pg_config ];
# tests freeze in a sandbox
doCheck = false;

View file

@ -640,7 +640,7 @@ lib.makeScope pkgs.newScope (
{
name = "pdo_pgsql";
internalDeps = [ php.extensions.pdo ];
configureFlags = [ "--with-pdo-pgsql=${lib.getDev libpq}" ];
configureFlags = [ "--with-pdo-pgsql=${libpq.pg_config}" ];
doCheck = false;
}
{
@ -655,7 +655,7 @@ lib.makeScope pkgs.newScope (
buildInputs = [
pcre2
];
configureFlags = [ "--with-pgsql=${lib.getDev libpq}" ];
configureFlags = [ "--with-pgsql=${libpq.pg_config}" ];
doCheck = false;
}
{