Troubles compiling QC


(Andrea Ferrero) #1

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: 
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/libprotobuf.so', needed by `lib/libCCDB.so'.  Stop.

The full log can be found here.

Indeed, the 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
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


(Giulio Eulisse) #2

Regarding the defaults error, I just did:

which should fix the issue.

Tagging @teo regarding the protobuf one.


(Andrea Ferrero) #3

Thanks @eulisse, will try your fix in a short while!


(Barthelemy Von Haller) #4

Hi,
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.
Cheers,
Barth


(Andrea Ferrero) #5

That’s what I was trying to do, but then I am hitting the libprotobuf.so problem as explained above…


(Barthelemy Von Haller) #6

@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 ?


(Giulio Eulisse) #7

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.


(Andrea Ferrero) #8

@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 libprotobuf.so 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 libInfoLogger.so 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
CMAKE_CXX_STANDARD=17 -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
-- 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/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:

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

Any idea?
Thanks!


(Barthelemy Von Haller) #9

Hi,
I can fix the second problem. Let me have a look. For the protobuf, this is out of my scope.
Cheers,
Barth


(Barthelemy Von Haller) #10

I don’t understand why the infologger is not correctly passed. Is it a machine that I can access or are you at CERN ?


(Barthelemy Von Haller) #11

Actually, I know. Could you try this : https://github.com/alisw/alidist/pull/1633 ?


(Barthelemy Von Haller) #12

It is merged so you can just pull


(Andrea Ferrero) #13

It compiles with your fix, thanks!


(Giulio Eulisse) #14

You mean there is nothing else to do here?


(Barthelemy Von Haller) #15

As far as I understand it works when compiling with o2-dataflow but not with o2 (protobuf problem).


(Giulio Eulisse) #16

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?


(Andrea Ferrero) #17

Exactly!


(Andrea Ferrero) #18

Please notice that it is O2 that does not compile (or better link) properly, not QC…


(Teo Mrnjavac) #19

This https://github.com/alisw/alidist/pull/1634 might help.


(Andrea Ferrero) #20

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?