Skip to content

Set full-dependency data/Octave/Python paths in top-level build

Karl Wette requested to merge ANU-CGA/lalsuite:top-level-build-lib-deps into master

Description

The top-level ./configure.ac currently doesn't set the full data/Octave/Python paths (i.e. with dependencies of dependencies). For example, LALINFERENCE_PYTHON_PATH will be set up to point to the Python locations in LALInference, but won't include the same locations for all LALInference's dependencies.

This means that these dependencies need to be explicitly set in the library-level ./configure.ac by calling LALSUITE_CHECK_LIB(). For example (wrt. !1887 (merged)) LALPulsar would need to explicitly call LALSUITE_CHECK_LIB() for LALInference and all its dependencies, even though LALPulsar only needs LALInference alone. This has downsides such as libraries being overlinked.

This MR tracks the dependencies between LALSuite libraries in the top-level ./configure.ac through the macro lalsuite_config_subdir(), e.g.:

lalsuite_config_subdir([LALInference],[LAL LALFrame LALMetaIO LALSimulation LALBurst LALInspiral LALPulsar])

This information is used to set the full data/Octave/Python paths for LALInference, including recursing into dependencies of dependencies. With this change (wrt. !1887 (merged)) LALPulsar should only need to explicitly call LALSUITE_CHECK_LIB() for LALInference itself, and its dependent paths will be handled correctly.

The script gnuscripts/check_library_dependencies now uses the top-level ./configure.ac as the "source of truth" for what the LALSuite library dependencies should be. Aside from the GitLab CI jobs (where the full dependent artefacts needs to be given for each job) in other places only direct dependencies should be need.

Finally gnuscripts/check_library_dependencies now also checks dependencies in the pkg-config files.

API Changes and Justification

Backwards Compatible Changes

  • This change does not modify any class/function/struct/type definitions in a public C header file or any Python class/function definitions
  • This change adds new classes/functions/structs/types to a public C header file or Python module

Backwards Incompatible Changes

  • This change modifies an existing class/function/struct/type definition in a public C header file or Python module
  • This change removes an existing class/function/struct/type from a public C header file or Python module

Review Status

cc @adam-mercer @duncanmmacleod

Merge request reports