at master 102 lines 2.2 kB view raw
1{ 2 lib, 3 stdenv, 4 fetchurl, 5 pkg-config, 6 validatePkgConfig, 7 freexl, 8 geos, 9 librttopo, 10 libxml2, 11 minizip, 12 proj, 13 sqlite, 14 libiconv, 15 zlib, 16 testers, 17}: 18 19stdenv.mkDerivation (finalAttrs: { 20 pname = "libspatialite"; 21 version = "5.1.0"; 22 23 outputs = [ 24 "out" 25 "dev" 26 ]; 27 28 src = fetchurl { 29 url = "https://www.gaia-gis.it/gaia-sins/libspatialite-sources/libspatialite-${finalAttrs.version}.tar.gz"; 30 hash = "sha256-Q74t00na/+AW3RQAxdEShYKMIv6jXKUQnyHz7VBgUIA="; 31 }; 32 33 patches = [ 34 # Drop use of deprecated libxml2 HTTP API. 35 # From: https://www.gaia-gis.it/fossil/libspatialite/info/7c452740fe 36 # see also: https://github.com/NixOS/nixpkgs/issues/347085 37 ./xmlNanoHTTPCleanup.patch 38 ]; 39 40 postPatch = lib.optionalString (!stdenv.hostPlatform.isStatic) '' 41 substituteInPlace spatialite.pc.in \ 42 --replace-fail "@LIBS@ @LIBXML2_LIBS@ @SQLITE3_LIBS@ -lm" "" 43 ''; 44 45 nativeBuildInputs = [ 46 pkg-config 47 validatePkgConfig 48 ]; 49 50 buildInputs = [ 51 freexl 52 geos 53 librttopo 54 libxml2 55 minizip 56 proj 57 sqlite 58 zlib 59 ] 60 ++ lib.optionals stdenv.hostPlatform.isDarwin [ 61 libiconv 62 ]; 63 64 configureFlags = [ 65 "--with-geosconfig=${lib.getExe' (lib.getDev geos) "geos-config"}" 66 ]; 67 68 enableParallelBuilding = true; 69 70 postInstall = lib.optionalString stdenv.hostPlatform.isDarwin '' 71 ln -s $out/lib/mod_spatialite.{so,dylib} 72 ''; 73 74 # Failed tests (linux & darwin): 75 # - check_virtualtable6 76 # - check_drop_rename 77 doCheck = false; 78 79 preCheck = '' 80 export LD_LIBRARY_PATH=$(pwd)/src/.libs 81 export DYLD_LIBRARY_PATH=$(pwd)/src/.libs 82 ''; 83 84 passthru.tests = { 85 pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; 86 }; 87 88 meta = { 89 description = "Extensible spatial index library in C++"; 90 homepage = "https://www.gaia-gis.it/fossil/libspatialite"; 91 # They allow any of these 92 license = with lib.licenses; [ 93 gpl2Plus 94 lgpl21Plus 95 mpl11 96 ]; 97 pkgConfigModules = [ "spatialite" ]; 98 platforms = lib.platforms.unix; 99 maintainers = with lib.maintainers; [ dotlambda ]; 100 teams = [ lib.teams.geospatial ]; 101 }; 102})