Skip to content

v4: Centralized Regression Testing & Relative macOS RPATHs

Choose a tag to compare

@mathomp4 mathomp4 released this 09 Jul 11:56
v4.41.0
d1ffc28

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 pass NAME, DATA_PATH, TEST_CASES, and an optional EXTRA_ENV list. The macro automatically handles:
    • OpenMPI flag detection.
    • Local vs. S3 data directory selection.
    • The sync_data ctest fixture and per-case test registration.
  • Standardized S3 Syncing: Added esma_sync_aws_s3_data.cmake, a generic -P script invoked by the sync_data fixture to download regression data from S3 using temporary AWS credentials. This completely replaces older, per-component sync_data.cmake files.
  • Shared Run Helpers: Added esma_regression_run_helpers.cmake containing shared utility functions (copy_directory, link_directory, copy_file, run_geos, compare_results) to streamline per-component run_case.cmake scripts.
  • Install Manifest: Added esma_install_manifest.cmake to generate a comprehensive manifest of all installed files.

🍏 macOS Portability

  • Relative RPATHs: Switched the macOS RPATH configuration in osx_extras.cmake from an absolute path (${CMAKE_INSTALL_PREFIX}/lib) to a relative path (@loader_path/../lib) and enabled ENABLE_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 local EXPDIR/install/lib directory without hardcoding or requiring references back to the original build prefix.

From CHANGELOG.md

Added

  • Add new esma_install_manifest.cmake to 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 passes NAME, DATA_PATH, TEST_CASES, and an optional EXTRA_ENV list; the macro handles OpenMPI flag detection, local/S3 data-dir selection, the sync_data ctest fixture, and per-case test registration.
  • Added esma_sync_aws_s3_data.cmake, a generic -P script invoked by the sync_data fixture that downloads regression data from S3 using temporary AWS credentials (via esma_sync_data_script.cmake). Replaces the per-component sync_data.cmake files.
  • Added esma_regression_run_helpers.cmake with shared helper functions (copy_directory, link_directory, copy_file, run_geos, compare_results) for use in per-component run_case.cmake scripts.

Changed

  • Switch macOS RPATH in osx_extras.cmake from absolute ${CMAKE_INSTALL_PREFIX}/lib to relative @loader_path/../lib and set ENABLE_RELATIVE_RPATHS TRUE so that experiment-local install trees (EXPDIR/install/bin/GEOSgcm.x) resolve GEOS/MAPL shared libraries from their own EXPDIR/install/lib without 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

Full Changelog: v4.40.0...v4.41.0