v4: Centralized Regression Testing & Relative macOS RPATHs
This release introduces major improvements to the automated regression testing framework—centralizing boilerplate, standardizing AWS S3 data synchronization, and providing shared runtime helpers. It also enhances macOS flexibility by transitioning to relative RPATHs.
🧪 Regression Testing & Manifests
- Centralized Test Registration: Added the
esma_add_regression_tests()macro (esma_support/esma_regression_tests.cmake). This centralizes the CMake boilerplate needed to register GEOS component regression tests. Components now simply passNAME,DATA_PATH,TEST_CASES, and an optionalEXTRA_ENVlist. The macro automatically handles:- OpenMPI flag detection.
- Local vs. S3 data directory selection.
- The
sync_datactest fixture and per-case test registration.
- Standardized S3 Syncing: Added
esma_sync_aws_s3_data.cmake, a generic-Pscript invoked by thesync_datafixture to download regression data from S3 using temporary AWS credentials. This completely replaces older, per-componentsync_data.cmakefiles. - Shared Run Helpers: Added
esma_regression_run_helpers.cmakecontaining shared utility functions (copy_directory,link_directory,copy_file,run_geos,compare_results) to streamline per-componentrun_case.cmakescripts. - Install Manifest: Added
esma_install_manifest.cmaketo generate a comprehensive manifest of all installed files.
🍏 macOS Portability
- Relative RPATHs: Switched the macOS RPATH configuration in
osx_extras.cmakefrom an absolute path (${CMAKE_INSTALL_PREFIX}/lib) to a relative path (@loader_path/../lib) and enabledENABLE_RELATIVE_RPATHS.- Impact: Experiment-local install trees (e.g.,
EXPDIR/install/bin/GEOSgcm.x) will now correctly resolve GEOS/MAPL shared libraries from their own localEXPDIR/install/libdirectory without hardcoding or requiring references back to the original build prefix.
- Impact: Experiment-local install trees (e.g.,
From CHANGELOG.md
Added
- Add new
esma_install_manifest.cmaketo create a manifest of installed files - Added
esma_add_regression_tests()macro (esma_support/esma_regression_tests.cmake) to centralise the CMake boilerplate for registering GEOS component regression tests. Each component passesNAME,DATA_PATH,TEST_CASES, and an optionalEXTRA_ENVlist; the macro handles OpenMPI flag detection, local/S3 data-dir selection, thesync_datactest fixture, and per-case test registration. - Added
esma_sync_aws_s3_data.cmake, a generic-Pscript invoked by thesync_datafixture that downloads regression data from S3 using temporary AWS credentials (viaesma_sync_data_script.cmake). Replaces the per-componentsync_data.cmakefiles. - Added
esma_regression_run_helpers.cmakewith shared helper functions (copy_directory,link_directory,copy_file,run_geos,compare_results) for use in per-componentrun_case.cmakescripts.
Changed
- Switch macOS RPATH in
osx_extras.cmakefrom absolute${CMAKE_INSTALL_PREFIX}/libto relative@loader_path/../liband setENABLE_RELATIVE_RPATHS TRUEso that experiment-local install trees (EXPDIR/install/bin/GEOSgcm.x) resolve GEOS/MAPL shared libraries from their ownEXPDIR/install/libwithout referencing the original build prefix
What's Changed
- Add CMake infrastructure for GEOS regression tests by @pchakraborty in #553
- v4: Create manifest and fix macOS RPATH for relocatable installs by @mathomp4 in #552
New Contributors
- @pchakraborty made their first contribution in #553
Full Changelog: v4.40.0...v4.41.0