i2o isn't detected correctly
Summary
The i2o library is detected using i2o/version.h. However the packaging situation is more fun: i2o is split across several packages. i2o/version.h happens not to be in the same package as i2o/i2o.h which is what we use (cmsos-core-i2o-devel vs cmsos-core-externi2o-devel). externi2o is a header-only library.
Steps to reproduce
Build on a system without cmsos-core-externi2o-devel; configure passes but build fails.
What is the expected correct behavior?
Configure step fails.
Relevant logs and/or screenshots
https://gitlab.cern.ch/lmoureau/cmsgemos/-/jobs/8188428
FAILED: gemreadout/CMakeFiles/gemreadout.dir/src/GEMReadoutApplication.cpp.o
/opt/rh/devtoolset-8/root/usr/bin/c++ -DLITTLE_ENDIAN__ -Dgemreadout_EXPORTS -Igemreadout/_interface -Igembase/_interface -Igemutils/_interface -isystem /opt/xdaq/include -isystem /opt/xdaq/include/linux -DGIT_VERSION=\"unknown\" -DGEMDEVELOPER=\"root\" -flto -fno-fat-lto-objects -fPIC -fdiagnostics-color=always -std=gnu++17 -MD -MT gemreadout/CMakeFiles/gemreadout.dir/src/GEMReadoutApplication.cpp.o -MF gemreadout/CMakeFiles/gemreadout.dir/src/GEMReadoutApplication.cpp.o.d -o gemreadout/CMakeFiles/gemreadout.dir/src/GEMReadoutApplication.cpp.o -c ../gemreadout/src/GEMReadoutApplication.cpp
In file included from ../gemreadout/src/GEMReadoutApplication.cpp:7:
gemreadout/_interface/gem/readout/GEMReadoutApplication.h:9:10: fatal error: i2o/i2o.h: No such file or directory
#include "i2o/i2o.h"
^~~~~~~~~~~
compilation terminated.
Environment
- Version used: unrelated build system fixes on top of current
develop - Operation System: centos:7
Possible fixes
Add header-only support to FindxDAQ.cmake (also required for nlohmann::json); change the i2o dependency to externi2o, updating the header check to i2o/i2o.h.
Edited by Louis Moureaux