Troubles compiling QC

I am having troubles compiling QC with an up-to-date alidist folder.

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[2]: *** No rule to make target `/root/alice/sw/slc7_x86-64/protobuf/v3.7.1-3/lib/', needed by `lib/'.  Stop.

The full log can be found here.

Indeed, the 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
total 13728
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!

Regards, Andrea

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 problem as explained above…

@eulisse It is strange that aliBuild complained about the default. Indeed, aegis is disabled in the o2-dataflow defaults.

@aferrero Indeed, sorry, I read too quickly through the post. @teo could you check the error with protobuf ?

1 Like

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.

Using the o2 defaults I am still blocked by the missing library.

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 library.
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
at /root/alice/sw/SOURCES/QualityControl/master/0
++ 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
mmon_ROOT=/root/alice/sw/slc7_x86-64/Common-O2/v1.4.2-1 -DConfiguration_ROOT=/root/alice/sw/slc
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
ot_DIR=/root/alice/sw/slc7_x86-64/FairRoot/c672f280ec-50 -DMS_GSL_INCLUDE_DIR=/root/alice/sw/sl
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:
--   container
--   unit_test_framework
--   program_options
--   system
--   log
--   signals
--   system
--   date_time
--   log_setup
--   filesystem
--   thread
--   regex
--   chrono
--   atomic
-- Configuration 1.5.2 found
-- Monitoring 2.4.0 found
-- Found MySQL: /usr/lib64/mysql/
-- Common-O2 0.0.0 found
-- InfoLogger found : /lib/
-- Found AliceO2: /root/alice/sw/slc7_x86-64/O2/d96fc51b10_O2_DATAFLOW-1/lib/  

As you can see, cmake picks /lib/ 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:

-DInfoLogger_ROOT= -DO2_ROOT=/root/alice/sw/slc7_x86-64/O2/d96

Any idea?

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 ?

Actually, I know. Could you try this : ?

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…

This might help.

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-v2.3.2.1-8/sources/TPCCAGPUTracking/SliceTracker/AliHLTTPCCATracker.h:37:10: fatal error: 'cmodules/timer.h' file not found
#include "cmodules/timer.h"
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[2]: *** [Detectors/TPC/reconstruction/TPCCAGPUTracking/G__O2TPCCAGPUTrackingDict.cxx] Error 1

@eulisse any idea?