O2 build fails in CentOS 7 due to GLFW

Dear experts,

I try to build O2 in a flp CentOS 7 but the installation fails at GLFW step :

2020-09-10@14:06:46:DEBUG:O2:GLFW:0: – Configuring incomplete, errors occurred!
2020-09-10@14:06:46:DEBUG:O2:GLFW:0: See also “/home/o2flp/alice/sw/BUILD/e1068f0b70bf24891c4846cedb77d8ae6047dcb7/GLFW/CMakeFiles/CMakeOutput.log”.
2020-09-10@14:06:46:DEBUG:O2:GLFW:0: See also “/home/o2flp/alice/sw/BUILD/e1068f0b70bf24891c4846cedb77d8ae6047dcb7/GLFW/CMakeFiles/CMakeError.log”.
2020-09-10@14:06:46:ERROR:O2:GLFW:0: Error while executing /home/o2flp/alice/sw/SPECS/slc7_x86-64/GLFW/3.3-090b16bfae-1/build.sh on `alimftcom2.cern.ch’.
2020-09-10@14:06:46:ERROR:O2:GLFW:0: Log can be found in /home/o2flp/alice/sw/BUILD/GLFW-latest/log
2020-09-10@14:06:46:ERROR:O2:GLFW:0: Please upload it to CERNBox/Dropbox if you intend to request support.
2020-09-10@14:06:46:ERROR:O2:GLFW:0: Build directory is /home/o2flp/alice/sw/BUILD/GLFW-latest/GLFW.

I put in my cernbox the log https://cernbox.cern.ch/index.php/s/IsVMzIh9L94uMEL

Can you help me please?

Have a nice day,
Lucrezia

Hi Lucrezia,

CMake is complaining that “The XInput headers were not found”. To clarify you should add the following files to the shared CERNbox folder:

"/home/o2flp/alice/sw/BUILD/e1068f0b70bf24891c4846cedb77d8ae6047dcb7/GLFW/CMakeFiles/CMakeOutput.log".
"/home/o2flp/alice/sw/BUILD/e1068f0b70bf24891c4846cedb77d8ae6047dcb7/GLFW/CMakeFiles/CMakeError.log".

I think you are missing yum install libXi-devel. Can you try?

Hi @pezzi and @eulisse ,

I add the logs in the cernbox folder https://cernbox.cern.ch/index.php/s/IsVMzIh9L94uMEL .

In fact, the package, that you told me Giulio, was missing! I try to re-build then!

I could pass that step but now I have a problem with Python :frowning:

https://cernbox.cern.ch/index.php/s/CabF1OvIHrwyMLY

Which instructions are you following?

These : https://alice-doc.github.io/alice-analysis-tutorial/building/build.html

I opened a PR to fix the instructions. For the python stuff, it looks like you have a private python installation?

Dear Giulio,

This CentOS 7.8 machine is used for acquisition, it is a FLP used for MFT on-surface commissioning. Therefore, it does have the official python distribution that comes with the FLP suite installed on it. This distribution must stay. The O2 installation is done on this machine to run (asynchronously) the decoding of the raw data produced in situ, in order to avoid spending time moving the raw data around from a computer to another. The O2 installation is being done under a user different from the user that runs the acquisition. Can O2 peacefully coexist with the python from the FLP suite?

Thanks in advance for your help.

Best regards,
Andry

In principle they should coexists peacefully, as in the end FLP Suite is built using the same tools as the rest of O2 (aliBuild). I am confused by the fact you seem to have a different copy in ~/.local, though. @vmcb @awegrzyn @bvonhall do you have any idea?

Dear @eulisse,

I guess you are referring to the following line almost at the end of the log:

/home/o2flp/.local/lib/python3.6/site-packages

This .local is not under the flp user directory, but o2flp user directory. flp user is the one that runs the acquisition (FLP suite was deployed as root user and is accessible to flp user). But o2flp is the new user under which this build of O2 was tried. So my guess is that .local was created by the process that builds O2 to store the o2flp user python environment. Indeed, in the log, one can see that Python was installed by alibuild:

++ make altinstall
Creating directory /home/o2flp/alice/sw/INSTALLROOT/2d15ce8dfc2d55f6ddf374c9b48a8747892d1ca4/slc7_x86-64/Python/v3.6.10-1/bin
Creating directory /home/o2flp/alice/sw/INSTALLROOT/2d15ce8dfc2d55f6ddf374c9b48a8747892d1ca4/slc7_x86-64/Python/v3.6.10-1/lib

Python build finished successfully!

Best regards,
Andry

PS: the FLP suite python installation is in /opt/alisw/el7/Python/v3.6.10-30/bin/python and it was not built on the computer but deployed with ansible

Dear @eulisse, do you think it would be a good idea if we delete the installations which are sw folder and start all over again?

Cheers

Ciao @eulisse, can you please have a further look into this. The pending installation of O2 in these machines is becoming urgent for the project. If you need access to the servers, please let us know and we can coordinate a time slot.

Ciao,

Stefano

Dear all,
FLP provides Ansible role that setups aliBuild environment: https://gitlab.cern.ch/AliceO2Group/system-configuration/-/tree/dev/ansible/roles/flp-dev

In short:

  1. o2-flp-setup --head <target_hostname> --flps <target_hostname> deploy --modules dev
  2. su - alice, cd alice
  3. aliBuild build O2 --defaults o2

I’ve just successfully compiled O2 using instructions above.
Using o2 defaults (instead of o2-dataflow) with aliBuild on CC7 benefits from precompiled tarballs that are pulled from remote repo, therefore compilation of most packages is not needed.

Cheers,
Adam

1 Like

Dear @awegrzyn ,

Thanks for the instructions. They seem easy to realise.

Before proceeding, I would like to ask one question, though:

we were already using the commands in 1 but without --modules dev to deploy the FLP suite on the MFT FLPs in Bd. 581. Currently, we do not want any update of the FLP suite. So can you confirm that running the command in 1 i.e.
o2-flp-setup --head <target_hostname> --flps <target_hostname> deploy --modules dev
will not change anything to the current components of the already installed FLP suite?

Thanks in advance,

Best regards,
Andry

Hi,
Yes, this will run flp-dev role only.
Could you confirm that you want to have FLP Suite and flp-dev role at the same machine?
FLP Suite is meant to operate entire FLP software and flp-dev role is meant for software development.

Cheers,
Adam

EDIT: in order to run it on a single machine you just need to specify same hostname as --head and --flp.

Dear @awegrzyn,

Thanks for your prompt reply.

Yes the FLP suite and flp-dev role will be on the same machine. We have 3 standalone FLPs (1 at Cern) and 2 FLPs in a multi-node configuration (both at Cern). On each machine, the idea is to have the new alice user on each FLP to have the O2 fork that we use to decode (asynchronously) the raw data that are recorded by the flp user on that machine. The FLP suite was already deployed on each machine with o2-flp-setup deploy --head <target_hostname> --flps <target_hostname> and the flp user works as intended. We only want to add the user with (our fork) of O2.

Best regards,
Andry

Dear @awegrzyn,

I tried your instructions (1, 2, 3), but the build failed at the O2 stage. I noticed that the version of O2 it get from the repository is:

DEBUG:O2:O2:v1.2.0: + git clone --reference /home/alice/alice/sw/MIRROR/o2 GitHub - AliceO2Group/AliceO2: O2 software project for the ALICE experiment at CERN /home/alice/alice/sw/SOURCES/O2/v1.2.0/v1.2.0
DEBUG:O2:O2:v1.2.0: Cloning into ‘/home/alice/alice/sw/SOURCES/O2/v1.2.0/v1.2.0’…
DEBUG:O2:O2:v1.2.0: + cd /home/alice/alice/sw/SOURCES/O2/v1.2.0/v1.2.0
DEBUG:O2:O2:v1.2.0: + git checkout v1.2.0

The log, CMakeOutput.log and CMakeError.log are available on my cernbox:
https://cernbox.cern.ch/index.php/s/LZwV6CsQaSaRW0r

Do you have an idea of what is wrong?

Thanks in advance for your help,

Best regards,
Andry

Hi,
That’s weird. It means that something is broken with the newest tag. Could you run aliBuild init O2@dev --defaults o2 and then build again?

Dear @awegrzyn,

I remove O2 directory to be sure to start in the same conditions as when the user alice was just created and run the command you advised me to:

aliBuild init O2@dev --defaults o2
WARNING: using existing recipes from ./alidist
Cloning into ‘./O2’…

==> Development directory . created for o2

Then I run again aliBuild build O2 --defaults o2. Unfortunately, the process ended again in error, at an earlier stage since it complained that CMake Generate step failed. Build files cannot be regenerated correctly because of:

CMake Error at cmake/O2AddTestWrapper.cmake:130 (add_test):
Error evaluating generator expression:
$<TARGET_PROPERTY:O2::SimSetup,INTERFACE_INCLUDE_DIRECTORIES>
Target “O2::SimSetup” not found

The log is provided in my cernbox directory at:
https://cernbox.cern.ch/index.php/s/Ex7NuQkGJe7Oc8v

Best regards,
Andry