From 4fb8bc8238aa0366d78bae6095676ef7e08c17b2 Mon Sep 17 00:00:00 2001 From: Danylo Hlynskyi Date: Sat, 26 Jan 2019 21:15:43 +0200 Subject: [PATCH] postgresql: cleanup postgis (#54396) postgis: cleanup Another part of https://github.com/NixOS/nixpkgs/pull/38698, though I did cleanup even more. Moving docs to separate output should save another 30MB. I did pin poppler to 0.61 just to be sure GDAL doesn't break again next time poppler changes internal APIs. --- nixos/tests/postgis.nix | 5 +- .../sql/postgresql/ext/postgis.nix} | 82 +++++-------------- pkgs/servers/sql/postgresql/packages.nix | 7 ++ pkgs/top-level/aliases.nix | 1 + pkgs/top-level/all-packages.nix | 2 - 5 files changed, 34 insertions(+), 63 deletions(-) rename pkgs/{development/libraries/postgis/default.nix => servers/sql/postgresql/ext/postgis.nix} (52%) diff --git a/nixos/tests/postgis.nix b/nixos/tests/postgis.nix index 49be0672a8e53..294eb50b5fe50 100644 --- a/nixos/tests/postgis.nix +++ b/nixos/tests/postgis.nix @@ -12,7 +12,9 @@ import ./make-test.nix ({ pkgs, ...} : { services.postgresql = let mypg = pkgs.postgresql_11; in { enable = true; package = mypg; - extraPlugins = [ (pkgs.postgis.override { postgresql = mypg; }) ]; + extraPlugins = with mypg.pkgs; [ + postgis + ]; }; }; }; @@ -22,5 +24,6 @@ import ./make-test.nix ({ pkgs, ...} : { $master->waitForUnit("postgresql"); $master->sleep(10); # Hopefully this is long enough!! $master->succeed("sudo -u postgres psql -c 'CREATE EXTENSION postgis;'"); + $master->succeed("sudo -u postgres psql -c 'CREATE EXTENSION postgis_topology;'"); ''; }) diff --git a/pkgs/development/libraries/postgis/default.nix b/pkgs/servers/sql/postgresql/ext/postgis.nix similarity index 52% rename from pkgs/development/libraries/postgis/default.nix rename to pkgs/servers/sql/postgresql/ext/postgis.nix index be7fc6f8c173d..d78707fc65f9c 100644 --- a/pkgs/development/libraries/postgis/default.nix +++ b/pkgs/servers/sql/postgresql/ext/postgis.nix @@ -10,79 +10,27 @@ , pkgconfig , file }: - - /* - - ### NixOS - usage: - ================== - - services.postgresql.extraPlugins = [ (pkgs.postgis.override { postgresql = pkgs.postgresql_9_5; }) ]; - - - ### important Postgis implementation details: - ============================================= - - Postgis provides a shared library implementing many operations. They are - exposed to the Postgres SQL interpreter by special SQL queries eg: - - CREATE FUNCTION [...] - AS '[..]liblwgeom', 'lwhistogram2d_in' LANGUAGE 'C' IMMUTABLE STRICT; -- WITH (isstrict); - - where liblwgeom is the shared library. - Postgis < 1.5 used absolute paths, in NixOS $libdir is always used. - - Thus if you want to use postgresql dumps which were created by non NixOS - systems you have to adopt the library path. - - - ### TODO: - ========= - the bin commands to have gtk gui: - */ - - -let - version = "2.5.1"; - sha256 = "14bsh4kflp4bxilypkpmhrpldknc9s9vgiax8yfhxbisyib704zv"; -in stdenv.mkDerivation rec { +stdenv.mkDerivation rec { name = "postgis-${version}"; + version = "2.5.1"; + + outputs = [ "out" "doc" ]; src = fetchurl { - url = "https://download.osgeo.org/postgis/source/postgis-${builtins.toString version}.tar.gz"; - inherit sha256; + url = "https://download.osgeo.org/postgis/source/postgis-${version}.tar.gz"; + sha256 = "14bsh4kflp4bxilypkpmhrpldknc9s9vgiax8yfhxbisyib704zv"; }; - # don't pass these vars to the builder - removeAttrs = ["sql_comments" "sql_srcs"]; - - preInstall = '' - mkdir -p $out/bin - ''; - - # create aliases for all commands adding version information - postInstall = '' - sql_srcs=$(for sql in ${builtins.toString sql_srcs}; do echo -n "$(find $out -iname "$sql") "; done ) - - for prog in $out/bin/*; do # */ - ln -s $prog $prog-${version} - done - - cp -r doc $out - ''; - buildInputs = [ libxml2 postgresql geos proj perl gdal json_c pkgconfig ]; - - sql_comments = "postgis_comments.sql"; - - sql_srcs = ["postgis.sql" "spatial_ref_sys.sql"]; + dontDisableStatic = true; # postgis config directory assumes /include /lib from the same root for json-c library NIX_LDFLAGS = "-L${stdenv.lib.getLib json_c}/lib"; - dontDisableStatic = true; preConfigure = '' sed -i 's@/usr/bin/file@${file}/bin/file@' configure configureFlags="--datadir=$out/share --datarootdir=$out/share --bindir=$out/bin --with-gdalconfig=${gdal}/bin/gdal-config --with-jsondir=${json_c.dev}" + makeFlags="PERL=${perl}/bin/perl datadir=$out/share pkglibdir=$out/lib bindir=$out/bin" ''; postConfigure = '' @@ -95,6 +43,20 @@ in stdenv.mkDerivation rec { "raster/scripts/python/Makefile"; ''; + preInstall = '' + mkdir -p $out/bin + ''; + + # create aliases for all commands adding version information + postInstall = '' + for prog in $out/bin/*; do # */ + ln -s $prog $prog-${version} + done + + mkdir -p $doc/share/doc/postgis + mv doc/* $doc/share/doc/postgis/ + ''; + meta = with stdenv.lib; { description = "Geographic Objects for PostgreSQL"; homepage = http://postgis.refractions.net; diff --git a/pkgs/servers/sql/postgresql/packages.nix b/pkgs/servers/sql/postgresql/packages.nix index ba3da25bc16be..a1ca71d2c8cfb 100644 --- a/pkgs/servers/sql/postgresql/packages.nix +++ b/pkgs/servers/sql/postgresql/packages.nix @@ -1,5 +1,12 @@ self: super: { + postgis = super.callPackage ./ext/postgis.nix { + gdal = self.gdal.override { + postgresql = self.postgresql; + poppler = self.poppler_0_61; + }; + }; + pg_repack = super.callPackage ./ext/pg_repack.nix { }; pg_similarity = super.callPackage ./ext/pg_similarity.nix { }; diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index fcabdf7c69a8b..18be4e6e45925 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -253,6 +253,7 @@ mapAliases ({ pg_hll = postgresqlPackages.pg_hll; pg_cron = postgresqlPackages.pg_cron; pg_topn = postgresqlPackages.pg_topn; + postgis = postgresqlPackages.postgis; # end procps-ng = procps; # added 2018-06-08 prometheus-statsd-bridge = prometheus-statsd-exporter; # added 2017-08-27 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 44d513dca6947..13bbf85b3e086 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -12088,8 +12088,6 @@ in buildPythonApplication click future six; }; - postgis = callPackage ../development/libraries/postgis { }; - protobuf = protobuf3_6; protobuf3_6 = callPackage ../development/libraries/protobuf/3.6.nix { };