ALF breaks aliBuild O2Suite

Hi,

for a few weeks already

aliBuild build O2Suite --defaults o2

fails at ALF (at least on ubuntu 18.04) because of undefined references to some ReadoutCard functions.

CMakeFiles/o2-alf.dir/apps/Alf.cxx.o: In function `AliceO2::Alf::Alf::run(boost::program_options::variables_map const&)':
/home/tklemenz/AliSoftware/sw/SOURCES/ALF/v0.6.0/v0.6.0/apps/Alf.cxx:89: undefined reference to `AliceO2::roc::findCards()'
CMakeFiles/ALF.dir/src/AlfServer.cxx.o: In function `AliceO2::Alf::AlfServer::patternPlayer(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<AliceO2::roc::BarInterface>)':
/home/tklemenz/AliSoftware/sw/SOURCES/ALF/v0.6.0/v0.6.0/src/AlfServer.cxx:133: undefined reference to `AliceO2::roc::PatternPlayer::PatternPlayer(std::shared_ptr<AliceO2::roc::BarInterface>)'
/home/tklemenz/AliSoftware/sw/SOURCES/ALF/v0.6.0/v0.6.0/src/AlfServer.cxx:134: undefined reference to `AliceO2::roc::PatternPlayer::play(AliceO2::roc::PatternPlayer::Info)'
collect2: error: ld returned 1 exit status

The full log can be found here.

However,

aliBuild build qcg --defaults o2

still works because I guess the corresponding modules are not built. It isn’t a big issue for us at the moment but still someone should have a look probably.

Cheers,
Thomas

I merged https://github.com/alisw/alidist/pull/2413 by @kalexopo which should fix / workaround the problem. Could you update alidist?

Running aliBuild build O2Suite --defaults o2 I am now asked to install kernel-devel, which is a CentOS package afaik (AliDoctor output). Apparently the corresponding ubuntu package is linux-headers-$(uname -r) (see here) but still I am asked to install kernel-devel.
I also installed

linux-headers-generic
pciutils-dev
libkmod-dev

which did not help. I guess you are not using ubuntu but it would be cool if you had a hint which package is needed.

Btw: aliBuild build qcg --defaults o2 still works!

Cheers,
Thomas

Hi all,

now, that I can build qcg again (see here), I also tried building the O2Suite without qcg, like Thomas did.

I am as well on Ubuntu 18.04, I had the linux-headers-generic already installed and re-checked now, they are up-to-date, and I also installed the other suggested packages.

Unfortunately, like for Thomas, I still cannot build the O2Suite and aliBuild still complains, that I should install kernel-devel, which does not exist for Ubuntu. Searching a bit for the corresponding Ubuntu package, I also only found hints to the headers, which are already installed…

Now, that qcg building is fine, it’s not holding us back, but still would be nice to fix this and have the possibility again to build the full O2Suite.

Any hint would be appreciated!

As additional info, might be helpful, I run again aliDoctor with:

aliDoctor O2Suite --defaults o2

And here is the error output:

ERROR: Package kernel-devel is a system requirement and cannot be found.
ERROR: This is due to the fact that the following script fails:
ERROR: 
ERROR: brew() { true; }; ls /usr/src/kernels/*/include/linux/kernel.h > /dev/null 2>&1 && ls /usr/include/libkmod.h  > /dev/null 2>&1 && ls /usr/include/pci/pci.h > /dev/null 2>&1
ERROR: with the following output:
ERROR: 
ERROR: kernel-devel: 
ERROR: Please install kernel-devel pciutils-devel kmod-devel
ERROR: 

So actually even the other requested packages are still missing concerning aliDoctor, although I installed those suggested by Thomas. Reboot of the system does not change anything.

I had the same error and this path was an issue for me → /usr/src/kernels/*/include/linux/kernel.h
To solve it you should:

  1. Create “kernels” directory inside /usr/src/
  2. Create symbolic links to all installed linux headers ("ln -s ../linux-h* . " command should be executed inside created “kernels” folder with root permissions)

After fixing the mentioned issue, the new one appeared
Which is:

[ 69%] Linking CXX shared library libO2Lla.so
[ 69%] Built target LLA
Scanning dependencies of target TestLock
Scanning dependencies of target TestSession
[ 76%] Building CXX object CMakeFiles/TestLock.dir/test/TestLock.cxx.o
[ 84%] Building CXX object CMakeFiles/TestSession.dir/test/TestSession.cxx.o
[ 92%] Linking CXX executable TestLock
[100%] Linking CXX executable TestSession
libO2Lla.so: undefined reference to AliceO2::roc::findCard(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)' libO2Lla.so: undefined reference to AliceO2::roc::findCard(boost::variant<AliceO2::roc::PciAddress, AliceO2::roc::PciSequenceNumber, AliceO2::roc::SerialId> const&)’
collect2: error: ld returned 1 exit status
CMakeFiles/TestLock.dir/build.make:113: recipe for target ‘TestLock’ failed
make[2]: *** [TestLock] Error 1
CMakeFiles/Makefile2:118: recipe for target ‘CMakeFiles/TestLock.dir/all’ failed
make[1]: *** [CMakeFiles/TestLock.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs…
libO2Lla.so: undefined reference to AliceO2::roc::findCard(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)' libO2Lla.so: undefined reference to AliceO2::roc::findCard(boost::variant<AliceO2::roc::PciAddress, AliceO2::roc::PciSequenceNumber, AliceO2::roc::SerialId> const&)’
collect2: error: ld returned 1 exit status
CMakeFiles/TestSession.dir/build.make:113: recipe for target ‘TestSession’ failed
make[2]: *** [TestSession] Error 1
CMakeFiles/Makefile2:172: recipe for target ‘CMakeFiles/TestSession.dir/all’ failed
make[1]: *** [CMakeFiles/TestSession.dir/all] Error 2
Makefile:159: recipe for target ‘all’ failed
make: *** [all] Error

Hi,
qcg does not require any readout chain packages, O2Suite installs everything including Readout and ReadoutCard.
In addition, packages as ReadoutCard were not meant to be compiled on other systems than CC7 (and CC8 in the feature). Could you clarify why do you need readout chain packages on Ubuntu?

Cheers,
Adam

Hi Milosz, hi Adam,

thanks a lot for your replies! I did not have the time, yet, to try Milosz’ hint, but it seems, I might not have to do it.

Adam, thanks a lot for this clarification. We were not aware, that building the O2Suite is not supported on Ubuntu. We actually used the O2Suite all the time (successfully!), because it is the default in the instructions how to set up QC. The other option mentioned there is using o2-dataflow, which makes no sense to us, as we need to be able to run simulations.

I think, for our developments we should be fine just using qcg and will stick to this. But we would suggest to change the official instructions, therefore I also ping @bvonhall and @pkonopka.

Cheers,
Stefan

1 Like

Hi,

I would like to report that I observe the same issue with kernel on Ubuntu 18.04. And I would agree with the proposed changed of the official Quick Start in https://github.com/AliceO2Group/QualityControl/blob/master/doc/QuickStart.md to include instructions on how to build QC on Ubuntu for detector groups contributing to the QC development.

Cheers,
Tomáš

Ok, I will review the instructions. Thank you

Hi everyone,
I have started reviewing the instructions having in mind your comments and the recent WP3 decisions.

  • @therman WP3 has decided, or reiterated, that Ubuntu is not officially supported. Peter Hristov does it on a best effort basis.
  • @awegrzyn: Readout can be built and ran on Mac and this is something crucial for us. We often need it to test the QC. ReadoutCard automatically builds into a degraded package on Mac which is completely fine as we don’t have real cards.
  • Given the above two comments, I propose to modify the documentation in this way:
    • Remove references to Ubuntu
    • Add 1 sentence about Ubuntu to state that we know it probably works but do not support it.
    • I would keep the installation of O2Suite as is because it makes sure people have everything needed for the quickstart (QC and readout).

What do you think ?

I’m fine with that.

Hi,

Apologies in advance for so many questions, our group just got a bit worried about the Ubuntu statement so I wanted to clarify.

To avoid confusion, Ubuntu is not being left out to dry from now on, the support on best effort basis will continue?

And to clarify further, are we talking about O2 or QC or just the Readout when we talk about the support? Because I believe a large part of the collaboration is using Ubuntu and they will need to use O2 during Run 3 for analysis and at this point also people developing detector modules for QC are using O2 and QC on Ubuntu.

Saying that, I believe that is clearly stated here: https://alice-doc.github.io/alice-analysis-tutorial/building/custom.html that the support is on best effort basis. Nevertheless, whenever I had any problems installing software on Ubuntu people have been most helpful and I was able to make it work.

Now, to comment on my previous suggestion, I probably did not explain it correctly. I agree with your proposal to keep the O2Suite installation as is. What I had in mind was to include somewhere a short comment that for people developing QC modules on Ubuntu who don’t need working Readout but only QC. There is the possibility to build QC using the command:

aliBuild build qcg --defaults o2

Or maybe more natural would be to include link to this section https://github.com/AliceO2Group/QualityControl/blob/master/doc/ModulesDevelopment.md and have the command there? Because in this section there is also this command:

aliBuild build --defaults o2 QualityControl

Or something like that? Do you think that is reasonable?

Cheers,
Tomáš

Hi Tomas,

Sorry to cause you an unnecessary scare.

Nothing actually changed. You are correct that the O2 tutorial specifies that it is on a best effort basis. I should just make it clearer in the QC instructions. Things will continue the same way, ie. we try to help as we can for unsupported platforms such as Mac and Ubuntu.

I agree with your proposal and will apply it.

Thanks !
Cheers,
Barth

I tried to document more/better about non-CC7 systems; https://github.com/AliceO2Group/QualityControl/pull/511

Feel free to add also stuff to the doc if you want.

Hi Barth,

Thanks for the clarification.

And I think the changes you made are perfect.

Thanks.
Tomáš

Hi Barth,

thanks a lot for updating the documentation, I think it is clear now!

Cheers,
Stefan