From dcd559e08192c8253b7e4027f39b7fd58f655cfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Mon, 27 Jun 2022 22:14:52 +0000 Subject: [PATCH] gdal: 3.4.2 -> 3.5.2 https://github.com/OSGeo/gdal/blob/v3.5.2/NEWS.md --- pkgs/development/libraries/gdal/default.nix | 208 +++++++++++++------- pkgs/top-level/all-packages.nix | 11 +- pkgs/top-level/python-packages.nix | 2 +- 3 files changed, 141 insertions(+), 80 deletions(-) diff --git a/pkgs/development/libraries/gdal/default.nix b/pkgs/development/libraries/gdal/default.nix index bec478c66bd9..89912d93f4b3 100644 --- a/pkgs/development/libraries/gdal/default.nix +++ b/pkgs/development/libraries/gdal/default.nix @@ -1,84 +1,149 @@ -{ 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 +, 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 +, kea +, 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.5.2"; src = fetchFromGitHub { owner = "OSGeo"; repo = "gdal"; rev = "v${version}"; - sha256 = "sha256-bE55VV0SrG8nxCLdpODRalnuAkn+olRdMLUjduavj6M="; + sha256 = "sha256-jtAFI1J64ZaTqIljqQL1xOiTGC79AZWcIgidozWczMM="; }; - sourceRoot = "source/gdal"; + nativeBuildInputs = [ + bison + cmake + doxygen + graphviz + pkg-config + python3.pkgs.setuptools + python3.pkgs.wrapPython + swig + ]; - nativeBuildInputs = [ autoreconfHook pkg-config unzip ]; + 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}" + "-DCMAKE_SKIP_BUILD_RPATH=ON" # without, libgdal.so can't find libmariadb.so + ]; buildInputs = [ - libjpeg - libtiff - libpng - proj - openssl - sqlite - libspatialite - libgeotiff - poppler - hdf4 - qhull - giflib + armadillo + arrow-cpp + c-blosc + brunsli + cfitsio + crunch + curl + cryptopp + libdeflate expat + libgeotiff + geos + giflib + 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 + kea + lerc + xz libxml2 + lz4 + libmysqlclient + netcdf + openexr + 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 + xercesc + zlib + zstd + python3 + python3.pkgs.numpy + ] ++ lib.optional stdenv.isDarwin libiconv; postInstall = '' wrapPythonPrograms @@ -91,13 +156,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,6 +178,8 @@ 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" @@ -129,8 +194,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; }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index fc21ad36f255..8a945ce78a8f 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -18829,10 +18829,7 @@ with pkgs; libXpm = null; }; - gdal = callPackage ../development/libraries/gdal { - pythonPackages = python3Packages; - autoreconfHook = buildPackages.autoreconfHook269; - }; + gdal = callPackage ../development/libraries/gdal { }; gdcm = callPackage ../development/libraries/gdcm { inherit (darwin.apple_sdk.frameworks) ApplicationServices Cocoa; @@ -36794,10 +36791,8 @@ with pkgs; mysql-workbench = callPackage ../applications/misc/mysql-workbench (let mysql = mysql80; in { gdal = gdal.override { - libmysqlclient = mysql // { - lib = { dev = mysql; } - ;} - ;}; + libmysqlclient = mysql; + }; mysql = mysql; pcre = pcre-cpp; jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731 diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index c4714ffe9a52..ae919c61444a 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -3573,7 +3573,7 @@ self: super: with self; { gcsfs = callPackage ../development/python-modules/gcsfs { }; - gdal = toPythonModule (pkgs.gdal.override { pythonPackages = self; }); + gdal = toPythonModule (pkgs.gdal.override { python3 = python; }); gdata = callPackage ../development/python-modules/gdata { };