From c1e8fb446c8fac3b00cddd7444f8dec3f2fbc70a Mon Sep 17 00:00:00 2001 From: Ben Moseley Date: Tue, 30 Dec 2014 13:26:50 +0000 Subject: [PATCH 1/3] Postgis 2.1.4 support --- .../development/libraries/postgis/default.nix | 83 ++++++++++++------- 1 file changed, 53 insertions(+), 30 deletions(-) diff --git a/pkgs/development/libraries/postgis/default.nix b/pkgs/development/libraries/postgis/default.nix index 03dc4b8f1f81..a6422c85127f 100644 --- a/pkgs/development/libraries/postgis/default.nix +++ b/pkgs/development/libraries/postgis/default.nix @@ -1,4 +1,4 @@ -args@{fetchurl, composableDerivation, stdenv, perl, libxml2, postgresql, geos, proj, flex, ...}: +args@{fetchurl, composableDerivation, stdenv, perl, libxml2, postgresql, geos, proj, flex, gdal, pkgconfig, file, ...}: /* @@ -7,6 +7,8 @@ args@{fetchurl, composableDerivation, stdenv, perl, libxml2, postgresql, geos, p services.posgresql.extraPlugins = [ pkgs.postgis.v_1_5_1 ]; + services.postgresql.extraPlugins = [ (pkgs.postgis.override { postgresql = pkgs.postgresql94; }).v_2_1_4 ]; # BM - 2015/01/01 + or if you want to install 1.5.x and 1.3.x at the same time (which works because the .sql and .so files have different names): @@ -52,7 +54,7 @@ let name = "postgis-${version}"; src = fetchurl { - url = "http://download.osgeo.org/postgis/source/postgis-${fix.fixed.version}.tar.gz"; + url = "http://postgis.refractions.net/download/postgis-${fix.fixed.version}.tar.gz"; inherit (fix.fixed) sha256; }; @@ -64,36 +66,12 @@ let makeFlags="PERL=${perl}/bin/perl datadir=$out/share pkglibdir=$out/lib bindir=$out/bin" ''; - pg_db_postgis_enable = ./pg_db_postgis_enable.sh; - - scriptNames = [ "pg_db_postgis_enable" ]; # helper scripts - - # prepare fixed parameters for script and create pg_db_postgis_enable script. - # The script just loads postgis features into a list of given databases - postgisEnableScript = '' - s=$out/bin/pg_db_postgis_enable - - sql_comments=$out/share/postgis-${version}/comments.sql - mkdir -p $(dirname $sql_comments) - cp $(find -iname ${fix.fixed.sql_comments}) $sql_comments - - for script in $scriptNames; do - tg=$out/bin/$script - substituteAll ''${!script} $tg - chmod +x $tg - done - ''; - - # create a script enabling postgis features - # also create aliases for all commands adding version information + # create aliases for all commands adding version information postInstall = '' sql_srcs=$(for sql in ${builtins.toString fix.fixed.sql_srcs}; do echo -n "$(find $out -iname "$sql") "; done ) - eval "$postgisEnableScript" - eval "$postgisFixLibScript" - - for prog in $out/bin/*; do + for prog in $out/bin/*; do # */ ln -s $prog $prog-${version} done @@ -113,6 +91,12 @@ let }; }); + pgDerivationBaseNewer = pgDerivationBase.merge (fix: { + src = fetchurl { + url = "http://download.osgeo.org/postgis/source/postgis-${builtins.toString fix.fixed.version}.tar.gz"; + inherit (fix.fixed) sha256; + }; + }); in rec { @@ -141,10 +125,49 @@ in rec { sha256 = "0i6inyiwc5zgf5a4ssg0y774f8vn45zn5c38ccgnln9r6i54vc6k"; }); - v_1_5_8 = pgDerivationBase.merge ( fix : { + v_1_5_1 = pgDerivationBase.merge ( fix : { + version = "1.5.1"; + sha256 = "0nymvqqi6pp4nh4dcshzqm76x4sraf119jp7l27c2q1lygm6p6jr"; + sql_srcs = ["postgis.sql" "spatial_ref_sys.sql"]; + }); + + v_1_5_8 = pgDerivationBaseNewer.merge ( fix : { version = "1.5.8"; sha256 = "016qn2hk3w8rg60rqn91l2nfk9zcsw0pv2s5rb1qhjw15ypgv5j8"; sql_srcs = ["postgis.sql" "spatial_ref_sys.sql"]; }); -} + v_2_0_6 = pgDerivationBaseNewer.merge ( fix : { + version = "2.0.6"; + sha256 = "129lyd1crv1bbjadyisjm3wv2vkj1v1nnxyns9z57300ip7wk3s3"; + sql_srcs = ["postgis.sql" "spatial_ref_sys.sql"]; + builtInputs = [gdal pkgconfig]; + + preConfigure = '' + sed -i 's@/usr/bin/file@${file}/bin/file@' configure + configureFlags="$configureFlags --with-gdalconfig=${gdal}/bin/gdal-config" + ''; + }); + + v_2_1_4 = pgDerivationBaseNewer.merge ( fix : { + version = "2.1.4"; + sha256 = "1z00n5654r7l38ydkn2grbwl5gg0mravjwxfdipp7j18hjiw4wyd"; + sql_srcs = ["postgis.sql" "spatial_ref_sys.sql"]; + builtInputs = [gdal pkgconfig]; + dontDisableStatic = true; + preConfigure = '' + sed -i 's@/usr/bin/file@${file}/bin/file@' configure + configureFlags="$configureFlags --with-gdalconfig=${gdal}/bin/gdal-config" + ''; + postConfigure = '' + sed -i "s|@mkdir -p \$(DESTDIR)\$(PGSQL_BINDIR)||g ; + s|\$(DESTDIR)\$(PGSQL_BINDIR)|$prefix|g + " \ + "raster/loader/Makefile"; + sed -i "s|\$(DESTDIR)\$(PGSQL_BINDIR)|$prefix|g + " \ + "raster/scripts/python/Makefile"; + ''; + }); + +} \ No newline at end of file From a828f6332b9ad2bd49f26eb37491f4f74d63f743 Mon Sep 17 00:00:00 2001 From: Ben Moseley Date: Wed, 28 Jan 2015 08:33:03 +0000 Subject: [PATCH 2/3] Postgis. raster. $prefix -> $prefix/bin --- pkgs/development/libraries/postgis/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/postgis/default.nix b/pkgs/development/libraries/postgis/default.nix index a6422c85127f..8d588a2cbefa 100644 --- a/pkgs/development/libraries/postgis/default.nix +++ b/pkgs/development/libraries/postgis/default.nix @@ -161,10 +161,10 @@ in rec { ''; postConfigure = '' sed -i "s|@mkdir -p \$(DESTDIR)\$(PGSQL_BINDIR)||g ; - s|\$(DESTDIR)\$(PGSQL_BINDIR)|$prefix|g + s|\$(DESTDIR)\$(PGSQL_BINDIR)|$prefix/bin|g " \ "raster/loader/Makefile"; - sed -i "s|\$(DESTDIR)\$(PGSQL_BINDIR)|$prefix|g + sed -i "s|\$(DESTDIR)\$(PGSQL_BINDIR)|$prefix/bin|g " \ "raster/scripts/python/Makefile"; ''; From 926e5aa70a28ab41db8260b33e7dff01671b5f81 Mon Sep 17 00:00:00 2001 From: Ben Moseley Date: Mon, 9 Feb 2015 15:57:19 +0000 Subject: [PATCH 3/3] Remove old PostGis versions. --- .../development/libraries/postgis/default.nix | 69 +------------------ 1 file changed, 2 insertions(+), 67 deletions(-) diff --git a/pkgs/development/libraries/postgis/default.nix b/pkgs/development/libraries/postgis/default.nix index 8d588a2cbefa..2d1400a2fcbb 100644 --- a/pkgs/development/libraries/postgis/default.nix +++ b/pkgs/development/libraries/postgis/default.nix @@ -5,22 +5,7 @@ args@{fetchurl, composableDerivation, stdenv, perl, libxml2, postgresql, geos, p ### NixOS - usage: ================== - services.posgresql.extraPlugins = [ pkgs.postgis.v_1_5_1 ]; - - services.postgresql.extraPlugins = [ (pkgs.postgis.override { postgresql = pkgs.postgresql94; }).v_2_1_4 ]; # BM - 2015/01/01 - - or if you want to install 1.5.x and 1.3.x at the same time (which works - because the .sql and .so files have different names): - - services.postgis.extraPlugins = [ (pkgs.buildEnv { - name = "postgis-plugins"; - ignoreCollisions = 1; # scripts will collide - but there are aliases with version suffixes - paths = [ pkgs.postgis.v_1_3_5 pkgs.postgis.v_1_5_1 ]; - })]; - - By now it is only supported installing one of the 1.3.x verions because - their shared libraries don't differ in naming. - + services.postgresql.extraPlugins = [ (pkgs.postgis.override { postgresql = pkgs.postgresql94; }).v_2_1_4 ]; ### important Postgis implementation details: @@ -31,7 +16,7 @@ args@{fetchurl, composableDerivation, stdenv, perl, libxml2, postgresql, geos, p 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. @@ -39,7 +24,6 @@ args@{fetchurl, composableDerivation, stdenv, perl, libxml2, postgresql, geos, p systems you have to adopt the library path. - ### TODO: ========= the bin commands to have gtk gui: @@ -100,55 +84,6 @@ let in rec { - # these builders just add some custom informaton to the receipe above - - v_1_3_5 = pgDerivationBase.merge ( fix: { - version = "1.3.5"; - buildInputs = [ flex ]; - sha256 = "102d5ybn0db1wrb249dga2v8347vysd4f1brc8zb82d7vdd34wyq"; - sql_srcs = ["lwpostgis.sql" "spatial_ref_sys.sql"]; - - pg_db_postgis_fix_or_load_sql_dump = ./pg_db_postgis_fix_or_load_sql_dump.sh; - libName = "liblwgeom"; - scriptNames = [ "pg_db_postgis_enable" "pg_db_postgis_fix_or_load_sql_dump"]; # helper scripts - - # sql_srcs is defined in postInstall source above - # if store path changes sql should not break. So replace absolute path to - # shared library by path relatve to $libdir known by Postgres. - postInstall = '' - sed -i "s@AS '$out/lib/liblwgeom@AS '\$libdir/liblwgeom@" $sql_srcs $out/share/lwpostgis_upgrade.sql - ''; - }); - - v_1_3_6 = v_1_3_5.merge ({ - version = "1.3.6"; - sha256 = "0i6inyiwc5zgf5a4ssg0y774f8vn45zn5c38ccgnln9r6i54vc6k"; - }); - - v_1_5_1 = pgDerivationBase.merge ( fix : { - version = "1.5.1"; - sha256 = "0nymvqqi6pp4nh4dcshzqm76x4sraf119jp7l27c2q1lygm6p6jr"; - sql_srcs = ["postgis.sql" "spatial_ref_sys.sql"]; - }); - - v_1_5_8 = pgDerivationBaseNewer.merge ( fix : { - version = "1.5.8"; - sha256 = "016qn2hk3w8rg60rqn91l2nfk9zcsw0pv2s5rb1qhjw15ypgv5j8"; - sql_srcs = ["postgis.sql" "spatial_ref_sys.sql"]; - }); - - v_2_0_6 = pgDerivationBaseNewer.merge ( fix : { - version = "2.0.6"; - sha256 = "129lyd1crv1bbjadyisjm3wv2vkj1v1nnxyns9z57300ip7wk3s3"; - sql_srcs = ["postgis.sql" "spatial_ref_sys.sql"]; - builtInputs = [gdal pkgconfig]; - - preConfigure = '' - sed -i 's@/usr/bin/file@${file}/bin/file@' configure - configureFlags="$configureFlags --with-gdalconfig=${gdal}/bin/gdal-config" - ''; - }); - v_2_1_4 = pgDerivationBaseNewer.merge ( fix : { version = "2.1.4"; sha256 = "1z00n5654r7l38ydkn2grbwl5gg0mravjwxfdipp7j18hjiw4wyd";