about summary refs log tree commit diff
path: root/pkgs/development/libraries/gdal/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/libraries/gdal/default.nix')
-rw-r--r--pkgs/development/libraries/gdal/default.nix221
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;
   };
 }