postgresql: Fix use with extensions
Fixes #15512 and #16032 With the multi output, postgresql cannot find at runtime what is its basedir when looking for libdir and pkglibdir. This commit fixes that.
This commit is contained in:
parent
f976fa40a2
commit
5b8072fff6
@ -11,12 +11,14 @@ let
|
|||||||
if cfg.extraPlugins == [] then pg
|
if cfg.extraPlugins == [] then pg
|
||||||
else pkgs.buildEnv {
|
else pkgs.buildEnv {
|
||||||
name = "postgresql-and-plugins-${(builtins.parseDrvName pg.name).version}";
|
name = "postgresql-and-plugins-${(builtins.parseDrvName pg.name).version}";
|
||||||
paths = [ pg ] ++ cfg.extraPlugins;
|
paths = [ pg pg.lib ] ++ cfg.extraPlugins;
|
||||||
|
buildInputs = [ pkgs.makeWrapper ];
|
||||||
postBuild =
|
postBuild =
|
||||||
''
|
''
|
||||||
mkdir -p $out/bin
|
mkdir -p $out/bin
|
||||||
rm $out/bin/{pg_config,postgres,pg_ctl}
|
rm $out/bin/{pg_config,postgres,pg_ctl}
|
||||||
cp --target-directory=$out/bin ${pg}/bin/{postgres,pg_config,pg_ctl}
|
cp --target-directory=$out/bin ${pg}/bin/{postgres,pg_config,pg_ctl}
|
||||||
|
wrapProgram $out/bin/postgres --set NIX_PGLIBDIR $out/lib
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
30
nixos/tests/postgis.nix
Normal file
30
nixos/tests/postgis.nix
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
import ./make-test.nix ({ pkgs, ...} : {
|
||||||
|
name = "postgis";
|
||||||
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
|
maintainers = [ lsix ];
|
||||||
|
};
|
||||||
|
|
||||||
|
nodes = {
|
||||||
|
master =
|
||||||
|
{ pkgs, config, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
services.postgresql = let mypg = pkgs.postgresql95; in {
|
||||||
|
enable = true;
|
||||||
|
package = mypg;
|
||||||
|
extraPlugins = [ (pkgs.postgis.override { postgresql = mypg; }).v_2_2_1 ];
|
||||||
|
initialScript = pkgs.writeText "postgresql-init.sql"
|
||||||
|
''
|
||||||
|
CREATE ROLE postgres WITH superuser login createdb;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
startAll;
|
||||||
|
$master->waitForUnit("postgresql");
|
||||||
|
$master->sleep(10); # Hopefully this is long enough!!
|
||||||
|
$master->succeed("sudo -u postgres psql -c 'CREATE EXTENSION postgis;'");
|
||||||
|
'';
|
||||||
|
})
|
@ -33,6 +33,7 @@ let
|
|||||||
[ (if lib.versionAtLeast version "9.4" then ./disable-resolve_symlinks-94.patch else ./disable-resolve_symlinks.patch)
|
[ (if lib.versionAtLeast version "9.4" then ./disable-resolve_symlinks-94.patch else ./disable-resolve_symlinks.patch)
|
||||||
./less-is-more.patch
|
./less-is-more.patch
|
||||||
./hardcode-pgxs-path.patch
|
./hardcode-pgxs-path.patch
|
||||||
|
./specify_pkglibdir_at_runtime.patch
|
||||||
];
|
];
|
||||||
|
|
||||||
installTargets = [ "install-world" ];
|
installTargets = [ "install-world" ];
|
||||||
|
@ -0,0 +1,29 @@
|
|||||||
|
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
|
||||||
|
@@ -714,7 +714,11 @@
|
||||||
|
void
|
||||||
|
get_lib_path(const char *my_exec_path, char *ret_path)
|
||||||
|
{
|
||||||
|
- make_relative_path(ret_path, LIBDIR, PGBINDIR, my_exec_path);
|
||||||
|
+ char const * const nix_pglibdir = getenv("NIX_PGLIBDIR");
|
||||||
|
+ if(nix_pglibdir == NULL)
|
||||||
|
+ make_relative_path(ret_path, LIBDIR, PGBINDIR, my_exec_path);
|
||||||
|
+ else
|
||||||
|
+ make_relative_path(ret_path, nix_pglibdir, PGBINDIR, my_exec_path);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
@@ -723,7 +727,11 @@
|
||||||
|
void
|
||||||
|
get_pkglib_path(const char *my_exec_path, char *ret_path)
|
||||||
|
{
|
||||||
|
- make_relative_path(ret_path, PKGLIBDIR, PGBINDIR, my_exec_path);
|
||||||
|
+ char const * const nix_pglibdir = getenv("NIX_PGLIBDIR");
|
||||||
|
+ if(nix_pglibdir == NULL)
|
||||||
|
+ make_relative_path(ret_path, PKGLIBDIR, PGBINDIR, my_exec_path);
|
||||||
|
+ else
|
||||||
|
+ make_relative_path(ret_path, nix_pglibdir, PGBINDIR, my_exec_path);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
Loading…
Reference in New Issue
Block a user