Check dependencies between Python/Octave Debian/RPM/Conda packages
It should be checked that the dependencies between the Python/Octave Debian/RPM/Conda packages are correct. If there is a dependency between the C libraries (e.g. liblalinference
depends on liblalframe
) there should also be a dependency between the Python/Octave modules (e.g. to import lalinference
one must also import lalframe
).
The reason for this dependency is the SWIG wrappings. SWIG uses runtime type information to convert types to/from C and Python/Octave. For example, given that liblalinference
depends on liblalframe
, a function in liblalinference
might use a type defined in the C headers for liblalframe
. Then, when import
ing lalinference
and encountering the type, SWIG needs to know how to covert that type between Python and Octave. That information exists in the lalframe
module and so must be loaded with import lalframe
.
Note that this dependency required by SWIG is independent of an explicit script dependency. So even though e.g. none of the Python scripts in lalinference
may explicitly import lalframe
, the dependency still exists because of the SWIG wrappings.
I've found that the LALInference RPM Python/Octave packages are missing dependencies on the LALFrame RPM Python/Octave packages (!1584 (closed)) but I don't know if there are other instances. I'm hoping someone has a script to automatically check the dependencies...