From 517c52ec2e6d55553cee8df6fefda6d0cb022c41 Mon Sep 17 00:00:00 2001 From: Bas van Dijk Date: Thu, 2 Aug 2018 21:20:21 +0200 Subject: [PATCH] postgresql: always create the $out/bin directory This is needed because some PostgreSQL plugins don't have a bin directory. If only these plugins are listed in cfg.extraPlugins buildEnv will turn $out/bin into a symbolic link to ${pg}/bin. Lateron we try to rm $out/bin/{pg_config,postgres,pg_ctl} which will then fail because $out/bin will be read-only. --- nixos/modules/services/databases/postgresql.nix | 5 ++++- pkgs/servers/sql/postgresql/ext/pg_cron.nix | 1 - pkgs/servers/sql/postgresql/ext/pg_similarity.nix | 1 - pkgs/servers/sql/postgresql/ext/pgjwt.nix | 1 - pkgs/servers/sql/postgresql/ext/pgroonga.nix | 1 - pkgs/servers/sql/postgresql/ext/pgrouting.nix | 1 - pkgs/servers/sql/postgresql/ext/plv8.nix | 1 - pkgs/servers/sql/postgresql/ext/timescaledb.nix | 7 ------- pkgs/servers/sql/postgresql/ext/tsearch_extras.nix | 1 - 9 files changed, 4 insertions(+), 15 deletions(-) diff --git a/nixos/modules/services/databases/postgresql.nix b/nixos/modules/services/databases/postgresql.nix index 87b236dd5fd..197932c2f6c 100644 --- a/nixos/modules/services/databases/postgresql.nix +++ b/nixos/modules/services/databases/postgresql.nix @@ -12,10 +12,13 @@ let else pkgs.buildEnv { name = "postgresql-and-plugins-${(builtins.parseDrvName pg.name).version}"; paths = [ pg pg.lib ] ++ cfg.extraPlugins; + # We include /bin to ensure the $out/bin directory is created which is + # needed because we'll be removing files from that directory in postBuild + # below. See #22653 + pathsToLink = [ "/" "/bin" ]; buildInputs = [ pkgs.makeWrapper ]; postBuild = '' - mkdir -p $out/bin rm $out/bin/{pg_config,postgres,pg_ctl} cp --target-directory=$out/bin ${pg}/bin/{postgres,pg_config,pg_ctl} wrapProgram $out/bin/postgres --set NIX_PGLIBDIR $out/lib diff --git a/pkgs/servers/sql/postgresql/ext/pg_cron.nix b/pkgs/servers/sql/postgresql/ext/pg_cron.nix index 494e6dbac4f..8a31d198129 100644 --- a/pkgs/servers/sql/postgresql/ext/pg_cron.nix +++ b/pkgs/servers/sql/postgresql/ext/pg_cron.nix @@ -14,7 +14,6 @@ stdenv.mkDerivation rec { }; installPhase = '' - mkdir -p $out/bin # For buildEnv to setup proper symlinks. See #22653 mkdir -p $out/{lib,share/extension} cp *.so $out/lib diff --git a/pkgs/servers/sql/postgresql/ext/pg_similarity.nix b/pkgs/servers/sql/postgresql/ext/pg_similarity.nix index 32945c9fa62..aa204eec5a6 100644 --- a/pkgs/servers/sql/postgresql/ext/pg_similarity.nix +++ b/pkgs/servers/sql/postgresql/ext/pg_similarity.nix @@ -13,7 +13,6 @@ stdenv.mkDerivation { buildInputs = [ postgresql gcc ]; buildPhase = "USE_PGXS=1 make"; installPhase = '' - mkdir -p $out/bin # for buildEnv to setup proper symlinks install -D pg_similarity.so -t $out/lib/ install -D ./{pg_similarity--unpackaged--1.0.sql,pg_similarity--1.0.sql,pg_similarity.control} -t $out/share/extension ''; diff --git a/pkgs/servers/sql/postgresql/ext/pgjwt.nix b/pkgs/servers/sql/postgresql/ext/pgjwt.nix index ab7ba8943a7..3185e226574 100644 --- a/pkgs/servers/sql/postgresql/ext/pgjwt.nix +++ b/pkgs/servers/sql/postgresql/ext/pgjwt.nix @@ -13,7 +13,6 @@ stdenv.mkDerivation rec { buildPhase = ":"; installPhase = '' - mkdir -p $out/bin # current postgresql extension mechanism in nixos requires bin directory mkdir -p $out/share/extension cp pg*sql *.control $out/share/extension ''; diff --git a/pkgs/servers/sql/postgresql/ext/pgroonga.nix b/pkgs/servers/sql/postgresql/ext/pgroonga.nix index 2fc190d8e00..c07153e1971 100644 --- a/pkgs/servers/sql/postgresql/ext/pgroonga.nix +++ b/pkgs/servers/sql/postgresql/ext/pgroonga.nix @@ -15,7 +15,6 @@ stdenv.mkDerivation rec { makeFlags = [ "HAVE_MSGPACK=1" ]; installPhase = '' - mkdir -p $out/bin install -D pgroonga.so -t $out/lib/ install -D ./{pgroonga-*.sql,pgroonga.control} -t $out/share/extension ''; diff --git a/pkgs/servers/sql/postgresql/ext/pgrouting.nix b/pkgs/servers/sql/postgresql/ext/pgrouting.nix index 722c70b2e89..bdb3fcae3dc 100644 --- a/pkgs/servers/sql/postgresql/ext/pgrouting.nix +++ b/pkgs/servers/sql/postgresql/ext/pgrouting.nix @@ -15,7 +15,6 @@ stdenv.mkDerivation rec { }; installPhase = '' - mkdir -p $out/bin # for buildEnv, see https://github.com/NixOS/nixpkgs/issues/22653 install -D lib/*.so -t $out/lib install -D sql/pgrouting--${version}.sql -t $out/share/extension install -D sql/common/pgrouting.control -t $out/share/extension diff --git a/pkgs/servers/sql/postgresql/ext/plv8.nix b/pkgs/servers/sql/postgresql/ext/plv8.nix index b6446f292c6..603349d9d65 100644 --- a/pkgs/servers/sql/postgresql/ext/plv8.nix +++ b/pkgs/servers/sql/postgresql/ext/plv8.nix @@ -23,7 +23,6 @@ stdenv.mkDerivation rec { buildPhase = "make -f Makefile.shared all"; installPhase = '' - mkdir -p $out/bin install -D plv8*.so -t $out/lib install -D {plls,plcoffee,plv8}{--${version}.sql,.control} -t $out/share/extension ''; diff --git a/pkgs/servers/sql/postgresql/ext/timescaledb.nix b/pkgs/servers/sql/postgresql/ext/timescaledb.nix index 9a664bc2518..d6986f936bb 100644 --- a/pkgs/servers/sql/postgresql/ext/timescaledb.nix +++ b/pkgs/servers/sql/postgresql/ext/timescaledb.nix @@ -34,13 +34,6 @@ stdenv.mkDerivation rec { done ''; - postInstall = '' - # work around an annoying bug, by creating $out/bin, so buildEnv doesn't freak out later - # see https://github.com/NixOS/nixpkgs/issues/22653 - - mkdir -p $out/bin - ''; - meta = with stdenv.lib; { description = "Scales PostgreSQL for time-series data via automatic partitioning across time and space"; homepage = https://www.timescale.com/; diff --git a/pkgs/servers/sql/postgresql/ext/tsearch_extras.nix b/pkgs/servers/sql/postgresql/ext/tsearch_extras.nix index b43a9c51be0..8b9e9322b47 100644 --- a/pkgs/servers/sql/postgresql/ext/tsearch_extras.nix +++ b/pkgs/servers/sql/postgresql/ext/tsearch_extras.nix @@ -15,7 +15,6 @@ stdenv.mkDerivation rec { buildInputs = [ postgresql ]; installPhase = '' - mkdir -p $out/bin install -D tsearch_extras.so -t $out/lib/ install -D ./{tsearch_extras--1.0.sql,tsearch_extras.control} -t $out/share/extension '';