From 4fb8bc8238aa0366d78bae6095676ef7e08c17b2 Mon Sep 17 00:00:00 2001 From: Danylo Hlynskyi Date: Sat, 26 Jan 2019 21:15:43 +0200 Subject: 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 +- pkgs/development/libraries/postgis/default.nix | 105 ------------------------- pkgs/servers/sql/postgresql/ext/postgis.nix | 67 ++++++++++++++++ pkgs/servers/sql/postgresql/packages.nix | 7 ++ pkgs/top-level/aliases.nix | 1 + pkgs/top-level/all-packages.nix | 2 - 6 files changed, 79 insertions(+), 108 deletions(-) delete mode 100644 pkgs/development/libraries/postgis/default.nix create mode 100644 pkgs/servers/sql/postgresql/ext/postgis.nix diff --git a/nixos/tests/postgis.nix b/nixos/tests/postgis.nix index 49be0672a8e5..294eb50b5fe5 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/development/libraries/postgis/default.nix deleted file mode 100644 index be7fc6f8c173..000000000000 --- a/pkgs/development/libraries/postgis/default.nix +++ /dev/null @@ -1,105 +0,0 @@ -{ fetchurl -, stdenv -, perl -, libxml2 -, postgresql -, geos -, proj -, gdal -, json_c -, 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 { - name = "postgis-${version}"; - - src = fetchurl { - url = "https://download.osgeo.org/postgis/source/postgis-${builtins.toString version}.tar.gz"; - inherit sha256; - }; - - # 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"]; - - # 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 = '' - sed -i "s|@mkdir -p \$(DESTDIR)\$(PGSQL_BINDIR)||g ; - s|\$(DESTDIR)\$(PGSQL_BINDIR)|$prefix/bin|g - " \ - "raster/loader/Makefile"; - sed -i "s|\$(DESTDIR)\$(PGSQL_BINDIR)|$prefix/bin|g - " \ - "raster/scripts/python/Makefile"; - ''; - - meta = with stdenv.lib; { - description = "Geographic Objects for PostgreSQL"; - homepage = http://postgis.refractions.net; - license = licenses.gpl2; - maintainers = [ maintainers.marcweber ]; - platforms = platforms.linux; - }; -} diff --git a/pkgs/servers/sql/postgresql/ext/postgis.nix b/pkgs/servers/sql/postgresql/ext/postgis.nix new file mode 100644 index 000000000000..d78707fc65f9 --- /dev/null +++ b/pkgs/servers/sql/postgresql/ext/postgis.nix @@ -0,0 +1,67 @@ +{ fetchurl +, stdenv +, perl +, libxml2 +, postgresql +, geos +, proj +, gdal +, json_c +, pkgconfig +, file +}: +stdenv.mkDerivation rec { + name = "postgis-${version}"; + version = "2.5.1"; + + outputs = [ "out" "doc" ]; + + src = fetchurl { + url = "https://download.osgeo.org/postgis/source/postgis-${version}.tar.gz"; + sha256 = "14bsh4kflp4bxilypkpmhrpldknc9s9vgiax8yfhxbisyib704zv"; + }; + + buildInputs = [ libxml2 postgresql geos proj perl gdal json_c pkgconfig ]; + 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"; + + 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 = '' + sed -i "s|@mkdir -p \$(DESTDIR)\$(PGSQL_BINDIR)||g ; + s|\$(DESTDIR)\$(PGSQL_BINDIR)|$prefix/bin|g + " \ + "raster/loader/Makefile"; + sed -i "s|\$(DESTDIR)\$(PGSQL_BINDIR)|$prefix/bin|g + " \ + "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; + license = licenses.gpl2; + maintainers = [ maintainers.marcweber ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/servers/sql/postgresql/packages.nix b/pkgs/servers/sql/postgresql/packages.nix index ba3da25bc16b..a1ca71d2c8cf 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 fcabdf7c69a8..18be4e6e4592 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 44d513dca694..13bbf85b3e08 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 { }; -- cgit 1.4.1