diff options
Diffstat (limited to 'pkgs/development/libraries/gdal/default.nix')
-rw-r--r-- | pkgs/development/libraries/gdal/default.nix | 221 |
1 files changed, 151 insertions, 70 deletions
diff --git a/pkgs/development/libraries/gdal/default.nix b/pkgs/development/libraries/gdal/default.nix index bec478c66bd93..731f458efea2b 100644 --- a/pkgs/development/libraries/gdal/default.nix +++ b/pkgs/development/libraries/gdal/default.nix @@ -1,84 +1,162 @@ -{ lib, stdenv, fetchFromGitHub, fetchpatch, unzip, libjpeg, libtiff, zlib, postgresql -, libmysqlclient, libgeotiff, pythonPackages, proj, geos, openssl, libpng -, sqlite, libspatialite, poppler, hdf4, qhull, giflib, expat, libiconv, libxml2 -, autoreconfHook, netcdfSupport ? true, netcdf, hdf5, curl, pkg-config }: - -with lib; +{ lib +, stdenv +, fetchFromGitHub +, fetchpatch +, bison +, cmake +, doxygen +, graphviz +, pkg-config +, python3 +, swig +, armadillo +, arrow-cpp +, c-blosc +, brunsli +, cfitsio +, crunch +, curl +, cryptopp +, libdeflate +, expat +, libgeotiff +, geos +, giflib +, libheif +, dav1d +, libaom +, libde265 +, rav1e +, x265 +, hdf4 +, hdf5-cpp +, libiconv +, libjpeg +, json_c +, libjxl +, libhwy +, lerc +, xz +, libxml2 +, lz4 +, libmysqlclient +, netcdf +, openexr +, openjpeg +, openssl +, pcre2 +, libpng +, poppler +, postgresql +, proj +, qhull +, libspatialite +, sqlite +, libtiff +, tiledb +, libwebp +, xercesc +, zlib +, zstd +}: stdenv.mkDerivation rec { pname = "gdal"; - version = "3.4.2"; + version = "3.6.0.1"; src = fetchFromGitHub { owner = "OSGeo"; repo = "gdal"; rev = "v${version}"; - sha256 = "sha256-bE55VV0SrG8nxCLdpODRalnuAkn+olRdMLUjduavj6M="; + hash = "sha256-Yx7tmj2Y26FE5rzN+w1gg/7yRckNo6gLudrAPRoCro4="; }; - sourceRoot = "source/gdal"; + patches = [ + # https://github.com/OSGeo/gdal/pull/6754 + (fetchpatch { + name = "skip-test-failing-on-macos.patch"; + url = "https://github.com/OSGeo/gdal/commit/65b2b12fa6638653f54d3ca0f8066225597832b9.patch"; + hash = "sha256-zpj4jMp01Oz+Zk1b59qdoVxhkwWmTN9bwoKwbau2ADY="; + }) + ]; - nativeBuildInputs = [ autoreconfHook pkg-config unzip ]; + nativeBuildInputs = [ + bison + cmake + doxygen + graphviz + pkg-config + python3.pkgs.setuptools + python3.pkgs.wrapPython + swig + ]; + + cmakeFlags = [ + "-DGDAL_USE_INTERNAL_LIBS=OFF" + "-DGEOTIFF_INCLUDE_DIR=${lib.getDev libgeotiff}/include" + "-DGEOTIFF_LIBRARY_RELEASE=${lib.getLib libgeotiff}/lib/libgeotiff${stdenv.hostPlatform.extensions.sharedLibrary}" + "-DMYSQL_INCLUDE_DIR=${lib.getDev libmysqlclient}/include/mysql" + "-DMYSQL_LIBRARY=${lib.getLib libmysqlclient}/lib/mysql/libmysqlclient${stdenv.hostPlatform.extensions.sharedLibrary}" + ] ++ lib.optionals (!stdenv.isDarwin) [ + "-DCMAKE_SKIP_BUILD_RPATH=ON" # without, libgdal.so can't find libmariadb.so + ] ++ lib.optionals stdenv.isDarwin [ + "-DCMAKE_BUILD_WITH_INSTALL_NAME_DIR=ON" + ]; buildInputs = [ - libjpeg - libtiff - libpng - proj - openssl - sqlite - libspatialite + armadillo + c-blosc + brunsli + cfitsio + crunch + curl + cryptopp + libdeflate + expat libgeotiff - poppler - hdf4 - qhull + geos giflib - expat + libheif + dav1d # required by libheif + libaom # required by libheif + libde265 # required by libheif + rav1e # required by libheif + x265 # required by libheif + hdf4 + hdf5-cpp + libjpeg + json_c + libjxl + libhwy # required by libjxl + lerc + xz libxml2 + lz4 + libmysqlclient + netcdf + openjpeg + openssl + pcre2 + libpng + poppler postgresql - ] ++ (with pythonPackages; [ python setuptools numpy wrapPython ]) - ++ lib.optional stdenv.isDarwin libiconv - ++ lib.optionals netcdfSupport [ netcdf hdf5 curl ]; - - configureFlags = [ - "--with-expat=${expat.dev}" - "--with-jpeg=${libjpeg.dev}" - "--with-libtiff=${libtiff.dev}" # optional (without largetiff support) - "--with-png=${libpng.dev}" # optional - "--with-poppler=${poppler.dev}" # optional - "--with-libz=${zlib.dev}" # optional - "--with-pg=yes" # since gdal 3.0 doesn't use ${postgresql}/bin/pg_config - "--with-mysql=${getDev libmysqlclient}/bin/mysql_config" - "--with-geotiff=${libgeotiff}" - "--with-sqlite3=${sqlite.dev}" - "--with-spatialite=${libspatialite.dev}" - "--with-python" # optional - "--with-proj=${proj.dev}" # optional - "--with-geos=${geos}/bin/geos-config" # optional - "--with-hdf4=${hdf4.dev}" # optional - "--with-xml2=yes" # optional - (if netcdfSupport then "--with-netcdf=${netcdf}" else "") - ]; - - hardeningDisable = [ "format" ]; - - CXXFLAGS = lib.concatStringsSep " " [ - "-fpermissive" - # poppler uses std::optional - "-std=c++17" - ]; - - # - Unset CC and CXX as they confuse libtool. - # - teach gdal that libdf is the legacy name for libhdf - preConfigure = '' - substituteInPlace configure \ - --replace "-lmfhdf -ldf" "-lmfhdf -lhdf" - ''; - - preBuild = '' - substituteInPlace swig/python/GNUmakefile \ - --replace "ifeq (\$(STD_UNIX_LAYOUT),\"TRUE\")" "ifeq (1,1)" - ''; + proj + qhull + libspatialite + sqlite + libtiff + tiledb + libwebp + zlib + zstd + python3 + python3.pkgs.numpy + ] ++ lib.optionals (!stdenv.isDarwin) [ + # tests for formats enabled by these packages fail on macos + arrow-cpp + openexr + xercesc + ] ++ lib.optional stdenv.isDarwin libiconv; postInstall = '' wrapPythonPrograms @@ -91,13 +169,11 @@ stdenv.mkDerivation rec { # calls (coming from the python world) preCheck = '' pushd ../autotest - # something has made files here read-only by this point - chmod -R u+w . export HOME=$(mktemp -d) - export PYTHONPATH="$out/${pythonPackages.python.sitePackages}:$PYTHONPATH" + export PYTHONPATH="$out/${python3.sitePackages}:$PYTHONPATH" ''; - installCheckInputs = with pythonPackages; [ + installCheckInputs = with python3.pkgs; [ pytestCheckHook pytest-env lxml @@ -115,12 +191,16 @@ stdenv.mkDerivation rec { # https://github.com/OSGeo/gdal/issues/5523 "test_transformer_dem_overrride_srs" "test_osr_ct_options_area_of_interest" + # ZIP does not support timestamps before 1980 + " test_sentinel2_zipped" ] ++ lib.optionals (!stdenv.isx86_64) [ # likely precision-related expecting x87 behaviour "test_jp2openjpeg_22" ] ++ lib.optionals stdenv.isDarwin [ # flaky on macos "test_rda_download_queue" + ] ++ lib.optionals (lib.versionOlder proj.version "8") [ + "test_ogr_parquet_write_crs_without_id_in_datum_ensemble_members" ]; postCheck = '' popd # ../autotest @@ -129,8 +209,9 @@ stdenv.mkDerivation rec { meta = { description = "Translator library for raster geospatial data formats"; homepage = "https://www.gdal.org/"; + changelog = "https://docs.unidata.ucar.edu/netcdf-c/${src.rev}/RELEASE_NOTES.html"; license = lib.licenses.mit; - maintainers = [ lib.maintainers.marcweber ]; - platforms = with lib.platforms; linux ++ darwin; + maintainers = with lib.maintainers; [ marcweber dotlambda ]; + platforms = lib.platforms.unix; }; } |