about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/gdal
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/gdal')
-rw-r--r--nixpkgs/pkgs/development/libraries/gdal/default.nix216
1 files changed, 216 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/gdal/default.nix b/nixpkgs/pkgs/development/libraries/gdal/default.nix
new file mode 100644
index 000000000000..189c6f3a41a6
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/gdal/default.nix
@@ -0,0 +1,216 @@
+{ 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
+, lerc
+, xz
+, libxml2
+, lz4
+, libmysqlclient
+, netcdf
+, openexr
+, openjpeg
+, openssl
+, pcre2
+, libpng
+, poppler
+, postgresql
+, proj
+, qhull
+, libspatialite
+, sqlite
+, libtiff
+, useTiledb ? !(stdenv.isDarwin && stdenv.isx86_64)
+, tiledb
+, libwebp
+, xercesc
+, zlib
+, zstd
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gdal";
+  version = "3.6.4";
+
+  src = fetchFromGitHub {
+    owner = "OSGeo";
+    repo = "gdal";
+    rev = "v${version}";
+    hash = "sha256-pGdZmQBUuNCk9/scUvq4vduINu5gqtCRLaz7QE2e6WU=";
+  };
+
+  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/${lib.optionalString (libmysqlclient.pname != "mysql") "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"
+  ] ++ lib.optionals (!useTiledb) [
+    "-DGDAL_USE_TILEDB=OFF"
+  ];
+
+  buildInputs = [
+    armadillo
+    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
+    lerc
+    xz
+    libxml2
+    lz4
+    libmysqlclient
+    netcdf
+    openjpeg
+    openssl
+    pcre2
+    libpng
+    poppler
+    postgresql
+    proj
+    qhull
+    libspatialite
+    sqlite
+    libtiff
+  ] ++ lib.optionals useTiledb [
+    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
+  '';
+
+  enableParallelBuilding = true;
+
+  doInstallCheck = true;
+  # preCheck rather than preInstallCheck because this is what pytestCheckHook
+  # calls (coming from the python world)
+  preCheck = ''
+    pushd ../autotest
+
+    export HOME=$(mktemp -d)
+    export PYTHONPATH="$out/${python3.sitePackages}:$PYTHONPATH"
+  '';
+  nativeInstallCheckInputs = with python3.pkgs; [
+    pytestCheckHook
+    pytest-env
+    lxml
+  ];
+  disabledTestPaths = [
+    # tests that attempt to make network requests
+    "gcore/vsis3.py"
+    "gdrivers/gdalhttp.py"
+    "gdrivers/wms.py"
+  ];
+  disabledTests = [
+    # tests that attempt to make network requests
+    "test_jp2openjpeg_45"
+    # tests that require the full proj dataset which we don't package yet
+    # 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"
+    # tries to call unwrapped executable
+    "test_SetPROJAuxDbPaths"
+  ] ++ 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
+  '';
+
+  __darwinAllowLocalNetworking = true;
+
+  meta = {
+    description = "Translator library for raster geospatial data formats";
+    homepage = "https://www.gdal.org/";
+    changelog = "https://github.com/OSGeo/gdal/blob/${src.rev}/NEWS.md";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ marcweber dotlambda ];
+    platforms = lib.platforms.unix;
+  };
+}