QC failed to build

Dear Experts,

I’ve received error during QC building(tests):

2021-06-11@04:52:42:DEBUG:O2Suite:QualityControl:dev_fit: /data/work/alice/sw/slc7_x86-64/GCC-Toolchain/v10.2.0-alice2-local1/bin/…/lib/gcc/x86_64-unknown-linux-gnu/1
0.2.0/…/…/…/…/x86_64-unknown-linux-gnu/bin/ld: /opt/o2/lib/libRHTTP.so.6.20: undefined reference to `TROOT::RegisterModule(char const*, char const**, char const**,
char const*, char const*, void (*)(), std::vector<std::pair<std::string, int>, std::allocator<std::pair<std::string, int> > > const&, char const**, bool)’

Could it be related to FLPsuite 0.18.2 installed on this machine(/opt/o2 path in the error log)? How can I fix this?

Full log: CERNBox

Short version(only QC part) filename: onlyQC_build20210610.log

Best Regards,

Artur Furs.

Hello,

I am not able to access the logs.

It seems indeed that the ROOT library is coming from the RPM installation. Which instructions are you following ? do you need to build on a machine with FLP suite installed ?

Best regards,
Barth

Hello @bvonhall ,

I fixed shared link, now it should be accessible.
I used common instructions for building O2Suite (QualityControl/QuickStart.md at master · AliceO2Group/QualityControl · GitHub). Yes, I need to develop and build QC on machine with FLPSuite installed.

As I can see there are some changes in instructions, should I compile with “–defaults o2-dataflow” ?

I don’t think that the change of defaults will have much effect.

We have changed the way we build RPMs and this is probably why you are encoutnering this problem. I have yet to exercise the new procedure and update the doc.

Could you try the following ?

yum install o2-QualityControl-devel
git clone https://github.com/AliceO2Group/QualityControl.git
cd QualityControl
mkdir build
cd build 
cmake 
make

Does it build ?

As you see, we don’t need anymore alibuild to build on a FLP.

I cannot see QC-devel in repository, but o2-QualityControl-v1.17.0-local7.slc7.x86_64 is already installed, is it normal?

Cmake failed, I uploaded log to directory with shared link.

Did you mean aliBuild usage during FLPSuite installation? BTW, I can downgrade FLPSuite version to 0.17, as temporary solution.

I think that we need to take a step back.

Let’s start with the preliminary questions:
What are you trying to achieve ?
why do you need to build QC on a FLP ?
for which detector are you working ?

As I said, I have not yet tested the procedure. If it does not work, I will have to try myself.

Now, to answer your questions:

  1. QC-devel is indeed not yet in the official repository. Thus you cannot install it. I have to see how to proceed.
  2. The flp suite is installed via RPMs not alibuild. I meant that if you want to build QC on an FLP installed with RPMs, it won’t use alibuild now.
  3. I don’t know how to downgrade the FLP Suite.

Cheers,

just to be clear: I am trying myself to do it.

Ok, I understand.

I’m working with FIT detector, FLPSuite infrastructure(mostly frontend, GUI, etc) is used for FEE tests. Custom QC build is used as Digit monitoring tool right now. Time to time I’m getting some requests from FEE team, to apply new features for tests or something else. And for test-setups unfortunately we need custom O2/QC builds for now, due to specific FEE setup. So, such way (FLPSuite + custom O2/QC builds) makes our operations more flexible(building instead of applying new PR each time and waiting daily binary package in repository). Maybe I’m missing something and there are could be better option.

Well, as I can see such combination of FLPSuite and custom O2/QC builds is a bad idea :slight_smile:

Best Regards,
Artur Furs.

Hi,

Thank you so much for the information.

I am myself struggling at the moment for this to work. In itself it is not bad idea, we just need to iron out the glitches.

Let’s resume next week with a fresh mind and a lot of energy !

@awegrzyn This will be of interest to you and we will need your help.

Cheers,
Barth

@bvonhall @afurs I have a similar requirement for MCH, as we would need to test some bleeding-edge features on the FLPs at P2.

Basic question: would alibuid with the --always-prefer-system option be capable of picking all the O2 packages installed via RPM?

Hello @aferrero,

well, “–defaults o2-dataflow” worked for me. QC was successfully compiled.

I am currently trying to compile QC using only cmake and RPM packages, but I am hitting few walls on my way…

@bvonhall I have tried compiling QC from sources in a direct way, that is simply running CMake outside of the alibuild environment and trying to pick the packages from the FLP suite.

What I am trying to do is basically the following:

cd QualityControl
mkdir build
cd build
cmake3 ..

However at the moment I am stuck with several issues:

  1. in /opt/o2/lib/cmake/O2/Findms_gsl.cmake the Microsoft.GSL::GSL target is not global. I had to add
set_target_properties(Microsoft.GSL::GSL PROPERTIES IMPORTED_GLOBAL TRUE)

before

add_library(ms_gsl::ms_gsl ALIAS Microsoft.GSL::GSL) 

to avoid the following error:

CMake Error at /opt/o2/lib/cmake/O2/Findms_gsl.cmake:22 (add_library):
  add_library cannot create ALIAS target "ms_gsl::ms_gsl" because target
  "Microsoft.GSL::GSL" is imported but not globally visible.
Call Stack (most recent call first):
  /opt/o2/lib/cmake/O2/O2Dependencies.cmake:76 (find_package)
  /opt/o2/lib/cmake/O2/O2Config.cmake:11 (include)
  CMakeLists.txt:96 (find_package)
  1. the o2-ROOT package does not provide the CMake configuration files. I have tried to copy and adapt those installed by aliBuild, but it seems not so trivial and I still get lots of CMake errors
  2. RapidJSON is not installed, and installing rapidjson-devel fails due to file conflicts with mesos:
Transaction check error:
  file /usr/include/rapidjson/allocators.h from install of rapidjson-devel-1.1.0-2.el7.noarch conflicts with file from package mesos-1.11.0-2.0.1.el7.x86_64
  file /usr/include/rapidjson/document.h from install of rapidjson-devel-1.1.0-2.el7.noarch conflicts with file from package mesos-1.11.0-2.0.1.el7.x86_64
  file /usr/include/rapidjson/encodedstream.h from install of rapidjson-devel-1.1.0-2.el7.noarch conflicts with file from package mesos-1.11.0-2.0.1.el7.x86_64
  file /usr/include/rapidjson/encodings.h from install of rapidjson-devel-1.1.0-2.el7.noarch conflicts with file from package mesos-1.11.0-2.0.1.el7.x86_64
  file /usr/include/rapidjson/error/en.h from install of rapidjson-devel-1.1.0-2.el7.noarch conflicts with file from package mesos-1.11.0-2.0.1.el7.x86_64

I ended up doing

sudo yum install alisw-RapidJSON+v1.1.0-alice2-11

and

export RapidJSON_ROOT=/opt/alisw/el7/RapidJSON/v1.1.0-alice2-11

but I guess this is not the right way to go…
3. I get a lot of error related to abseil, however I cannot find any abseil development package I could install, and no O2 package (included o2-grpc) seems to depend on abseil:

-- BASENAME parameter is deprecated. Will be ignored
-- BASENAME parameter is deprecated. Will be ignored
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) 
-- Configuring done
CMake Error at Framework/CMakeLists.txt:39 (add_library):
  Target "QualityControl" links to target "absl::optional" but the target was
  not found.  Perhaps a find_package() call is missing for an IMPORTED
  target, or an ALIAS target is missing?


CMake Error at Framework/CMakeLists.txt:39 (add_library):
  Target "QualityControl" links to target "absl::time" but the target was not
  found.  Perhaps a find_package() call is missing for an IMPORTED target, or
  an ALIAS target is missing?

...........

That’s were I am at the moment… hope it can help.

Cheers, Andrea

Hi Andrea,

Just one comment as the ms_gsl caught my eyes : how old is the O2 you’re based off ? Because Findms_gsl is no longer part of O2 since about a month ago : [O2-2018] Drop support for Microsoft GSL v2 by aphecetche · Pull Request #6075 · AliceO2Group/AliceO2 · GitHub

Also, note that in principle the O2 package is providing an O2Config.cmake (whether that cmake config is a proper one might be another matter, granted). Have no idea how the rpms are built and what (if anything) is stripped off from them, though.

Here is the version of the O2 package:

[mch@alio2-cr1-flp151 build]$ yum info o2-O2
Loaded plugins: fastestmirror
Repository alice-o2-cc7 is listed more than once in the configuration
Loading mirror speeds from cached hostfile
Installed Packages
Name        : o2-O2
Arch        : x86_64
Version     : nightly_20210505_local5
Release     : slc7
Size        : 2.2 G
Repo        : installed
From repo   : o2-flp
Summary     : no description given
URL         : http://example.com/no-uri-given
License     : unknown
Description : no description given

It appears to be from 5th of May, so before your change…

The O2 CMake configuration exists and as far as I can tell it is used when configuring QC:

/opt/o2/lib/cmake/O2/O2Config.cmake

Maybe the current QC master is simply not compatible anymore with O2 from beginning of May…

Hi,

I have been able to build QC on a FLP as described here: https://alice.its.cern.ch/jira/browse/O2-2379
The comment at the end has the exact commands I used.

The question now is how to use it in ECS. There is another ticket for @teo : https://alice.its.cern.ch/jira/browse/O2-2394

Cheers,