I am having troubles compiling QC with an up-to-date
Firstly, if I run
aliBuild init QualityControl@master --defaults o2-dataflow
I get the following error message, which is new (the above command was working few months ago):
[root@mchflp1 ~]# aliBuild init QualityControl@master --defaults o2-dataflow
WARNING: using existing recipes from ./alidist
ERROR: Specified default `o2-dataflow' is not compatible with the packages you want to build.
ERROR: Valid defaults:
ERROR: - o2
aliBuild init QualityControl@master --defaults o2 works properly, but the building process fails on the O2 target due to a missing shared library:
gmake: *** No rule to make target `/root/alice/sw/slc7_x86-64/protobuf/v3.7.1-3/lib/libprotobuf.so', needed by `lib/libCCDB.so'. Stop.
The full log can be found here.
libprotobuf.so file is missing, only the
.a files are present:
[root@mchflp1 ~]# ls -l /root/alice/sw/slc7_x86-64/protobuf/v3.7.1-3/lib
drwxr-xr-x. 3 root root 22 May 3 03:31 cmake
-rw-r--r--. 1 root root 1347670 May 3 03:30 libprotobuf-lite.a
-rw-r--r--. 1 root root 6628886 May 3 03:31 libprotobuf.a
-rw-r--r--. 1 root root 6071618 May 3 03:31 libprotoc.a
drwxr-xr-x. 2 root root 116 May 7 10:43 pkgconfig
At this point I am stuck… any suggestions on how to proceed to compile the QC package?
Thanks a lot!
Regarding the defaults error, I just did:
which should fix the issue.
Tagging @teo regarding the protobuf one.
Thanks @eulisse, will try your fix in a short while!
If you are on CC7 you might want to use the defaults “o2” instead of “o2-dataflow”. It allows for the download of the precompiled packages and saves a lot of time.
That’s what I was trying to do, but then I am hitting the
libprotobuf.so problem as explained above…
@eulisse It is strange that aliBuild complained about the default. Indeed, aegis is disabled in the o2-dataflow defaults. https://github.com/alisw/alidist/pull/1620
@aferrero Indeed, sorry, I read too quickly through the post. @teo could you check the error with protobuf ?
No, it’s not, because we check if we can apply a given default before actually applying it. Basically
valid_defaults means: “these default know something about this package”. The idea is to avoid having aliroot defaults being used for O2.
@eulisse @teo @bvonhall unfortunately I still do not manage to compile QC using aliBuild.
I have updated
alidist and the QC sources this morning.
o2 defaults I am still blocked by the missing
If I use the
o2-dataflow defaults, I can get past the compilation of O2 but then QC fails to compile, due to some mismatch in boost versions required by different libraries. However, in this cas the root of the problem seems to be a wrongly detected
Here is the relevant part of the cmake log:
++ case $ARCHITECTURE in
++ rsync -a --ignore-existing /root/alice/sw/slc7_x86-64/CodingGuidelines/master-12/.clang-form
++ cmake /root/alice/sw/SOURCES/QualityControl/master/0 -DCMAKE_INSTALL_PREFIX=/root/alice/sw/s
lc7_x86-64/QualityControl/master-1 -DBOOST_ROOT=/root/alice/sw/slc7_x86-64/boost/v1.68.0-1 -DCo
7_x86-64/Configuration/v2.2.1-10 -DInfoLogger_ROOT= -DO2_ROOT=/root/alice/sw/slc7_x86-64/O2/d96
fc51b10_O2_DATAFLOW-1 -DFAIRROOTPATH=/root/alice/sw/slc7_x86-64/FairRoot/c672f280ec-50 -DFairRo
c7_x86-64/ms_gsl/1-9/include -DARROW_HOME=/root/alice/sw/slc7_x86-64/arrow/v0.12.0-alice6-13 -D
-- Boost version: 1.68.0
-- Found the following Boost libraries:
-- Configuration 1.5.2 found
-- Monitoring 2.4.0 found
-- Found MySQL: /usr/lib64/mysql/libmysqlclient.so
-- Common-O2 0.0.0 found
-- InfoLogger found : /lib/libInfoLogger.so
-- Found AliceO2: /root/alice/sw/slc7_x86-64/O2/d96fc51b10_O2_DATAFLOW-1/lib/libFramework.so
As you can see, cmake picks
/lib/libInfoLogger.so instead of the one from the
/root/alice/sw/slc7_x86-64 folder. This is actually due to the fact that
InfoLogger_ROOT is not properly passed to cmake:
I can fix the second problem. Let me have a look. For the protobuf, this is out of my scope.
I don’t understand why the infologger is not correctly passed. Is it a machine that I can access or are you at CERN ?
It is merged so you can just pull
It compiles with your fix, thanks!
You mean there is nothing else to do here?
As far as I understand it works when compiling with o2-dataflow but not with o2 (protobuf problem).
Ah, right the protobuf issue probably requires the same massaging we had to do for O2 to be done in QC. That’s because we moved from the old FindProtobuf to the one which uses the CMake.config. Maybe @teo can have a look?
Please notice that it is O2 that does not compile (or better link) properly, not QC…
I have updated aidist and re-compiled the
o2 default, but now I am stopped by a new compilation error:
In file included from input_line_12:1265:
/root/alice/sw/slc7_x86-64/AliTPCCommon/alitpccommon-v18.104.22.168-8/sources/TPCCAGPUTracking/SliceTracker/AliHLTTPCCATracker.h:37:10: fatal error: 'cmodules/timer.h' file not found
Error: /root/alice/sw/slc7_x86-64/ROOT/v6-16-00-32/bin/rootcint: compilation failure (/root/alice/sw/BUILD/3dce92fe927b34303db90981efccd656db47b6b5/O2/Detectors/TPC/reconstruction/TPCCAGPUTracking/G__O2TPCCAGPUTrackingDictbf1f42c623_dictUmbrella.h)
gmake: *** [Detectors/TPC/reconstruction/TPCCAGPUTracking/G__O2TPCCAGPUTrackingDict.cxx] Error 1
@eulisse any idea?