Merge pull request #35243 from FRidh/postgis

postgis: get rid of composableDerivation

authored by Frederik Rietdijk and committed by GitHub d328ba75 383da0ff

+164 -97
+1 -1
nixos/modules/services/databases/postgresql.nix
··· 122 122 extraPlugins = mkOption { 123 123 type = types.listOf types.path; 124 124 default = []; 125 - example = literalExample "[ (pkgs.postgis.override { postgresql = pkgs.postgresql94; }).v_2_1_4 ]"; 125 + example = literalExample "[ (pkgs.postgis.override { postgresql = pkgs.postgresql94; }) ]"; 126 126 description = '' 127 127 When this list contains elements a new store path is created. 128 128 PostgreSQL and the elements are symlinked into it. Then pg_config,
+1 -1
nixos/tests/postgis.nix
··· 12 12 services.postgresql = let mypg = pkgs.postgresql100; in { 13 13 enable = true; 14 14 package = mypg; 15 - extraPlugins = [ (pkgs.postgis.override { postgresql = mypg; }).v_2_4_0 ]; 15 + extraPlugins = [ (pkgs.postgis.override { postgresql = mypg; }) ]; 16 16 }; 17 17 }; 18 18 };
+102
pkgs/development/libraries/postgis/2.3.nix
··· 1 + { fetchurl 2 + , stdenv 3 + , perl 4 + , libxml2 5 + , postgresql 6 + , geos 7 + , proj 8 + , flex 9 + , gdal 10 + , json_c 11 + , pkgconfig 12 + , file 13 + }: 14 + 15 + /* 16 + 17 + ### NixOS - usage: 18 + ================== 19 + 20 + services.postgresql.extraPlugins = [ (pkgs.postgis.override { postgresql = pkgs.postgresql95; }) ]; 21 + 22 + 23 + ### important Postgis implementation details: 24 + ============================================= 25 + 26 + Postgis provides a shared library implementing many operations. They are 27 + exposed to the Postgres SQL interpreter by special SQL queries eg: 28 + 29 + CREATE FUNCTION [...] 30 + AS '[..]liblwgeom', 'lwhistogram2d_in' LANGUAGE 'C' IMMUTABLE STRICT; -- WITH (isstrict); 31 + 32 + where liblwgeom is the shared library. 33 + Postgis < 1.5 used absolute paths, in NixOS $libdir is always used. 34 + 35 + Thus if you want to use postgresql dumps which were created by non NixOS 36 + systems you have to adopt the library path. 37 + 38 + 39 + ### TODO: 40 + ========= 41 + the bin commands to have gtk gui: 42 + */ 43 + 44 + 45 + let 46 + version = "2.3.1"; 47 + sha256 = "0xd21h2k6x3i1b3z6pgm3pmkfpxm6irxd5wbx68acjndjgd6p3ac"; 48 + in stdenv.mkDerivation rec { 49 + name = "postgis-${version}"; 50 + 51 + src = fetchurl { 52 + url = "http://download.osgeo.org/postgis/source/postgis-${builtins.toString version}.tar.gz"; 53 + inherit sha256; 54 + }; 55 + 56 + # don't pass these vars to the builder 57 + removeAttrs = ["sql_comments" "sql_srcs"]; 58 + 59 + # create aliases for all commands adding version information 60 + postInstall = '' 61 + sql_srcs=$(for sql in ${builtins.toString sql_srcs}; do echo -n "$(find $out -iname "$sql") "; done ) 62 + 63 + for prog in $out/bin/*; do # */ 64 + ln -s $prog $prog-${version} 65 + done 66 + 67 + cp -r doc $out 68 + ''; 69 + 70 + buildInputs = [ libxml2 postgresql geos proj perl gdal json_c pkgconfig ]; 71 + 72 + sql_comments = "postgis_comments.sql"; 73 + 74 + sql_srcs = ["postgis.sql" "spatial_ref_sys.sql"]; 75 + 76 + # postgis config directory assumes /include /lib from the same root for json-c library 77 + NIX_LDFLAGS = "-L${stdenv.lib.getLib json_c}/lib"; 78 + 79 + dontDisableStatic = true; 80 + preConfigure = '' 81 + sed -i 's@/usr/bin/file@${file}/bin/file@' configure 82 + configureFlags="--datadir=$out/share --datarootdir=$out/share --bindir=$out/bin --with-gdalconfig=${gdal}/bin/gdal-config --with-jsondir=${json_c.dev}" 83 + makeFlags="PERL=${perl}/bin/perl datadir=$out/share pkglibdir=$out/lib bindir=$out/bin" 84 + ''; 85 + postConfigure = '' 86 + sed -i "s|@mkdir -p \$(DESTDIR)\$(PGSQL_BINDIR)||g ; 87 + s|\$(DESTDIR)\$(PGSQL_BINDIR)|$prefix/bin|g 88 + " \ 89 + "raster/loader/Makefile"; 90 + sed -i "s|\$(DESTDIR)\$(PGSQL_BINDIR)|$prefix/bin|g 91 + " \ 92 + "raster/scripts/python/Makefile"; 93 + ''; 94 + 95 + meta = with stdenv.lib; { 96 + description = "Geographic Objects for PostgreSQL"; 97 + homepage = http://postgis.refractions.net; 98 + license = licenses.gpl2; 99 + maintainers = [ maintainers.marcweber ]; 100 + platforms = platforms.linux; 101 + }; 102 + }
+59 -95
pkgs/development/libraries/postgis/default.nix
··· 1 - args@{fetchurl, composableDerivation, stdenv, perl, libxml2, postgresql, geos, proj, flex, gdal, json_c, pkgconfig, file, ...}: 1 + { fetchurl 2 + , stdenv 3 + , perl 4 + , libxml2 5 + , postgresql 6 + , geos 7 + , proj 8 + , flex 9 + , gdal 10 + , json_c 11 + , pkgconfig 12 + , file 13 + }: 2 14 3 15 /* 4 16 5 17 ### NixOS - usage: 6 18 ================== 7 19 8 - services.postgresql.extraPlugins = [ (pkgs.postgis.override { postgresql = pkgs.postgresql95; }).v_2_3_1 ]; 20 + services.postgresql.extraPlugins = [ (pkgs.postgis.override { postgresql = pkgs.postgresql95; }) ]; 9 21 10 22 11 23 ### important Postgis implementation details: ··· 31 43 32 44 33 45 let 34 - pgDerivationBase = composableDerivation.composableDerivation {} ( fix : 46 + version = "2.4.0"; 47 + sha256 = "02baa90f04da41e04b6c18eedfda53110c45ae943d4e65050f6d202f7de07d29"; 48 + in stdenv.mkDerivation rec { 49 + name = "postgis-${version}"; 35 50 36 - let version = fix.fixed.version; in { 51 + src = fetchurl { 52 + url = "http://download.osgeo.org/postgis/source/postgis-${builtins.toString version}.tar.gz"; 53 + inherit sha256; 54 + }; 37 55 38 - name = "postgis-${version}"; 56 + # don't pass these vars to the builder 57 + removeAttrs = ["sql_comments" "sql_srcs"]; 39 58 40 - src = fetchurl { 41 - url = "http://postgis.refractions.net/download/postgis-${fix.fixed.version}.tar.gz"; 42 - inherit (fix.fixed) sha256; 43 - }; 44 - 45 - # don't pass these vars to the builder 46 - removeAttrs = ["hash" "sql_comments" "sql_srcs"]; 47 - 48 - preConfigure = '' 49 - configureFlags="--datadir=$out/share --datarootdir=$out/share --bindir=$out/bin" 50 - makeFlags="PERL=${perl}/bin/perl datadir=$out/share pkglibdir=$out/lib bindir=$out/bin" 51 - ''; 52 - 53 - # create aliases for all commands adding version information 54 - postInstall = '' 55 - 56 - sql_srcs=$(for sql in ${builtins.toString fix.fixed.sql_srcs}; do echo -n "$(find $out -iname "$sql") "; done ) 57 - 58 - for prog in $out/bin/*; do # */ 59 - ln -s $prog $prog-${version} 60 - done 61 - 62 - cp -r doc $out 63 - ''; 64 - 65 - buildInputs = [libxml2 postgresql geos proj perl]; 66 - 67 - sql_comments = "postgis_comments.sql"; 68 - 69 - meta = { 70 - description = "Geographic Objects for PostgreSQL"; 71 - homepage = http://postgis.refractions.net; 72 - license = stdenv.lib.licenses.gpl2; 73 - maintainers = [stdenv.lib.maintainers.marcweber]; 74 - platforms = stdenv.lib.platforms.linux; 75 - }; 76 - }); 77 - 78 - pgDerivationBaseNewer = pgDerivationBase.merge (fix: { 79 - src = fetchurl { 80 - url = "http://download.osgeo.org/postgis/source/postgis-${builtins.toString fix.fixed.version}.tar.gz"; 81 - inherit (fix.fixed) sha256; 82 - }; 83 - }); 84 - 85 - in rec { 59 + # create aliases for all commands adding version information 60 + postInstall = '' 61 + sql_srcs=$(for sql in ${builtins.toString sql_srcs}; do echo -n "$(find $out -iname "$sql") "; done ) 86 62 87 - v_2_3_1 = pgDerivationBaseNewer.merge ( fix : { 88 - version = "2.3.1"; 89 - sha256 = "0xd21h2k6x3i1b3z6pgm3pmkfpxm6irxd5wbx68acjndjgd6p3ac"; 90 - sql_srcs = ["postgis.sql" "spatial_ref_sys.sql"]; 91 - builtInputs = [gdal json_c pkgconfig]; 63 + for prog in $out/bin/*; do # */ 64 + ln -s $prog $prog-${version} 65 + done 92 66 93 - # postgis config directory assumes /include /lib from the same root for json-c library 94 - NIX_LDFLAGS = "-L${stdenv.lib.getLib json_c}/lib"; 67 + cp -r doc $out 68 + ''; 95 69 96 - dontDisableStatic = true; 97 - preConfigure = '' 98 - sed -i 's@/usr/bin/file@${file}/bin/file@' configure 99 - configureFlags="$configureFlags --with-gdalconfig=${gdal}/bin/gdal-config --with-jsondir=${json_c.dev}" 100 - ''; 101 - postConfigure = '' 102 - sed -i "s|@mkdir -p \$(DESTDIR)\$(PGSQL_BINDIR)||g ; 103 - s|\$(DESTDIR)\$(PGSQL_BINDIR)|$prefix/bin|g 104 - " \ 105 - "raster/loader/Makefile"; 106 - sed -i "s|\$(DESTDIR)\$(PGSQL_BINDIR)|$prefix/bin|g 107 - " \ 108 - "raster/scripts/python/Makefile"; 109 - ''; 110 - }); 70 + buildInputs = [ libxml2 postgresql geos proj perl gdal json_c pkgconfig ]; 111 71 112 - v_2_4_0 = pgDerivationBaseNewer.merge ( fix : { 113 - version = "2.4.0"; 114 - sha256 = "02baa90f04da41e04b6c18eedfda53110c45ae943d4e65050f6d202f7de07d29"; 115 - sql_srcs = ["postgis.sql" "spatial_ref_sys.sql"]; 116 - builtInputs = [gdal json_c pkgconfig]; 72 + sql_comments = "postgis_comments.sql"; 117 73 118 - # postgis config directory assumes /include /lib from the same root for json-c library 119 - NIX_LDFLAGS = "-L${stdenv.lib.getLib json_c}/lib"; 74 + sql_srcs = ["postgis.sql" "spatial_ref_sys.sql"]; 120 75 121 - dontDisableStatic = true; 122 - preConfigure = '' 123 - sed -i 's@/usr/bin/file@${file}/bin/file@' configure 124 - configureFlags="$configureFlags --with-gdalconfig=${gdal}/bin/gdal-config --with-jsondir=${json_c.dev}" 125 - ''; 126 - postConfigure = '' 127 - sed -i "s|@mkdir -p \$(DESTDIR)\$(PGSQL_BINDIR)||g ; 128 - s|\$(DESTDIR)\$(PGSQL_BINDIR)|$prefix/bin|g 129 - " \ 130 - "raster/loader/Makefile"; 131 - sed -i "s|\$(DESTDIR)\$(PGSQL_BINDIR)|$prefix/bin|g 132 - " \ 133 - "raster/scripts/python/Makefile"; 134 - ''; 135 - }); 76 + # postgis config directory assumes /include /lib from the same root for json-c library 77 + NIX_LDFLAGS = "-L${stdenv.lib.getLib json_c}/lib"; 136 78 79 + dontDisableStatic = true; 80 + preConfigure = '' 81 + sed -i 's@/usr/bin/file@${file}/bin/file@' configure 82 + configureFlags="--datadir=$out/share --datarootdir=$out/share --bindir=$out/bin --with-gdalconfig=${gdal}/bin/gdal-config --with-jsondir=${json_c.dev}" 83 + makeFlags="PERL=${perl}/bin/perl datadir=$out/share pkglibdir=$out/lib bindir=$out/bin" 84 + ''; 85 + postConfigure = '' 86 + sed -i "s|@mkdir -p \$(DESTDIR)\$(PGSQL_BINDIR)||g ; 87 + s|\$(DESTDIR)\$(PGSQL_BINDIR)|$prefix/bin|g 88 + " \ 89 + "raster/loader/Makefile"; 90 + sed -i "s|\$(DESTDIR)\$(PGSQL_BINDIR)|$prefix/bin|g 91 + " \ 92 + "raster/scripts/python/Makefile"; 93 + ''; 137 94 95 + meta = with stdenv.lib; { 96 + description = "Geographic Objects for PostgreSQL"; 97 + homepage = http://postgis.refractions.net; 98 + license = licenses.gpl2; 99 + maintainers = [ maintainers.marcweber ]; 100 + platforms = platforms.linux; 101 + }; 138 102 }
+1
pkgs/top-level/all-packages.nix
··· 10788 10788 }; 10789 10789 10790 10790 postgis = callPackage ../development/libraries/postgis { }; 10791 + postgis_2_3 = callPackage ../development/libraries/postgis/2.3.nix { }; 10791 10792 10792 10793 protobuf = callPackage ../development/libraries/protobuf/3.4.nix { }; 10793 10794