diff options
author | Domen Kožar <domen@dev.si> | 2015-02-18 12:08:59 +0100 |
---|---|---|
committer | Domen Kožar <domen@dev.si> | 2015-02-18 12:08:59 +0100 |
commit | b7c3afa6741f9bd64f4e91c614e1b2d31b377e73 (patch) | |
tree | c83185aa0c41c91c5a1defe541144e85f75ff376 | |
parent | 140e0716649483d7b6b3a90bd1976200d8850617 (diff) | |
parent | 926e5aa70a28ab41db8260b33e7dff01671b5f81 (diff) | |
download | nixlib-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.nix | 104 |
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 |