-
-
Notifications
You must be signed in to change notification settings - Fork 2.5k
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
Cannot control what proj
is used with GDAL
#8942
Comments
@Chrismarsh does #8943 fix your issue ? |
Would it also be possible to remove prioritization of PROJ 9/8 such that the first PROJ found in your PATH/CMAKE_PREFIX_PATH is used regardless of version? Then Spack wouldn't even need to specify this flag. Not sure if prioritization was added to solve a different issue. We're fine with adding these flags if you need to keep prioritization in place. |
Another attempt at fixing the issue in #8956 |
@adamjstewart can you give it a try ? |
I don't actually have the original issue so I won't be able to verify whether or not it worked. I gave up Homebrew entirely and only use Spack. |
@Chrismarsh Are you able to give a try to #8956 ? |
If you don't want to use this particular config, configure with |
@dg0yt unfortunately this solution doesn't work for package managers. We need a recipe that will work for all users on all systems. If there isn't a way to tell CMake where a dependency can be found, then we can't reliably build GDAL with a specific PROJ installation. |
@rouault and all: sorry just been busy this weekend. Thanks for taking a look. I have a family thing this am but can look later today I hope. Tomorrow (Tuesday) at the earliest I agree that the inverse (ignore this flag) is not ideal as there could be many configurations available and it would be simpler and cleaner to specify exactly what you want versus by exclusion. Easy to miss one! |
shouldn't Spack build recipe sets https://cmake.org/cmake/help/latest/variable/CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH.html#variable:CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH and https://cmake.org/cmake/help/latest/variable/CMAKE_FIND_USE_CMAKE_SYSTEM_PATH.html#variable:CMAKE_FIND_USE_CMAKE_SYSTEM_PATH to NO. That would avoid it looking in other directories than its prefix (I imagine it sets CMAKE_PREFIX_PATH?) as far as I can understand ? |
Yes, we set |
A cleaner solution would follow the pattern find_package(PROJ CONFIG)
if(PROJ_FOUND)
string(APPEND GDAL_IMPORT_DEPENDENCIES "find_dependency(PROJ ${PROJ_VERSION_MAJOR} CONFIG)\n")
else()
find_package(PROJ 6.3 REQUIRED)
string(APPEND GDAL_IMPORT_DEPENDENCIES "find_dependency(PROJ 6.3)\n")
endif This just prefers config mode over module mode, which is a reasonable choice for modern packages. |
@adamjstewart @rouault sorry for the slowness on my end. I can confirm that setting both those cmake vars results in a successful build that does not link against homebrew's
@adamjstewart I see that you've already set
@rouault Do you still want me to try #8956 given @dg0yt's simpler suggestion above? |
@rouault I patched gdal 3.8.0 with /pull/8964 (reverting my other changes) and it works as expected:
@adamjstewart I did:
|
Thanks for simplifying to #8964 :) As a remark: I think even if we disable "default search paths" it may be that the Homebrew directory is added to That is to say, sticking to the default search procedure is the least surprising, and people who want to force a particular version of a dependency can always shuffle the entries of |
CMake: simplify PROJ detection (refs #8942 (comment))
AbelPau (14): Add MiraMonVector read/creation driver (#9688) Miramon: fixes and additional tests MiraMonVector fixes (2) tests improvements (+10) (#9744) MiraMonVector driver. Adding tests MIraMonVector Fix. MiraMonVector: fix memleak in creation error case (#9805) Little fixes in MiraMon metadata files MiraMonVector: Adding more matchs in the look-up table MM_m_idofic.csv MiraMonVector: Fixing error in linestring (from not polygon) metadata file MiraMonVector: Fixing chromium bug 68809 Fixing chromium bug 68809 correctly MiraMonVector: fix a case of sensitive comparison MIraMonVector: fixing MMResetFeatureRecord MiraMonVector: fixing accepted metadata versions/subversions Adam Gutonski (1): OpenFileGDB writer: set xml shape type to "esriGeometryPolyline" for LineString/MultiLineString (#9033) Alan Ramírez Herrera (1): GeoRaster: Added GENSTATS options, security fixes, and prevent failing when password is near expiration (#9290) Alessandro Pasotti (15): OAPIF: add INITIAL_REQUEST_PAGE_SIZE open option (fixes #4556) (#8763) OGR: Add OGRLayer::GetExtent3D() (#8806) SubdatasetInfo API: fix protocol and bogus SubdatasetInfo: better check for drive letters for netCDF/HDF4/HDF5 (#8891) (fixes #8881) GPKG: add GetExtent3D semi-fast implementation (#8910) PG: add GetExtent3D fast implementation (#8939) GEOJSON: add GetExtent3D "fast" implementation (#9017) OGR: fix read corrupted wkb with mixed 2D and 3D geoms GDALSuggestWarpOutput(): make it return original potential non-square pixel shape for a south-up oriented dataset (#9336) Overview/RasterIO resampling: fix infinite looping when nodata has a big absolute value (#9428) [clang-format] Add line breaks after methods definition clang-format all files to add line breaks Warp: make target resolution independent from source extent when -te is specified (#9573) VSICACHE: avoid EOF read (#9669) gdalinfo: use argparser (#9687) Andrea Giudiceandrea (3): [Docs] [CEOS] Fix ref to SAR_CEOS driver [Docs] [SAR_CEOS] Fix ref to CEOS driver gdal_polygonize.py: handle error if creation of dst ds fails Andreas Bergstrøm Aarnseth (1): SWIG: Exposes additional Dataset methods for the csharp wrapper (fixes #918) (#9398) Andrew Johnston (1): Fix rendering of code block in python readme Bas Couwenberg (1): Include <cstdint> for uint64_t. Björn (1): GML: Fix reference in docs Brad Hards (1): port: minor apidoc cleanup Charlie Savage (3): This commit updates OGC map tiles api to support additional image formats beyond PNG/JPG as well as enables content negotiation. OGCAPI: Add geotiff as supported image_format option to avoid warning message (master only) QuietDeleteForCreateCopy(): forward source dataset open options (#9422) Chris Toney (1): doc: update ogr2ogr default value for -gt in Performance hints Dan Baston (5): OGRLayer: Have CreateField/CreateGeomField take const OGRFieldDefn/OGRGeomFieldDefn* argument (#8741) Update swig/include/python/docs/gdal_dataset_docs.i Doc: Update Python API docs for ogr.Feature (#9486) Doc: Update Python API docs for FieldDefn, FieldDomain (#9579) autotest: run Python tests directly from source tree on Windows (#9224) Daniel Baston (78): CI: Add Ubuntu 22.04 configuration CI: Remove Ubuntu 18.04 x64 configuration CI: Add Alpine 32-bit configuration CI: Remove Ubuntu 18.04 i386 configuration CMake: Default to C++17 DXF: Silence gcc 13 compiler warning in C++17 mode CI: Disable LIBKML in Windows builds OGRSQL: Store column defs in std::vector OGRSQL: Support SELECT * EXCLUDE(...) CI: Remove redundant clang-format check Doc: Add Python API docs for gdal.Dataset Doc: Add Python API docs for gdal.Band Python: Update ReadAsArray, WriteArray docstrings VRTDerivedRasterBand: Support Int8, (U)Int64 with Python pixel functions Doc: Add instructions for Python API documentation Doc: Add Python docstrings for some functions in gdal module SWIG: Fix gdal.Warp segfault with dst=None Doc: Add Python API docs for gdal.Driver Python bindings: Invalidate layer ref when Dataset closes Python bindings: Accept str arg in FeatureDefn.GetFieldDefn Doc: Update Python API docs for ogr.FeatureDefn Doc: Organize Python API docs Doc: Update vector data model description Python: Add Band.ReadAsMaskedArray Python bindings: Make gdal.GeneralCmdLineProcessor accept int, os.PathLike gdal_translate: avoid dataset leak on invalid -exponent and -scale Python bindings: Make ogr.GeneralCmdLineProcessor accept int, os.PathLike autotest: remove asserts under pytest.raises(Exception) WMS: Use GDAL_HTTP_TIMEOUT autotest: test_gdal_edit.py: use_tmp_path fixture autotest: test_gdal_fillnodata.py: use_tmp_path fixture autotest: test_gdal_polygonize.py: use_tmp_path fixture autotest: test_gdal_sieve.py: use_tmp_path fixture autotest: test_gdal_utils.py: use_tmp_path fixture autotest: test_gdallocationinfo.py: use_tmp_path fixture autotest: test_gdalmove.py: use_tmp_path fixture autotest: test_validate_geoparquet.py: use_tmp_path fixture autotest: test_gdal_proximity.py: use_tmp_path fixture autotest: test_gdal_calc.py: use_tmp_path fixture autotest: test_ogr_layer_algebra.py: use_tmp_path fixture autotest: test_ogrmerge.py: use_tmp_path fixture autotest: test_gdal2tiles.py: use_tmp_path fixture autotest: test_gdal2xyz.py: use_tmp_path fixture Python: remove ogr2ogr.py sample CMake: Add missing dependency on SubdatasetInfo.i gdalinfo: suggest trying ogrinfo if appropriate ogrinfo: suggest trying gdalinfo if appropriate netCDF: Add BAND_NAMES creation option NEWS: Fix typo Doc: Add Python API docs for osr module autotest: warn if sequential tests are not sent to same parallel worker autotest ogr_hana.py: mark tests as order-dependent autotest vsiadls.py: cleanup config options after tests run autotest ogr_pgdump.py: use tmp_path, tmp_vsimem autotest ogr_pds4.py: use tmp_path, tmp_vsimem autotest: Allow custom temp dir in GDALTest autotest tiff_read.py: use tmp_path, tmp_vsimem, parametrize autotest ogr_fgdb.py: mark as order-dependent, add missing argument autotest vsiaz.py: use tmp_vsimem autotest vsiadls.py: use tmp_vsimem autotest: ogr_pgdump.py: avoid writing to gdaltest module autotest ogr_georss.py: combine two interdependent tests autotest vsis3.py: avoid setting custom AWS_S3_ENDPOINT in tests that should not use it autotest vsis3.py: use tmp_vsimem fixture autotest ogr_hana.py: skip tests if connection string not set autotest ogr_db2_hack.py: combine interdependent tests autotest ogr_openfilegdb.py: use tmp_path, tmp_vsimem autotest ogr_gpkg.py: use tmp_path, tmp_vsimem autotest: ogr_geojson.py: use tmp_path, tmp_vsimem autotest: ogr_geoconcept.py: use tmp_path autotest: ogr_dxf.py: use tmp_path autotest: ogr_gpx.py: use tmp_vsimem autotest: ogr_index_test.py: use tmp_path autotest ogr_sql_test.py: use tmp_path Python bindings: Avoid crash when accessing closed file autotest vsiadls.py: use module scope for setup/cleanup Python scripts: Use decorator to enable exceptions Python bindings: Avoid crash when using orphaned subgeometry Dave Martinez (1): Dockerfile Ubuntu - Remove apache arrow deb file David Shean (1): gdal_edit: add -a_coord_epoch option with test, update doc Edouard Choinière (3): Doc: Fix some typos in HFA -- Erdas Imagine .img docs (#9387) CI: Add branches-ignore on pushes to backport branches for CodeQL workflow CI: Add branches-ignore on pushes to dependabot branches Edvins Liepa (1): gdal2xyz: Change -srcwin parameter type to integer. Even Rouault (1633): Add RFC96 text: Deferred in-tree C++ plugin loading Set master to 3.9.0dev RFC 96: revise to avoid GDALPluginDriverFeatures gdal_create: copy GCPs present in the input file Travis CI: update to jammy RFC96: add out-of-tree deferred loaded plugin capability CI Travis: s390x: use ctest for python tests exr.py: add expected checksum for s390x jammy CI Travis: s390x: disable broken tests CI: skip test_tiff_read_cog_with_mask_vsicurl on s390x Python utilities: make gdal_edit, gdal_pansharp, gdal_retile and ogr_layer_algebra return 0 error code when invoked with --version switch RFC96: mention another backward compatibility issue gdalwarp -of COG: use target SRS from -co TILING_SCHEME when specified (fixes #8684) VRTSourcedRasterBand: serialize approximate statistics inside .vrt when there are overviews gdal_rasterize: fix inverse rasterization of polygon nested inside another one. Requires GEOS enabled build (fixes #8689) ubuntu-full/Dockerfile: update Arrow version [ci skip] RFC96; update with custom installation message S57: stricter dataset identification to avoid recognize S-101 datasets we don't handle docker/README.md: advertize 3.8.0 [ci skip] Doc: advertize 3.8.0 swig/python/README.rst: fix link [ci skip] GPKG: fix SetFeature()/UpdateFeature()/DeleteFeature() on views with INSTEAD OF triggers (fixes #8707) SQLite: fix SRS retrieval of a SELECT layer from a non-Spatialite DB with a point geometry column (fixes #8677) various CMakeLists.txt: remove now useless target_compile_features(cxx_std_17) Doc: update requirements to C++17 Replace uses of cpl::make_unique<> with std::make_unique<> cpl_conv.h: remove cpl::make_unique<> template Python bindings: add RasterAttributeTable::ReadValuesIOAsString, ReadValuesIOAsInteger, ReadValuesIOAsDouble, RemoveStatistics() GDALRATValuesIOAsString(): fix wrong type for papszStrList argument Add GDALCreateRasterAttributeTableFromMDArrays() to return a virtual Raster Attribute Table from several GDALMDArray's Remove deprecated ARG driver (fixes #7920) Remove GDALIsDriverDeprecatedForGDAL39StillEnabled() RFC96 text: add GDAL_DMD_CONNECTION_PREFIX and GDAL_DCAP_VECTOR_TRANSLATE_FROM to the list of items that must be set on the proxy Inverse TPS transformer: speed improvement in gdalwarp use case (fixes #8672) Fix a few cppcheck warnings MSGN: fix memleak in error code path Fix warnings (false positives, or non-important) raised by CSA CI: update CLang Static Analyzer job to ubuntu 22.04 C++17: use if constexpr() construct Doc: update createFromGML() doc regarding curves (fixes #8719) RFC96 text: add missing word Python bindings: define entry_points.console_scripts Doc: PG: warn to force PG_USE_COPY=NO when using PgPoolII (fixes #8674) gdal_sieve.py/gdalattachpct.py/gdalcompare.py/gdalmove.py: make sure --version and --help return 0 error code (fixes #8717) bag.rst: fix MODE=INTERPOLATED C++17: replace CPL_FALLTHROUGH by standard [[fallthrough]]; Replace custom StringView with std::string_view C++17: use structured bindings declaration and class template argument deduction for std::pair() Doc: change default of GDAL_HTTP_MERGE_CONSECUTIVE_RANGES to YES gdaltest.gdalurlopen(): better detect timeout sqlite_rtree_bulk_load.c: fix memleak in error code path PMTiles: avoid undefined-shift when zoom level is too big (fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=64234) RFC96: update voting history and status COG: avoid warnings when converting from world coverage to EPSG:3857 gdalwarp: add a heuristic to clamp northings when projecting from geographic to Mercator (typically EPSG:3857) (fixes #8730) fuzzers/CMakeLists.txt: remove CXX_STANDARD redefinition GML: SaveClasses(): fix memleak in error code path. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=63871 Doc: OGRFieldDefn/OGRGeomFieldDefn: add note about not modifying them directly if they belong to a layer definition Doc: OGRFeatureDefn: add warning about not modifying directly if belonging to a OGRLayer OGRFeatureDefn, OGRFieldDefn, OGRGeomFieldDefn: add Seal() and Unseal() methods GPKG: make use of OGRFeatureDefn sealing Shape: make use of OGRFeatureDefn sealing OpenFileGDB: make use of OGRFeatureDefn sealing MITAB: make use of OGRFeatureDefn sealing MEM, GeoJSON, JSONFG, TopoJSON, ESRIJSON, ODS, XLSX: make use of OGRFeatureDefn sealing PG: make use of OGRFeatureDefn sealing MIGRATION_GUIDE.TXT: mention RFC 97 fuzzers/build_google_oss_fuzzers.sh: enable -std=c++17 otherwise gcc complains about 'use of deleted function ‘OGRFeatureDefn::TemporaryUnsealer::TemporaryUnsealer(const OGRFeatureDefn::TemporaryUnsealer&)' in whileUnsealing() helpers swig/include/gdal_array.i: no longer define GDAL_COMPILATION and DO_NOT_USE_DEBUG_BOOL Add whileUnsealing() helper method autotest/cpp: add testing of sealing functionality Internal libtiff: resync with upstream Fix build error with libxml2 2.12 Fix build error with libxml2 2.12 (cont'd) GTiff/internal libtiff: Use (future) libtiff 4.6.1 TIFFOpenOptionsSetMaxSingleMemAlloc() ogr_swq.h: remove declaration of no longer implemented function swq_select_parse() Remove swq_select::Dump(): unused debugging function not testing everything, and superseded by Unparse() Fix swq_select::Unparse() and add tests for it Shapelib: resync with upstream .github/workflows/ubuntu_20.04/build.sh: remove useless -std=c++17 .github/workflows/alpine/build.sh: build with -std=c++23 GPKG: fix GetNextArrowArray() when there are more than 125 columns (affects ogr2ogr from such GPKG) (fixes #8757) sql_sqlite_dialect.rst: fix loading of spatialite ogr2ogr: fix GPKG to shapefile with the -preserve_fid flag (fixes #8761) Add a OGRPARSEDATE_OPTION_LAX option to OGRParseDate() and use it when reading GPKG files (fixes #8759) GetArrowStreamAsNumPy(): fix missing offset when reading fixed size list of string PostFilterArrowArray(): various fixes to pass libarrow full validation checks (fixes #8755) CSLLoad2(): remove CPLErrorReset() Shapefile reader: fix spurious warning when reading polygons (ammends fix of #8483, fixes #8767) OGRGeoJSONDriverIdentify: return -1 when unsure test_ogr_basic_10(): better error message Add mechanism for deferred plugin loading Parquet: implement deferred driver loading netCDF: implement deferred driver loading HDF5: implement deferred driver loading CMake: add [GDAL|OGR]_REGISTER_DRIVER_<driver_name>_FOR_LATER_PLUGIN options RFC96: unify the way we set metadata on plugin driver and actual driver ECW: implement deferred driver loading JP2KAK: implement deferred driver loading JPIPKAK: implement deferred driver loading HDF4: implement deferred driver loading PDF: implement deferred driver loading OpenJPEG: implement deferred driver loading Arrow: implement deferred driver loading CI Conda: add patch to enable OGR_REGISTER_DRIVER_ARROW/PARQUET_FOR_LATER_PLUGIN CMake: add a way of defining an external defered driver by setting one or several ADD_EXTERNAL_DEFERRED_PLUGIN_XXX CMake variables that will cause the pointed file to be built in libgdal, and a DeclareDeferredXXX() C function in it to be called by GDALAllRegister() JPEGXL: implement deferred driver loading gdalmanage: make --utility_version work jpegxl.py: test identifying raw codestream FileGDB: implement deferred driver loading PG: implement deferred driver loading MySQL: implement deferred driver loading MSSQL: implement deferred driver loading OCI: implement deferred driver loading HANA: implement deferred driver loading LIBKML: implement deferred driver loading DGNv8 / DWG: implement deferred driver loading load_postgisraster_test_data.sh: unset GDAL_DRIVER_PATH if set PostGISRaster: implement deferred driver loading WEBP: implement deferred driver loading EXR: implement deferred driver loading HEIF: implement deferred driver loading BASISU_KTX2: implement deferred driver loading GEORASTER: implement deferred driver loading gdal_frmts.h: remove no longer existing GDALRegister_JPEGLS() declaration PCRaster: implement deferred driver loading TileDB: implement deferred driver loading JP2Lura: implement deferred driver loading KEA: implement deferred driver loading Rasterlite: implement deferred driver loading PNG: implement deferred driver loading DDS: implement deferred driver loading GTA: implement deferred driver loading FITS: implement deferred driver loading MongoDBv3: implement deferred driver loading IDB: implement deferred driver loading SOSI: implement deferred driver loading ogr_sosi.py: clean up temporary directory XLS: implement deferred driver loading frmts/gdalallregister.cpp: remove disabled code GRIB: implement deferred driver loading OGDI: implement deferred driver loading MSG: implement deferred driver loading Remove unused declaration of GDALRegister_Istar() Zarr: implement deferred driver loading NITF: make it plugin capable if not using internal libtiff, libjpeg and libjpeg12 NITF: implement deferred driver loading MRF: make it plugin capable if using external libraries MRF: implement deferred driver loading GIF: make it plugin capable GIF: implement deferred driver loading OpenFileGDB: implement deferred driver loading PCIDSK: implement deferred driver loading JPEG: make it plugin capable if using external libraries JPEG: implement deferred driver loading WCS: implement deferred driver loading WMS: implement deferred driver loading WMTS: implement deferred driver loading CAD: implement deferred driver loading RAW drivers: make them buildable as (a single) plugin PDS related drivers (PDSx, ISISx, VICAR): make them buildable as plugin if depending on external libraries pds4.py and isis.py: make robust to other missing drivers PDS related drivers (PDSx, ISISx, VICAR):implement deferred driver loading building_from_source.rst: update RFC96: add [GDAL|OGR]_DRIVER_<driver_name>_PLUGIN_INSTALLATION_MESSAGE CMake option to customize error message .github/workflows/coverage/build.sh: enable plugin build Add autotest/cpp/test_deferred_plugin.cpp VFK: implement deferred driver loading GMLAS: implement deferred driver loading ODBC: implement deferred driver loading Carto: implement deferred driver loading Elasticsearch: implement deferred driver loading PLScenes: implement deferred driver loading RFC96: add GDAL_DMD_CONNECTION_PREFIX and GDAL_DCAP_VECTOR_TRANSLATE_FROM to the list of items that must be set on the proxy Doc: link to RFC96 in raster and vector driver implementation tutorials rasterlitedataset.cpp: avoid CSA warning about potential nullptr RFC96: add a DEFINE_DRIVER_METHOD_GET_CALLBACK() macro to make code more compact Doc: GDAL_DRIVER_PATH: document 'disable' Doc: GDALOpenEx(): explain the 2 passes BSB: fix opening datasets with errant 0x1A character in header (fixes #8765) Add OGRCloneArrowArray() Arrow/Parquet: use OGRCloneArrowArray() for safer filtering Parquet test file: write distinct values in struct_field and list_struct fields WriteArrowArray(): fix wrong taking into account of struct offset GDALDriverManager::DeclareDeferredPluginDriver(): disable debug message typo fixes frmts/nitf/CMakeLists.txt: fix condition to build as plugin GdalDriverHelper.cmake: error out if a driver has been asked as a plugin, but conditions are not met [Lint] GTiff: move HasOptimizedReadMultiRange() implementation to appropriate file GTiff SRS reader: include VertCRS name from EPSG in CompoundCRS name if there's no citation geokey typo fixes GTiff multithreaded reader/writer: in update scenarios, do not force serialization to disk of dirty blocks that intersect the area of interest to read (fixes #8729) gdalwarp: progress bar tunings cmake/helpers/GdalDriverHelper.cmake: use better generated filename (master only) RFC96: change status to implemented PMTiles: avoid undefined-shift when zoom level is too big (fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=64404) KEA: Create(): error out if passing a /vsi file. avoids crashes (fixes #8743) OGRCloneArrowArray(): tiny perf improvements Avoid 'local variable ... will be copied despite being returned by name [-Wreturn-std-move]' with some clang versions Increase a bit test test coverage of WriteArrowBatch() gdal_footprint: fix -ovr on RGBA datasets (fixes #8792) Add missing '#include <cctype>' (master only) Revert "Python bindings: define entry_points.console_scripts" CMake: make GDAL_USE_LIBKML and GDAL_USE_OPENJPEG honor GDAL_USE_EXTERNAL_LIBS CI: Linux: test install target CSV writer: do not quote integer fields by default (only if STRING_QUOTING=ALWAYS is specified) swig/python/install_python.cmake.in: detect failure in installation swig/python/CMakeLists.txt: do not set SETUPTOOLS_USE_DISTUTILS=stdlib for Python 3.12 on Debian Python scripts: define entry_points.console_scripts to have launcher shell/exe scripts PDF: silence false positive Coverity warnings (CID 1525215,1525184,1525078) cpl_vsil_gzip.cpp: rework code a bit to hopefully silence CID 1525336 swq_select_summarize(): avoid definition of potential invalid pointer (master only, CID 1525071) CI: test that we can compile all headers with C++11 (fixes #8796) No longer install cpl_minizip_ioapi.h cpl_minizip_unzip.h cpl_minizip_zip.h. GDALOverviewDataset::IRasterIO(): use parent dataset when possible for more efficiency Fix gdalgrid_priv.h compilation Fix gdalpansharpen.h compilation swig/python/setup.py.in: workaround easy_install behavior on Windows to keep .py scripts (fixes #8811) test_gdalinfo.py: use temporary file to avoid potential concurrency issues CI Windows build: test 'python setup.py install' autotest/cpp/CMakeLists.txt: avoid recompiling main_gtest.cpp multiple times pmtiles.rst: document it is built-in GPX: make detection of <extensions> element more robust (fixes #8827) Add VSIVirtualHandle::Printf() [Lint] GPX driver: prefix member variables and inline initialize, use smart pointers, etc. sozip: support generic command line options GeoJSON writer: add FOREIGN_MEMBERS_FEATURE and FOREIGN_MEMBERS_COLLECTION layer creation option ogr_CityJSON.py: improve identify() to recognize https://3d.bk.tudelft.nl/opendata/cityjson/3dcities/v2.0/9-284-556.city.json [ci skip] GDALDriverManager::GetPluginFullPath(): use std::move() (CID 1528548) GPKG: use locking to make Coverity happy (CID 1528549) Move Coverity suppression WFS: fix memleak in error code path (CID 1214433) OGRODBCDataSource::Open(): simplify code to avoid false-positive nullptr deref warning (CID 1525166) Add third_party/fast_float/resync_with_upstream.sh Resync third_party/fast_float with upstream GPSBabel: simplify code to avoid false-positive nullptr deref warning (CID 1297184, 1214416), and increase test coverage Doc: add instructions how to build and use the Java bindings COG: for JPEG compression, convert single band+alpha as single band JPEG + 1-bit mask band gdal_footprint.rst: typo fix gdal_footprint: really fix datasets with alpha band, by vectorizing only the alpha band and not the other ones (really fixes #8792, fixes #8834) Python bindings: add a combineBands option to gdal.Footprint() gdal_footprint: fix taking into account of individual bands that have nodata Shapefile: recogize ' 0' as a null date Shapefile: fix writing an invalid "0000/00/00" date RFC 97 text: OGRFeatureDefn, OGRFieldDefn and OGRGeomFieldDefn "sealing" (#8734) ExecuteSQL(): add a warning if the dialect name isn't recognized (fixes #8843) OGRGeoPackageTableLayer::SetCreationParameters(): add missing sealing (master only) ogr2ogr: fix GPKG -> Shapefile when field names are truncated (fix #8849, 3.8.0 regression) Doc: SQL dialects: improvements LIBKML: fix typo in error message [ci skip] ogr_libkml.rst: document AUTHOR_NAME, AUTHOR_URI, AUTHOR_EMAIL options (fixes #8851) GDALOpen(): fix memleaks (master only) cpl_recode.cpp/cpl_recode_stub.cpp: small cleanup OGR SQL: add UTF-8 support for LIKE/ILIKE (for layers declaring OLCStringsAsUTF8) (fixes #8835) OGR SQLite/SQLite/GPKG: add UTF-8 support for case-insensitive LIKE (fixes #8835) typo fixes gdal_footprint: return an error if the requested output layer doesn't exist Python bindings: gdal.Footprint(): add a minRingArea option Increase test coverage of gdal_footprint ogr2ogr: add [--long-usage] in synopsis (fixes #8853) /vsis3/: takes into account AWS_CONTAINER_CREDENTIALS_FULL_URI environment variable (fixes #8858) FlatGeobuf: add support for reading and writing layer title, description and metadata GDALTranslate(): avoid useless extra GDALOpen() call on a target GeoRaster autotest: test_osr_esri_28(): make it robust when run against latest EPSG dataset version STACTA: use GDAL_DISABLE_READDIR_ON_OPEN=EMPTY_DIR instead of CPL_VSIL_CURL_ALLOWED_EXTENSIONS JPEGXL: add compatibility with latest libjxl git HEAD OpenFileGDB: add support for Integer64, Date, Time and DateTimeWithOffset data types added in ArcGIS Pro 3.2 (fixes #8862) pct2rgb.py: emit explicit exception when source file has no color table (fixes #8793) docker/README.md: advertize 3.8.1 [ci skip] Doc: advertize 3.8.1 Python bindings: fix build/install when there's a gdal-config from a pre-installed version in the PATH (fixes #8882) GDALTranslate(): avoid useless extra GDALOpen() call on a target GeoRaster (again) GDALAllRegister(): fix registration order of raw drivers (master only) NGSGEOID: make dataset identification robust to NaN values (fixes #8879) OGRGeometryFactory::transformWithOptions(): fix WRAPDATELINE=YES on multipoint geometries (fixes #8889) CI: fix brew issue OGRSpatialReference::importFromUrl(): changes to no longer use a 'Accept: application/x-ogcwkt' header HDF5 classic 2D API: handle char,ushort,uint,int64,uint64 attributes when reading them as double HDF5 multidim: better warning when nodata value is out of range cpl_safemaths.hpp: fix compilation with clang targetting Windows (fixes #8898) GDALGetSubdatasetInfo(): be more friendly of deferred loaded plugins README.md: update badges [ci skip] OSRPJContextHolder: call pthread_atfork() once for the process vrtmisc.py: disable debug traces [ci skip] Revert "ogr_proj_p.cpp: disable pthread_atfork() optimization on MacOS (fixes #8497)" JP2KAK: make result of RasterIO() consistent depending if it is called directly or through VRT, with non-nearest upsampling (fixes #8911) JP2KAK: refactor how overviews work OGCAPI: make it robust to missing 'type' on 'self' link (fixes #8912) JP2KAK: remove now useless code related to non-nearest resampling CI: build-linux-ubuntu-focal: bump to CMake 3.16 CMakeLists.txt: bump minimum CMake version to 3.16 Doc: dev_environment.rst: bump to CMake >= 3.16 code_checks.yml: disable shellcheck SC2129 swig/java: CMAKE_UNITY_BUILD fix port: CMAKE_UNITY_BUILD fixes alg: CMAKE_UNITY_BUILD fixes apps: CMAKE_UNITY_BUILD fixes autotest/cpp: CMAKE_UNITY_BUILD fixes AIGRID: CMAKE_UNITY_BUILD fixes BASISU_KTX2: CMAKE_UNITY_BUILD fixes ERS: CMAKE_UNITY_BUILD fixes GIF: CMAKE_UNITY_BUILD fixes FITS: CMAKE_UNITY_BUILD fixes GRIB: CMAKE_UNITY_BUILD fixes Internal libtiff: resync with upstream: CMAKE_UNITY_BUILD fixes tifvsi.cpp: include xtiffio.h instead of redefining its functions GTiff: CMAKE_UNITY_BUILD fixes JAXAPALSAR: CMAKE_UNITY_BUILD fixes MRF: CMAKE_UNITY_BUILD fixes MSG: CMAKE_UNITY_BUILD fixes NITF: CMAKE_UNITY_BUILD fixes NORTHWOORD: CMAKE_UNITY_BUILD fixes OPENJPEG: CMAKE_UNITY_BUILD fixes PCIDSK SDK: CMAKE_UNITY_BUILD fixes PCRASTER: CMAKE_UNITY_BUILD fixes PDS/ISIS3/VICAR: CMAKE_UNITY_BUILD fixes POSTGISRaster: CMAKE_UNITY_BUILD fixes R: CMAKE_UNITY_BUILD fixes DOQ1/DOQ2: CMAKE_UNITY_BUILD fixes ENVI/GenBIN: CMAKE_UNITY_BUILD fixes RMF: CMAKE_UNITY_BUILD fixes TSX: CMAKE_UNITY_BUILD fixes VRT: CMAKE_UNITY_BUILD fixes WCS: CMAKE_UNITY_BUILD fixes WMS: CMAKE_UNITY_BUILD fixes ZARR: CMAKE_UNITY_BUILD fixes frmts/zlib/contrib/infback9: CMAKE_UNITY_BUILD fixes HDF4: CMAKE_UNITY_BUILD fixes frmts/XXXX/CMakeLists.txt: remove useles SKIP_UNITY_BUILD_INCLUSION JPEG: CMAKE_UNITY_BUILD fixes gcore: CMAKE_UNITY_BUILD fixes GNM: CMAKE_UNITY_BUILD fixes arrow_common: CMAKE_UNITY_BUILD fixes AVC: CMAKE_UNITY_BUILD fixes DWG: CMAKE_UNITY_BUILD fixes DXF: CMAKE_UNITY_BUILD fixes ogr/ogrsf_frmts/generic: CMAKE_UNITY_BUILD fixes GeoJSON: CMAKE_UNITY_BUILD fixes ILI: CMAKE_UNITY_BUILD fixes LIBKML: CMAKE_UNITY_BUILD fixes MITAB: CMAKE_UNITY_BUILD fixes mssqlspatial: CMAKE_UNITY_BUILD fixes MVT: CMAKE_UNITY_BUILD fixes NTF: CMAKE_UNITY_BUILD fixes OpenFileGDB: CMAKE_UNITY_BUILD fixes PG: CMAKE_UNITY_BUILD fixes Internal shapelib: resync with upstream: CMAKE_UNITY_BUILD fixes SQLite: CMAKE_UNITY_BUILD fixes SVG: CMAKE_UNITY_BUILD fixes TIGER: CMAKE_UNITY_BUILD fixes VFK: CMAKE_UNITY_BUILD fixes ogr/: CMAKE_UNITY_BUILD fixes Tunings for CMAKE_UNITY_BUILD with internal libjpeg, libz, libjson ogr_osm.h: remove unused private members KTX2: remove unused private member RMF: remove unused private member DWG: remove unused private members KML: remove unused private member MSG: disable UNITY_BUILD on Windows If CMAKE_UNITY_BUILD=YES, advertize it in 'gdalinfo --build' output .github/workflows/alpine/build.sh: enable -DCMAKE_UNITY_BUILD=ON CI: build-windows-conda: enable -DCMAKE_UNITY_BUILD=ON ci/travis/osx/install.sh: enable -DCMAKE_UNITY_BUILD=ON cmake.rst: document CMAKE_UNITY_BUILD NITF: fix undefined behavior when using NITFGetField() several times in the same statement Make MSVC happy with TemporaryUnsealer Update PROJ requirement to 6.3.1 and do associated cleanups Rasterization: avoid burning pixel that we only touch (with an empty intersection) (fixes #8918) windows_build.yml: update gisinternals SDK Update Python requirement to 3.8 CMake: remove all remaining traces of CMake < 3.16 Update GEOS requirement to 3.8.0 and do associated cleanups Update Poppler requirement to 0.86 and do associated cleanups Update libtiff requirement to 4.1.0 and do associated cleanups Update libcurl requirement to 7.68 and do associated cleanups Update libpng requirement to 1.6 and do associated cleanups Update libsqlite3 requirement to 3.31 and do associated cleanups Update libopenjp2 requirement to 2.3.1 and do associated cleanups Update libnetcdf requirement to 4.7 and do associated cleanups Update libhdf5 requirement to 1.10 and do associated cleanups autotest/gdrivers/bag.py: skip check_no_file_leaks() on CI Make MSVC happy with TemporaryUnsealer (again) GetExtent3D(): better docs, and make sure that it takes into account attribute and spatial filters (in shapefile implementation) RFC98 text: Build requirements for GDAL 3.9 shpopen.c: correctly use uint32_t (was broken in 74d53797679e924cc8d57df6759eec673fa4f38e, master only, fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=64773) /vsicurl/: re-emit HTTP error code next times we try opening a resource that failed the first time (fixes #8922) Move GPKG GetExtent3D() tests to autotest/ogr/ ogrinfo: add a -extent3D switch STACTA: use STAC Raster extension to get number of bands, their data type, nodata value, scale/offset, units, and avoid fetching a metatile gdalhttp.py: skip test_http_4 STACTA: do not require eo:bands extension to be able to use raster:bands one Parquet: support reading and writing layer metadata gdal_footprint: fix -split_polys and -convex_hull to not consume the argument specified just after them... gdal_footprint: write source dataset path in a 'location' field (fixes #8795) GeoRaster: fix build on Windows where libjpeg's boolean typedef conflicts with OCI one OGREnvelope3D::Is3D(): fix it to work with MinZ/MaxZ initialization values Add OGRWKBGetEnvelope() with a OGREnvelope3D; also fix 2D version with POINT EMPTY GPKG: make OGRGeoPackageGetHeader() return bounding box without instanciating a OGRGeometry Arrow/Parquet: implement GetExtent3D() docker/: update Alpine to 3.19 [ci skip] STACTA: add support for upcoming STAC 1.1 which merges eo:bands and raster:bands into bands docker/alpine: disable IPO [ci skip] GPX: fix crash with GPX_ELE_AS_25D=YES config option (fixes qgis/QGIS#55558, master only); add open options docker/alpine-normal/Dockerfile: use py3-pillow package [ci skip] docker/alpine-normal/Dockerfile: use correct arrow package names OpenFileGDB: implement GetExtent3D() Geopackage: tune GetExtent3D() ogr_gpkg.py: test lyr.GetExtent3D() on a 2D layer, and with filters Shapelib: resync with upstream GeoRaster: fix build against external libjpeg (master only) Python bindings: add missing reference increment on Py_None in error case of Geometry.GetPoints() (fixes #8945) TileDB: silence false positive -Wnull-dereference CI/Docker: sort Alpine dependencies and add missing armadillo, basisu, odbc-cpp-wrapper and tiledb CI: coverage: add PostGIS and MySQL ogrinfo: really honours -if (refs #8590) ogr2ogr: implement -if Doc: clarify that -if does not relax potential restrictions on file extensions (fixes #8590) NITF: in xml:DES metadata domain field, expand content of XML_DATA_CONTENT DES as XML in a <xml_content> sub-node of >field name=DESDATA> instead as a Base64 value CI: fix build-mac CI: fix build-mac (again) OGRWKBIntersectsPessimisticFixture: handle all geometry types and add tests test_ogr_wkb.cpp: test return value of createFromWkt() and OGRWKBGetBoundingBox() (CID 1530437) PG: avoid COPY_INSTEAD_OF_MOVE warning (CID 1530436) Arrow: avoid AUTO_CAUSES_COPY (CID 1530434, 1530435) FlatGeoBuf: avoid AUTO_CAUSES_COPY Shapefile driver: GetNextArrowArray(): add specialized implementation restricted to situations where only retrieving of FID values is asked GPKG: make GetExtent3D() honour filters when there are only 2D geometries CMake: simplify PROJ detection (refs https://github.com/OSGeo/gdal/issues/8942#issuecomment-1851319732) PG: serialize GDAL multidomain metadata of layer as XML in a ogr_system_tables.metadata table Python bindings: add a pyproject.toml with numpy as a build requirement (#8926) typo fixes [ci skip] Internal libtiff: resync VRTComplexSource: fix excessive RAM usage with many sources (fixes #8967, 3.8.0 regression) CPLGetPhysicalRAM(): fix getting right value when running inside Docker on a cgroups v1 system (like Amazon Linux 2) (fixes #8968) gdal_footprint: fix memleak (master only, CID 1531315) test_gdal.cpp: fix warning about dead code (CID 1531312, 1531313) Shape: GetNextArrowArray(): avoid potential nullptr deref in OOM situation (master only, CID 1531314) docker/alpine-normal/Dockerfile: fix arm64 build (master only) Doc: IWriteBlock()/IRasterIO(GF_Write): add comment about potential modification of provided buffer FileGDB/OpenFileGDB: fix co-operation between the 2 drivers to make sure .cdf is opened with FileGDB GTiff: add JXL_LOSSLESS_OVERVIEW, JXL_EFFORT_OVERVIEW, JXL_DISTANCE_OVERVIEW and JXL_ALPHA_DISTANCE_OVERVIEW configuration options (fixes #8973) GTiff overviews: generalize saving resampling method in a RESAMPLING metadata item gdaladdo: reuse previous resampling method (from GTiff RESAMPLING metadata item) if not specifying -r and overview levels if not specifying them Add autotest/slow_tests and a CI job to run them gpkg.rst: mention related tabl extensions in extension list CI: macosx: fix issue with lxml Advertize 3.8.2 Shapelib: resync with upstream libtiff: resync with upstream about_no_title.rst: fix version number gdalbuildvrt: in -separate mode, only use ComplexSource if needed infback9: fix various build issues with clang 17 autotest: updates to support libpng 1.6.40 and other library updates of fedora:rawhide WMS: change logic to set gdalwmscache directory to honor in particular XDG_CACHE_HOME (fixes #8987) FIT driver: some cleanup to reduce cppcheck confusion cppcheck related cleanups ODS: long name metadata: remove trailing space gdalinfo, ogrinfo, etc. --formats: append list of extensions (fixes #8958) Update .github/PULL_REQUEST_TEMPLATE.md [ci skip] Add specific documentation section about AWS IMDS (and fix typo) AWS S3: add explicit error message when IMDS fails and we know we are on EC2 OGRArrowArrayHelper::SetBoolOn(): fix wrong bit shift computation (affects ogr2ogr from GPKG/FlatGeoBuf to something else) (fixes #8998) CoordinateTransformation::TransformBounds(): fix polar stereographic (including pole) to Web Mertactor (fixes #8996) utf8.h: disable dead code Avoid coverity scan warnings about copied values VSICurl and derived: replace most uses of CPLString with std::string utf8.h: remove dead code now removed upstream autotest/ogr/ogr_feature.py: fix dialect names DGN (v7) driver: emit explicit error when attempting to open a DGNv8 file and the DGNv8 driver is not available (fixes #9004) GitHub actions: limit permissions further HOWTO-RELEASE: add signing [ci skip] mkgdaldist.sh: make shellcheck happy [ci skip] README.md: add OpenSSF best practices badge CI Travis: try to remove get-pip ogr2ogr: do not use ArrowArray interface if -clipsrc, -clipdst, -gcp or -wrapdateline are specified (fixes #9013) GPKG: disable by default multi-threaded ArrowArray interface. Make it opt-in with the OGR_GPKG_NUM_THREADS config option GPKG: fix build with sqlite 3.36.x (fixes #9021) GPKG: fix multi-threaded ArrowArray interface and re-enable it by default Internal libjson: resync random_seed.c with upstream, and use getrandom() implementation when available (fixes #9024) jpegxl.py: make test pass with latest libjxl master GMLAS: use CPLHTTPFetch() instead of /vsicurl_streaming/ to allow alternate HTTP downloader GMLAS: faster retrieval of GML and ISO schemas by using zip archives ogr_gmlas.py: clean temporary files HDF5 multidim: fix crash on reading compound data type with fixed-length strings S102: add support for spatial metadata of the QualityOfSurvey group S102: read nodata value from /Group_F/BathymetryCoverage S102: check startSequence=0,0 EEDA/EEDAI: use 'crsWkt' element gdalinfo: do not emit errors if corner coordinate reprojection fails Replace uses of #ifdef WIN32 with #ifdef _WIN32 cpl_port.h: no longer defines WIN32 HOWTO-RELEASE: update [ci skip] Doc: advertize v3.8.3 Internal libjson: fix warning on Windows docker/README.md: advertize 3.8.3 [ci skip] OGRGeocode(): avoid using snprintf() with a formatting string coming from an environment variable (CodeQL cpp/tainted-format-string) CPLODBCSession::ConnectToMsAccess(): avoid using snprintf() with a formatting string coming from an environment variable (CodeQL cpp/tainted-format-string) port/: add explicit widening casts to avoid CodeQL cpp/integer-multiplication-cast-to-long SWIG: avoid potential multiplication overflows (CodeQL cpp/integer-multiplication-cast-to-long) Internal libjpeg: avoid CodeQL cpp/integer-multiplication-cast-to-long TIGER: avoid CodeQL cpp/integer-multiplication-cast-to-long Selafin: avoid CodeQL cpp/integer-multiplication-cast-to-long cpl_port.h: add cpl::fits_on<> function OpenFileGDB: avoid CodeQL cpp/integer-multiplication-cast-to-long NTF: fix CodeQL cpp/integer-multiplication-cast-to-long NGW: fix CodeQL cpp/integer-multiplication-cast-to-long MITAB: avoid CodeQL cpp/integer-multiplication-cast-to-long GPKG: avoid CodeQL cpp/integer-multiplication-cast-to-long AVC: avoid CodeQL cpp/integer-multiplication-cast-to-long OGRSimpleCurve::exportToWkt(): avoid CodeQL cpp/integer-multiplication-cast-to-long OGRWKBIntersectsRingSequencePessimistic(): avoid CodeQL cpp/integer-multiplication-cast-to-long RAWDataset: avoid CodeQL cpp/integer-multiplication-cast-to-long GDALComputeBandStats(): avoid potential loss of precision GDALDataset::RasterIOResampled(): avoid CodeQL cpp/integer-multiplication-cast-to-long gdalrasterband: avoid CodeQL cpp/integer-multiplication-cast-to-long GDALVirtualMem: avoid CodeQL cpp/integer-multiplication-cast-to-long gdalmultidim: avoid CodeQL cpp/integer-multiplication-cast-to-long gdalnodatavaluesmaskband.cpp: avoid CodeQL cpp/integer-multiplication-cast-to-long gdalnodatamaskband.cpp: avoid CodeQL cpp/integer-multiplication-cast-to-long gdalexif: avoid CodeQL cpp/integer-multiplication-cast-to-long gdalarraybandblockcache: avoid CodeQL cpp/integer-multiplication-cast-to-long infback9: avoid CodeQL cpp/integer-multiplication-cast-to-long XYZ: avoid CodeQL cpp/integer-multiplication-cast-to-long WMS: avoid CodeQL cpp/integer-multiplication-cast-to-long VRTDerivedRasterBand::IRasterIO(): fix potential multiplication overflow VRT: avoid CodeQL cpp/integer-multiplication-cast-to-long TSX: avoid CodeQL cpp/integer-multiplication-cast-to-long STACTA: avoid CodeQL cpp/integer-multiplication-cast-to-long TGA: avoid CodeQL cpp/integer-multiplication-cast-to-long SRTMHGT: avoid CodeQL cpp/integer-multiplication-cast-to-long SAFE: avoid CodeQL cpp/integer-multiplication-cast-to-long SDTS: avoid CodeQL cpp/integer-multiplication-cast-to-long RMF: avoid CodeQL cpp/integer-multiplication-cast-to-long RS2: avoid CodeQL cpp/integer-multiplication-cast-to-long RIK: avoid CodeQL cpp/integer-multiplication-cast-to-long ROI_PAC: avoid CodeQL cpp/integer-multiplication-cast-to-long NTv2: avoid CodeQL cpp/integer-multiplication-cast-to-long PAux: avoid CodeQL cpp/integer-multiplication-cast-to-long LCP: avoid CodeQL cpp/integer-multiplication-cast-to-long MFF: avoid CodeQL cpp/integer-multiplication-cast-to-long ISCE: avoid CodeQL cpp/integer-multiplication-cast-to-long BT: avoid CodeQL cpp/integer-multiplication-cast-to-long R: avoid CodeQL cpp/integer-multiplication-cast-to-long Rasterlite: avoid CodeQL cpp/integer-multiplication-cast-to-long PostGISRaster: fix potential multiplication overflow PNG: avoid CodeQL cpp/integer-multiplication-cast-to-long PLMosaic: avoid CodeQL cpp/integer-multiplication-cast-to-long PDS4: avoid CodeQL cpp/integer-multiplication-cast-to-long ISIS3: avoid CodeQL cpp/integer-multiplication-cast-to-long PCIDSK: avoid CodeQL cpp/integer-multiplication-cast-to-long NITF: avoid CodeQL cpp/integer-multiplication-cast-to-long JPEG: avoid CodeQL cpp/integer-multiplication-cast-to-long MEM: avoid CodeQL cpp/integer-multiplication-cast-to-long GTiff: avoid CodeQL cpp/integer-multiplication-cast-to-long GRIB: avoid CodeQL cpp/integer-multiplication-cast-to-long ENVISAT: avoid CodeQL cpp/integer-multiplication-cast-to-long AIG: avoid CodeQL cpp/integer-multiplication-cast-to-long gdalenhance: avoid CodeQL cpp/integer-multiplication-cast-to-long Northwood: avoid CodeQL cpp/comparison-with-wider-type IRIS: avoid CodeQL cpp/comparison-with-wider-type EXR: avoid CodeQL cpp/comparison-with-wider-type testblockcache: avoid CodeQL cpp/comparison-with-wider-type PDF: avoid CodeQL cpp/comparison-with-wider-type GIF: avoid CodeQL cpp/comparison-with-wider-type MSGN: avoid CodeQL cpp/comparison-with-wider-type MRF: avoid CodeQL cpp/comparison-with-wider-type KMLSuperOverlay: avoid CodeQL cpp/comparison-with-wider-type L1B: avoid CodeQL cpp/comparison-with-wider-type ILWIS: avoid CodeQL cpp/comparison-with-wider-type IDRISI: avoid CodeQL cpp/comparison-with-wider-type HFA: avoid CodeQL cpp/comparison-with-wider-type HF2: avoid CodeQL cpp/comparison-with-wider-type libgeotiff: avoid CodeQL cpp/comparison-with-wider-type GSBG: avoid CodeQL cpp/comparison-with-wider-type GRIB: avoid false-positive CodeQL cpp/new-free-mismatch FIT: avoid CodeQL cpp/comparison-with-wider-type ERS: avoid CodeQL cpp/comparison-with-wider-type EEDA: avoid CodeQL cpp/comparison-with-wider-type DAAS: avoid CodeQL cpp/comparison-with-wider-type DTED: avoid CodeQL cpp/comparison-with-wider-type CTG: avoid CodeQL cpp/comparison-with-wider-type COSAR: avoid CodeQL cpp/comparison-with-wider-type CEOS2: avoid CodeQL cpp/comparison-with-wider-type BMP: avoid CodeQL cpp/comparison-with-wider-type BLX: avoid CodeQL cpp/comparison-with-wider-type AAIGRID: avoid CodeQL cpp/comparison-with-wider-type testvirtualmem: avoid CodeQL cpp/comparison-with-wider-type test_gdal: avoid CodeQL cpp/comparison-with-wider-type nearblack: avoid CodeQL cpp/comparison-with-wider-type gdaldem: avoid CodeQL cpp/comparison-with-wider-type gdalwarpoperation: avoid CodeQL cpp/comparison-with-wider-type gdalpansharpen: avoid CodeQL cpp/comparison-with-wider-type gdalproximity: avoid CodeQL cpp/comparison-with-wider-type gdalmediancut: avoid CodeQL cpp/comparison-with-wider-type gdallinearsystem: avoid CodeQL cpp/comparison-with-wider-type gdaldither: avoid CodeQL cpp/comparison-with-wider-type gdal_simplesurf: avoid CodeQL cpp/comparison-with-wider-type gdal_rpc: avoid CodeQL cpp/comparison-with-wider-type gdal_crs: avoid CodeQL cpp/comparison-with-wider-type CPLRecodeToWCharIconv(): avoid CodeQL cpp/incorrect-string-type-conversion gdaljp2structure.cpp: fix CodeQL cpp/comparison-with-wider-type GPKG: fix CodeQL cpp/sql-injection GML: fix potential cpp/external-entity-expansion CodeSQL issue GMLAS: fix potential cpp/external-entity-expansion CodeSQL issue ILI: fix potential cpp/external-entity-expansion CodeSQL issue NAS: fix potential cpp/external-entity-expansion CodeSQL issue WEBP: avoid CodeQL cpp/integer-multiplication-cast-to-long PDF: avoid CodeQL cpp/integer-multiplication-cast-to-long netCDF: avoid CodeQL cpp/integer-multiplication-cast-to-long BAG: avoid CodeQL cpp/integer-multiplication-cast-to-long HDF5: avoid CodeQL cpp/integer-multiplication-cast-to-long g2clib: avoid CodeQL cpp/integer-multiplication-cast-to-long autotest: make it compatible with current numpy 2.0dev test_gdal.cpp: test GDALWarpApp()/GDALTranslate()/GDALBuildVRT() and GDALReleaseDataset() Doc of GDALWarpApp()/GDALTranslate()/GDALBuildVRT(): better document ownership Create codeql.yml CSV: do not quote numeric fields even if STRING_QUOTING=ALWAYS (3.8.1 regression) (fixes https://github.com/qgis/QGIS/issues/55808) Fix querying of GDAL_DMD_PLUGIN_INSTALLATION_MESSAGE Improve error message when a dataset could be opened by a plugin, but we can't load it fuzzers/build.sh: fix curl build Python bindings: implement __arrow_c_stream__() interface for ogr.Layer Python bindings: add a ogr.Layer.GetArrowArrayStreamInterface() method Add GDALGetOutputDriversForDatasetName() Restore use of gmtime_r and localtime_r; extend to ctime_r; use Windows variants too netCDF: use VSILocalTime() Internal libopencad: use localtime_r() or localtime_s() when possible PCIDSK SDK: use ctime_r() or ctime_s() when possible Remove port/cpl_config* files no longer used since the switch to CMake degrib: use gmtime_r() or gmtime_s() when possible Add S104 (Water Level Information for Surface Navigation Product) and S111 (Surface Currents Product) raster read-only drivers Modify the logic of selection of overviews for non-nearest resampling; add a GDAL_OVERVIEW_OVERSAMPLING_THRESHOLD config option (#9040) warper: fix artifacts when reprojecting from long/lat to ortho (fixes #9056) GDALSuggestedWarpOutput2(): ortho->long/lat: limit extent to [lon_0-90,lon_0+90] even when poles are included Warper: limit artifacts when doing ortho->long/lat (provided that srcNodata is set) README.md: add OpenSSF Scorecard badge [ci skip] CI: pin actions by sha No longer alias CPLMutex, CPLCond and CPLJoinableThread to void in non-DEBUG builds Sentinel2 doc: adjust description of content of L2A subdatasets (fixes #9066) Sentinel2: include 10m AOT and WVP bands in 10m subdataset (refs #9066) Refresh CITATION and CITATION.cff [ci skip] OGR2SQLITE_Setup(): robustify against potential crashing scenario OGRCoordinateTransformation transform methods: more accurate description of return value (fixes #9069) gdal.cmake: set -DDEBUG for CMAKE_BUILD_TYPE=Debug for Windows builds as well OGRCoordinateTransformation::Transform(): change nCount parameter to size_t (C++ API only for now) (fixes #9074) multidim API: fix wrong DataAxisToSRSAxisMapping VSICurlFilesystemHandlerBase::ReadDirInternal(): avoid false positive Coverity warning about use after free Internal libjson: silence 'toctou' Avoid/fix Coverity performance warnings OGRProjCT::TransformWithErrorCodes(): Improve performance of axis swapping (inspired by @SunBlack proposal) (fixes #9073) Test effect of SetDataAxisToSRSAxisMapping([1,2,-3]) OGRSpatialReference::SetDataAxisToSRSAxisMapping(): improve doc (fixes #9071) (#9072) gdalwarp: do not enable blank line detection when -tap and -te are specified (fixes #9059) Doc: stactit.rst: mention behavior with overlapping items OSR_CT: fix SetDataAxisToSRSAxisMapping([-2, 1]) on target SRS WMS: fix nullptr dereference on invalid document (fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=65772) Add .github/workflows/scorecard.yml Avoid/fix Coverity performance warnings Driver manager: avoid warning about 'DMD_PLUGIN_INSTALLATION_MESSAGE whereas its real driver doesn't declare it or with a different value' OGRGeometryFactory::forceTo(): make it honour dimensionality of eTargetType (in particular fix POLYGON -> LINESTRING or POLYGON -> LINESTRINGZ) (fixes #9080) CPLReplacePointByLocalePoint(): use regular code path for Android API >= 20 port/CMakeLists.txt: remove unneeded SKIP_UNITY_BUILD_INCLUSION=ON Internal libtiff: resync with upstream (_WIN32 related changes) Internal shapelib: resync with upstream (_WIN32 related changes) .github/workflows/cmake_builds.yml: pin dependency by sha1sum CMake: make it ready for GDAL_DATA being filled by each driver Move data/vicar.json to frmts/pds/data Move data/vdv452.xml and xsd to ogr/ogrsf_frmts/vdv/data Move data/*.dxf to ogr/ogrsf_frmts/dxf/data Move data/grib2_* to frmts/grib/data Move GML data files to ogr/ogrsf_frmts/gml/data Move GMLAS data files to ogr/ogrsf_frmts/gmlas/data Move S57 data files to ogr/ogrsf_frmts/s57/data Move DGN data files to ogr/ogrsf_frmts/dgn/data Move OSM data files to ogr/ogrsf_frmts/osm/data Move HDF5 data files to frmts/hdf5/data Mode PDS4 data file to frmts/pds/data Move NITF data files to frmts/nitf/data Move netCDF data files to frmts/netcdf/data Move PLScenes data files to ogr/ogrsf_frmts/plscenes/data Move EEDA data files to frmts/eeda/data Move PDF data files to frmts/pdf/data Move SXF data files to ogr/ogrsf_frmts/sxf/data Move gdalinfo, gdalmdiminfo, ogrinfo output.schema.json to apps/data Move data/gdalvrt.xsd to frmts/vrt/data Move data/ogrvrt.xsd to ogr/ogrsf_frmts/vrt/data Move data/gt_datum.csv and data/gt_ellips.csv to frmts/nitf/data Move cubewerx_extra.wkt, ecw_cs.wkt, epsg.wkt, esri_StatePlane_extra.wkt, ozi_*.csv, pci_*.csv, sateplace.csv to ogr/data/ Move data/template_tiles.mapml to swig/python/data/ Move data/tms_*.json files to gcore/data typo fixes [ci skip] OGRParquetDriverOpen(): tune with directory OGRGPSBabelDriverIdentifyInternal(): tune ogr2ogr: do not copy private layers (would for example break SQLite -> SQLite/GPKG) Address cppcheck warnings constVariableReference/constParameterReference Avoid false positive warning about accessing moved variable GDALBandGetBestOverviewLevel2(): add nullptr check GDALMDArray::AsClassicDataset(): make it possible to use overviews coordinate_epoch.rst: remove outdated comment ogr_gmlas.py: skip test_ogr_gmlas_get_gml_and_iso_schemas() test if https://schemas.opengis.net is down ExecuteSQL(dialect=SQLite): support 'SELECT\n' for example (fixes #9093) Fix calls to isspace() to make sure argument is unsigned, otherwise unspecified behavior Fix calls to isdigit() to make sure argument is unsigned, otherwise unspecified behavior Fix calls to isalnum() to make sure argument is unsigned, otherwise unspecified behavior Fix calls to isalpha() to make sure argument is unsigned, otherwise unspecified behavior Fix calls to islower() to make sure argument is unsigned, otherwise unspecified behavior Fix calls to isupper() to make sure argument is unsigned, otherwise unspecified behavior Fix calls to tolower() and toupper() to make sure argument is unsigned, otherwise unspecified behavior CI: avoid hardcoding -j3 CI fedora_rawhide: explicitly install python3-setuptools TileMatrixSet::parse(): increase maximum zoom level for InspireCRS84Quad to 29 GPKG: support maximum level up to 29 or 30; add a ZOOM_LEVEL creation option GDALBandGetBestOverviewLevel2(): avoid numerical instability with GDAL_OVERVIEW_OVERSAMPLING_THRESHOLD = 1.0 gdal.cmake: add comment [Lint] netCDFIdentifyFormat(): reduce number of magic values S102: read NoData value for QualityOfSurvey from /Group_F/QualityOfSurvey gdal2tiles.py: add debug message when UnsupportedTileMatrixSet FindECW.cmake: make it work for Windows 32-bit builds (fixes #9106) FindSQLite3.cmake: improve detection of static libsqlite3.a (fixes #9096) Arrow/Parquet: add (minimum) support for libarrow 15.0 OGRArrowLayer::MapArrowTypeToOGR(): make the code robust to potentially new entries in the arrow::Type enumeration PDF: correctly initialize PAM when opening a subdataset (specific page for example) GMLAS: recognize GeometricPrimitivePropertyType wms.py: set timeout on one test resource Internal shapelib: remove CPL_UNUSED Add OGRSpatialReference::exportToCF1() and importFromCF1(), and make netCDF driver use them SWIG: add osr.SpatialReference.ImportFromCF1(), ExportToCF1(), ExportToCF1Units() gdalmdimtranslate: add -arrayoptions Zarr: be able to read CRS from CF1 conventions OGRSpatialReference::importFromCF1(): make it work with spatial_ref and crs_wkt attributes Add raster VRTTI (Virtual Raster Tile Index) driver Add documentation for VRTTI driver gdaladdo: make --partial-refresh-from-source-timestamp work on VRTTI datasets Make gdaltindex a C callable function: GDALTileIndex() gdaltindex: add -overwrite, -vrtti_filename, -tr, -te, -ot, -bandcount, -nodata, -colorinterp, -mask, -mo options gdaltindex: add -recursive, -filename_filter, -min_pixel_size, -max_pixel_size, -fetch_md Add a slow test for VRTTI VRTTI: also support setting the metadata as a XML attached to the xml:VRTTI metadata domain of a vector layer Rename VRTTI driver to GTI GTI: take into account comments of code review TileDB: be able to read datasets converted with 'tiledb-cf netcdf-convert' GTI / GPKG: make them both be able to handle .gti.gpkg files GDALOverviewDataset: avoid setting SetEnableOverviews(false) during lifetime of object. Just do it transiently VRTPansharpenedRasterBand::GetOverviewCount(): robustify against potential failure of GDALCreateOverviewDataset() LIBKML: fix crash on a gx:Track without when subelements (fixes qgis/qgis#55963) gti.rst: formatting fix Python bindings: add a ogr.Layer.WriteArrow() method consuming __arrow_c_stream__ or __arrow_c_array__ interfaces GDALPamRasterBand::XMLInit(): hopefully avoid false-positive 'Potential use after free' from https://github.com/OSGeo/gdal/security/code-scanning/458 cpl_userfaultfd.cpp: check sscanf() return value (fixes https://github.com/OSGeo/gdal/security/code-scanning/466) CPLAtof()/CPLStrtod(): recognize again INF and -INF GDALDeserializeGCPListFromXML(): validate value of GCP Pixel,Line,X,Y,Z attributes Python bindings: ogr.Layer.WriteArrow(): also accept requested_schema implementing __arrow_c_schema__ GPKG: fixes to make most operations compatible with PRAGMA foreign_keys=1 (fixes #9135) OGRGeometryFactory::forceToMultiLineString(): hopefully fix false-positive CodeQL potential-double-free (https://github.com/OSGeo/gdal/security/code-scanning/450) OGRGeometryFactory::forceToMultiLineString(): hopefully fix false-positive CodeQL potential-double-free (https://github.com/OSGeo/gdal/security/code-scanning/449) GDALPamDataset::XMLInit(): hopefully fix false-positive CodeQL potential-double-free (https://github.com/OSGeo/gdal/security/code-scanning/459) OGRLayer::FilterGeometry(): make it accept a 'const OGRGeometry*' VFK: hopefully fix false-positive CodeQL potential-double-free (https://github.com/OSGeo/gdal/security/code-scanning/485, 484, etc. down to 467) MITAB: hopefully fix likely false-positive CodeQL potential-double-free (https://github.com/OSGeo/gdal/security/code-scanning/465) OZI: hopefully fix likely false-positive CodeQL potential-double-free (https://github.com/OSGeo/gdal/security/code-scanning/460) GTI: fix cpp/integer-multiplication-cast-to-long (https://github.com/OSGeo/gdal/security/code-scanning/448) sozip: fix potential (small) leak of papszArgv in error code paths OGRGeometryFactory::transformWithOptions(): hopefully fix false-positive CodeQL potential-double-free (https://github.com/OSGeo/gdal/security/code-scanning/454) Change GDALRasterBand::poMask to be a GDALRasterBandOwnedOrNot instance, and remove GDALRasterBand::bOwnMask, to hopefully fix false-positive CodeQL potential-double-free (https://github.com/OSGeo/gdal/security/code-scanning/453) docker/alpine-small/Dockerfile: remove removal of unused resource files [ci skip] GDALDataset::ReportErrorV() and GDALRasterBand::ReportError(): avoid formatting string to be 'tainted' by dataset name (https://github.com/OSGeo/gdal/security/code-scanning/522) ogr2ogr: Arrow code path: take into account -limit parameter for MAX_FEATURES_IN_BATCH OGRGeometryFactory::forceTo(): fix nullptr dereference in error code path (master only, fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=66177) fix previous commit gdalwarp: emit explicit error message when transformation isn't inversible (fixes #9149) Win32 extended filenames (starting with "\\?\"): various fixes; add support for network UNC paths autotest: fix warning 'PytestRemovedIn9Warning: Marks applied to fixtures have no effect' gdaltindex: fix potential memory leak (CID 1533976) GTIFMemBufFromSRS: fix potential nullptr deref (CID 1533975) MySQL: fix/workaround server-side spatial filtering when SRS is geographic with MySQL >= 8 (fixes qgis/QGIS#55463) GPKG creation: set Z/M columns of gpkg_geometry_columns when there are Z/M geometries in a 2D declared layer VRT: add a NoDataFromMaskSource source NoDataFromMaskSource: add RemappedValue NoDataFromMaskSource: rename option to -nodata_max_mask_threshold GPKG: hopefully unbreak VS2017 builds Doc: OpenFileGDB: document OPENFILEGDB_DEFAULT_STRING_WIDTH configuration option (fixes #9165) BMP: fix reading images larger than 4GB typo fixes in code comments [ci skip] Java bindings: bump minimum version to Java 8 CI: try macOS-14 for M1 MacOS runner CI: disable ODBC for Mac for test_cmake.sh Shape: make it recognize /vsizip/foo.shp.zip directories TileDB: make its identify() method more restrictive PDS: fix compilation with Emscripten version 3.1.7 Python bindings: remove run of 'python -m lib2to3' that is a no-op, given that lib2to3 is removed in python 3.13 (fixes #9173) [Lint] OpenFileGDB: rename constant to DEFAULT_STRING_WIDTH and add extensive comments OGRGeometryFactory::createGeometry(): do not assert on wkbUnkown input OGRGeometryFactory::forceTo(): fix assertion with empty geometry and target type = unknown docker/ubuntu-full/Dockerfile: update to Arrow 15.0.0 (fixes #9183) [ci skip] CSV: parse header with line breaks (fixes #9172) bmp_read.py: fix wrong driver name /vsisparse/: fix Stat() on files larger than 4 GB on 32-bit builds PG: be robust to inexact case for schema when creating a layer 'schema_name.layer_name' (fixes #9125) docker/ubuntu-full/Dockerfile: disable AVX2 when building TileDB [ci skip] CI: add build time testing of OCI driver gdalwarp_lib.cpp: do floating point division (CID 1534303) PG: fix memleak in error code path (master only, CID 1534302) TileDB: fix performance warning (CID 1534301) exportToCF1(): make it obvious that we don't out-of-bound access param.doubles[] (CID 1534300) PG: fix performance warning (CID 1534299) HFA: make sure HFADataset::hHFA member is initialized (CID 1073932) Rasterlite: avoid false positive Coverity warning about nullptr deref (CID 1214415) LIBKML: avoid false positive Coverity warning about nullptr deref (CID 1214419) OSM: avoid COPY_INSTEAD_OF_MOVE (CID 1525192) LIBKML: avoid COPY_INSTEAD_OF_MOVE (CID 1525205) PDF: avoid COPY_INSTEAD_OF_MOVE (CID 1525231) WMS: avoid COPY_INSTEAD_OF_MOVE (CID 1525239) arrow_common: avoid COPY_INSTEAD_OF_MOVE (CID 1525324) HFA: avoid COPY_INSTEAD_OF_MOVE (CID 1525492) docker/ubuntu-full/bh-gdal.sh: build drivers with external dependencies as plugins (GDAL_ENABLE_PLUGINS=ON) [ci skip] docker/ubuntu-full/bh-gdal.sh: strip symbols from plugins [ci skip] CI: revert to previous method to add ppa:ubuntugis/ubuntugis-unstable Add VSIGetDirectorySeparator() to return the directory separator for the specified path CPLFormFilename(), CPLProjectRelativeFilename(), VSIReadDirRecursive(), NextDirEntry(): useVSIGetDirectorySeparator() /vsis3 Sync(): use VSIGetDirectorySeparator(), [Internal shapelib] Resync with upstream GeoJSONSeq: add missing feature defn sealing Zarr: avoid potential infinite…
Expected behavior and actual behavior.
GDAL
cannot link against arbitraryproj
versions and will useproj9
over any otherproj >=6
, regardless of how the search paths for cmake are constructed.Specifically:
PROJ_INCLUDE_DIR
andPROJ_LIBRARY_RELEASE
https://gdal.org/development/building_from_source.html#proj
proj
in a non-CONFIG
modehttps://github.com/OSGeo/gdal/blob/v3.8.0/cmake/modules/packages/FindPROJ.cmake#L37
which only seems to happen when looking for
proj6
https://github.com/OSGeo/gdal/blob/v3.8.0/cmake/helpers/CheckDependentLibraries.cmake#L378
CONFIG
search, and prioritizesproj9
andproj8
https://github.com/OSGeo/gdal/blob/v3.8.0/cmake/helpers/CheckDependentLibraries.cmake#L371
Therefore, the outcome is that arbitrary versions of proj>=6 cannot be used.
For example, in the context of library dependency management like
spack
, ifproj7
is first in the cmake search paths,GDAL
will pass over it, and useproj 9
. This is problematic if a systemproj9
is used (e.g., from homebrew or apt) instead of a custom-builtproj
.Below is a
find_pacakge
debug trace from cmake where I was expecting a custom-builtproj7.2.1
to be used and linked against. Instead,GDAL
linked against homebrew'sproj9
. The path/Users/cmarsh/Documents/science/code/spack/opt/spack/darwin-ventura-m1/apple-clang-14.0.3/proj-7.2.1-ulvikgu6cuz3c2xwmuxifqlhnnkg6353/lib/cmake/proj/proj-config.cmake
was manually confirmed as valid.Steps to reproduce the problem.
Build gdal with cmake
Operating system
macos & linux (uncertain about windows)
GDAL version and provenance
8.3.x
The text was updated successfully, but these errors were encountered: