diff options
Diffstat (limited to 'nixpkgs/pkgs/servers/sql/postgresql/ext/postgis.nix')
-rw-r--r-- | nixpkgs/pkgs/servers/sql/postgresql/ext/postgis.nix | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/servers/sql/postgresql/ext/postgis.nix b/nixpkgs/pkgs/servers/sql/postgresql/ext/postgis.nix new file mode 100644 index 000000000000..c8e26b5a82b8 --- /dev/null +++ b/nixpkgs/pkgs/servers/sql/postgresql/ext/postgis.nix @@ -0,0 +1,76 @@ +{ fetchurl +, stdenv +, perl +, libxml2 +, postgresql +, geos +, proj +, gdal +, json_c +, pkgconfig +, file +, protobufc +, libiconv +}: +stdenv.mkDerivation rec { + pname = "postgis"; + version = "3.0.1"; + + outputs = [ "out" "doc" ]; + + src = fetchurl { + url = "https://download.osgeo.org/postgis/source/postgis-${version}.tar.gz"; + sha256 = "0lv37v8f3143kfm9sdvw59461q2lndxiqvaw47lvmnaha7wk4m2s"; + }; + + buildInputs = [ libxml2 postgresql geos proj gdal json_c protobufc ] + ++ stdenv.lib.optional stdenv.isDarwin libiconv; + nativeBuildInputs = [ perl 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/postgresql --datarootdir=$out/share/postgresql --bindir=$out/bin --with-gdalconfig=${gdal}/bin/gdal-config --with-jsondir=${json_c.dev}" + + makeFlags="PERL=${perl}/bin/perl datadir=$out/share/postgresql 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"; + mkdir -p $out/bin + + # postgis' build system assumes it is being installed to the same place as postgresql, and looks + # for the postgres binary relative to $PREFIX. We gently support this system using an illusion. + ln -s ${postgresql}/bin/postgres $out/bin/postgres + ''; + + # create aliases for all commands adding version information + postInstall = '' + # Teardown the illusory postgres used for building; see postConfigure. + rm $out/bin/postgres + + 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 = "https://postgis.net/"; + changelog = "https://git.osgeo.org/gitea/postgis/postgis/raw/tag/${version}/NEWS"; + license = licenses.gpl2; + maintainers = [ maintainers.marcweber ]; + inherit (postgresql.meta) platforms; + }; +} |