Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gdal: 3.4.2 -> 3.5.2 #179406

Merged
merged 19 commits into from
Nov 15, 2022
Merged
Show file tree
Hide file tree
Changes from 18 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions pkgs/development/libraries/brunsli/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
{ lib
, stdenv
, fetchFromGitHub
, fetchpatch
, cmake
, brotli
}:

stdenv.mkDerivation rec {
pname = "brunsli";
version = "0.1";

outputs = [ "out" "dev" ];

src = fetchFromGitHub {
owner = "google";
repo = "brunsli";
rev = "v${version}";
hash = "sha256-ZcrRz2xSoRepgG8KZYY/JzgONerItW0e6mH1PYsko98=";
};

patches = [
# unvendor brotli
(fetchpatch {
url = "https://cgit.freebsd.org/ports/plain/graphics/brunsli/files/patch-CMakeLists.txt";
extraPrefix = "";
hash = "sha256-/WPOG9OcEDj9ObBSXEM8Luq4Rix+PS2MvsYyHhK5mns=";
})
(fetchpatch {
url = "https://cgit.freebsd.org/ports/plain/graphics/brunsli/files/patch-brunsli.cmake";
extraPrefix = "";
hash = "sha256-+HXA9Tin+l2St7rRUEBM0AfhAjSoFxz8UX7hsg12aFg=";
})
];

postPatch = ''
rm -r third_party
'' + lib.optionalString stdenv.isDarwin ''
rm -r build
'';

nativeBuildInputs = [
cmake
];

buildInputs = [
brotli
];

meta = {
description = "Lossless JPEG repacking library";
homepage = "https://github.com/google/brunsli";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ dotlambda ];
};
}
213 changes: 143 additions & 70 deletions pkgs/development/libraries/gdal/default.nix
Original file line number Diff line number Diff line change
@@ -1,84 +1,154 @@
{ 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
dotlambda marked this conversation as resolved.
Show resolved Hide resolved
, 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"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any particular reason to disable internal libs? To avoid vendoring? Could this be the reason LERC compression is currently unavailable?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To avoid vendoring?

This. It's hard enough to stay on top of all the libs that need security updates in nixpkgs without libraries hiding their own versions all over the place (which they frequently neglect for years)

"-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
kea
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
Expand All @@ -91,13 +161,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
Expand All @@ -115,12 +183,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
Expand All @@ -129,8 +201,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;
};
}
30 changes: 30 additions & 0 deletions pkgs/development/libraries/lerc/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{ lib
, stdenv
, fetchFromGitHub
, cmake
}:

stdenv.mkDerivation rec {
pname = "lerc";
version = "3.0";

outputs = [ "out" "dev" ];

src = fetchFromGitHub {
owner = "esri";
repo = "lerc";
rev = "v${version}";
hash = "sha256-QO5+ouQy5nOcAgvxMeBDoSBP+G3ClDjXipnkuSIDcP0=";
};

nativeBuildInputs = [
cmake
];

meta = {
description = "C++ library for Limited Error Raster Compression";
homepage = "https://github.com/esri/lerc";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ dotlambda ];
};
}
Loading