Skip to content

Latest commit

 

History

History
176 lines (138 loc) · 9.65 KB

File metadata and controls

176 lines (138 loc) · 9.65 KB

gdalraster.windows 0.3.1

Package

  • install_gdalraster() now checks for a working Rtools toolchain up front (pkgbuild::has_build_tools()) and aborts with installation guidance when none is found, instead of failing mid-compile with a raw make/gcc error. Rtools is documented as the one prerequisite the prebuilt runtime bundle cannot eliminate — in the README, the Getting Started vignette, and the install_gdalraster() help page (which also gains an Upgrading section: rebuild gdalraster after every runtime bundle upgrade).

GDAL runtime bundle

  • Fixed the bundle-wide LoadLibrary failure: A dynamic link library (DLL) initialization routine failed (Windows error 1114) that made published bundles unloadable on machines without Rtools' UCRT64 tree. Root cause: the MSYS2 libpodofo.dll (PDF driver backend) fails its DllMain-time OpenSSL initialization against the MSYS2 libcrypto-3-x64.dll. The PDF driver is now disabled outright (GDAL_ENABLE_DRIVER_PDF=OFF plus the poppler/podofo/pdfium backends).
  • HDF5 and NetCDF drivers are enabled again; the earlier theory that their OpenBLAS/Fortran dependency chain conflicts with R's own DLLs was disproven empirically (every DLL in that chain loads cleanly inside R).
  • Bundle verification now has three layers: dependency closure (ntldd walk plus a banned-DLL guard for PDF/NSS chains in collect_dlls.sh), loadability (every bundled DLL is LoadLibrary-tested in CI before an asset can publish), and functionality (the e2e workflow runs on every published bundle release).

Fixes

  • install_gdal_runtime(tag = "latest") no longer trusts GitHub's single "latest release" pointer, which broke the default install path whenever an R package release (v*, no bundle asset) was marked latest. "latest" now scans the release list and selects the newest non-draft, non-prerelease release that publishes a runtime bundle asset matching asset_pattern, decoupling the package release track from the GDAL bundle release track.
  • GitHub API requests are now authenticated when a token is available — resolved from the git credential store (gitcreds), then the GITHUB_PAT and GITHUB_TOKEN environment variables — avoiding anonymous rate limits in CI and behind shared networks. Release-asset selection also tolerates assets with a missing name field.

gdalraster.windows 0.3.0

Documentation

  • All vignettes migrated from R Markdown (knitr::rmarkdown) to Quarto (quarto::html); VignetteBuilder is now quarto.
  • New "Getting Started" vignette covering the full install → build → load → verify workflow, everyday use, install locations and overrides, and offline installation.
  • "Runtime Guide" rewritten around the current API: gdal_home resolution order, session activation, auto-bootstrap options (gdalraster.windows.auto_bootstrap, gdalraster.windows.auto_load_gdalraster), source builds against the bundle, managed .Rprofile hooks, embedded-python algorithms, and runtime upgrades.
  • "Architecture" claims verified against upstream sources (GDAL 3.12.2 registration fix, Rtools45 release 6768 muparser addition, PE/COFF export-ordinal limit); corrected the bundle layout description — no executables ship in the bundle (BUILD_APPS=OFF).
  • Extensive linking across README and vignettes: toolchain components (MinGW-w64, MSYS2, UCRT64, Rtools45), GDAL/PROJ/driver references, upstream issues, and build scripts. The README package guide now points at the pkgdown-hosted articles.
  • install_gdalraster() and the runtime guide document installing the source build into the regular user library via the existing lib argument (e.g. lib = .libPaths()[1]).
  • Troubleshooting vignette covers dependency DLLs that resolve in CI but not on user machines, and runtime deletion blocked by file locks.

pkgdown site

  • Themed site with branded colors, dark navbar, hex logo, and favicons.
  • Articles navbar menu and reference section descriptions.

Package

  • gdalraster remains declared in Suggests as a soft, conditionally-used dependency, but development tooling no longer requires it to be installed (attachment config: pkg_ignore + extra.suggests + check_if_suggests_is_installed: no). The package's own installer (install_gdalraster()) is the supported way to provision it.
  • Reproducible hex logo generation script (dev/scripts/pkg_logo.R).

Fixes

  • The GDAL CI build no longer links libgdal against the proprietary Microsoft ODBC Driver for SQL Server (msodbcsql17.dll), which GitHub runner images ship in System32 but end-user machines typically lack — previously this made the published bundle fail to load (LoadLibrary failure) on machines without that driver (GDAL_USE_MSSQL_ODBC=OFF, GDAL_USE_MSSQL_NCLI=OFF). Bundle verification in tools/collect_dlls.sh now rejects known non-OS System32 DLLs so this class of runner-image leak fails CI instead of shipping (#13).
  • activate_gdal_runtime() now fails loudly when preloading libgdal-*.dll fails, with the DLL path and a troubleshooting pointer, instead of silently swallowing the error and deferring it to library(gdalraster) where Windows reports only a generic "module could not be found".
  • install_gdal_runtime() overwrite handling is now robust to DLL file locks: the destination check happens before any download, the current session's own preloaded runtime DLLs (from the load-time auto-bootstrap) are released before deletion, reinstalling while gdalraster is loaded aborts up front with restart guidance, and deletion is verified so a runtime locked by another process aborts cleanly instead of leaving a half-deleted install behind.
  • load_gdalraster() validates the gdalraster library path before activating the runtime, so a missing source build errors immediately.
  • verify_gdalraster_runtime() returns FALSE (with a message) when runtime activation fails, instead of erroring.

gdalraster.windows 0.2.1

Fixes

  • install_gdalraster() now passes repos = NULL to utils::install.packages() when installing from a local source tarball. Previously, repos was set to the active CRAN mirror, which caused R to treat the tarball path as a package name to look up remotely rather than a local file to install. The symptom was a silent no-op accompanied by the warning "package '…tar.gz' is not available for this version of R", followed by the error "gdalraster source install did not produce an installed package" (#11).
  • When upgrade = TRUE, R package dependencies are now installed via a separate install.packages("gdalraster", repos = repos) call before the source build, so CRAN-resolution still works for the upgrade case while the tarball install itself always uses repos = NULL.

gdalraster.windows 0.2.0

Documentation

  • Technical documentation promoted to published vignettes: vignette("architecture") (toolchain, ABI, DLL loading, embedded python, bundle reproduction) and vignette("troubleshooting") (triage flow and symptom matrix). These are now the canonical docs; dev/docs/ is explicitly non-normative maintainer notes.

Fixes

  • tools/build_gdal.sh discovers the produced libgdal-*.dll by glob in its final verification instead of hardcoding the SONAME, and fails loudly when no DLL is produced (#2).
  • install_gdal_runtime() now emits actionable guidance on download failure: the releases URL and the local_zip offline install path (#5).

Build

  • GDAL runtime baseline bumped to 3.13.1 (upstream release 2026-06-05); default gdal_version in the build workflow updated accordingly.

gdalraster.windows 0.1.0

New features

  • The GDAL runtime bundle now ships GDAL's pure-python osgeo_utils package (gdal-utils) under <gdal_home>/python, version-locked to the built GDAL tag. activate_gdal_runtime() prepends this directory to PYTHONPATH (session-scoped) so GDAL algorithms that embed a Python interpreter at runtime (e.g. gdal driver gpkg validate) can import it.
  • activate_gdal_runtime() now returns gdal_python in its invisible result alongside the other configured paths.

Documentation

  • New README technical section on the embedded CPython layer and why the compiled osgeo SWIG bindings are intentionally not bundled.
  • Offline / air-gapped installation documented in the README, vignette, and install_gdal_runtime() help (local_zip workflow).
  • Troubleshooting guide gains a triage entry for ModuleNotFoundError: No module named 'osgeo_utils'.
  • Maintainer docs aligned with the current bundle contract (bin, include, lib, share, python).

Build and CI

  • CI is now scoped to its single responsibility: build, verify, and publish the GDAL runtime bundle. The gdalraster source-build verification job was removed; building gdalraster against the bundle is package functionality (install_gdalraster()).
  • Every CI run now produces durable output: a 30-day workflow artifact and the distributable zip are always created; release publication is gated on tag pushes or the publish_release dispatch input (default true).
  • Bundle verification asserts the full runtime contract, including python/osgeo_utils.

Package

  • gdalraster declared in Suggests (resolves an R CMD check warning).

gdalraster.windows 0.0.1

  • Initial development version: GDAL runtime bundle install/activation helpers, gdalraster source-build integration, startup hooks, and the Windows CI build pipeline.