summary refs log tree commit diff
diff options
context:
space:
mode:
authorDomen Kožar <domen@dev.si>2015-02-18 12:08:59 +0100
committerDomen Kožar <domen@dev.si>2015-02-18 12:08:59 +0100
commitb7c3afa6741f9bd64f4e91c614e1b2d31b377e73 (patch)
treec83185aa0c41c91c5a1defe541144e85f75ff376
parent140e0716649483d7b6b3a90bd1976200d8850617 (diff)
parent926e5aa70a28ab41db8260b33e7dff01671b5f81 (diff)
downloadnixlib-b7c3afa6741f9bd64f4e91c614e1b2d31b377e73.tar
nixlib-b7c3afa6741f9bd64f4e91c614e1b2d31b377e73.tar.gz
nixlib-b7c3afa6741f9bd64f4e91c614e1b2d31b377e73.tar.bz2
nixlib-b7c3afa6741f9bd64f4e91c614e1b2d31b377e73.tar.lz
nixlib-b7c3afa6741f9bd64f4e91c614e1b2d31b377e73.tar.xz
nixlib-b7c3afa6741f9bd64f4e91c614e1b2d31b377e73.tar.zst
nixlib-b7c3afa6741f9bd64f4e91c614e1b2d31b377e73.zip
Merge pull request #5926 from benmos/postgis
Postgis 2.1.4 support
-rw-r--r--pkgs/development/libraries/postgis/default.nix104
1 files changed, 31 insertions, 73 deletions
diff --git a/pkgs/development/libraries/postgis/default.nix b/pkgs/development/libraries/postgis/default.nix
index 03dc4b8f1f81..2d1400a2fcbb 100644
--- a/pkgs/development/libraries/postgis/default.nix
+++ b/pkgs/development/libraries/postgis/default.nix
@@ -1,24 +1,11 @@
-args@{fetchurl, composableDerivation, stdenv, perl, libxml2, postgresql, geos, proj, flex, ...}:
+args@{fetchurl, composableDerivation, stdenv, perl, libxml2, postgresql, geos, proj, flex, gdal, pkgconfig, file, ...}:
 
   /*
 
   ### NixOS - usage:
   ==================
 
-    services.posgresql.extraPlugins = [ pkgs.postgis.v_1_5_1 ];
-
-    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:
@@ -29,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.
 
@@ -37,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:
@@ -52,7 +38,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 +50,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,38 +75,34 @@ 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
-    '';
+  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;
+    };
   });
 
-  v_1_3_6 = v_1_3_5.merge ({
-    version = "1.3.6";
-    sha256 = "0i6inyiwc5zgf5a4ssg0y774f8vn45zn5c38ccgnln9r6i54vc6k";
-  });
+in rec {
 
-  v_1_5_8 = pgDerivationBase.merge ( fix : {
-    version = "1.5.8";
-    sha256 = "016qn2hk3w8rg60rqn91l2nfk9zcsw0pv2s5rb1qhjw15ypgv5j8";
+  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/bin|g
+              " \
+          "raster/loader/Makefile";
+      sed -i "s|\$(DESTDIR)\$(PGSQL_BINDIR)|$prefix/bin|g
+              " \
+          "raster/scripts/python/Makefile";
+    '';
   });
 
-}
+}
\ No newline at end of file