Compile/build CTA on a Rocky/EL8 host

Hi,

I am trying to compile CTA 5.2.10 on a Rocky 8 host and I have the following questions:

  • What is the required Ceph version (for the librados-devel, libradosstriper-devel and librados2 packages)? Just to note that there isn’t a 15.2.15-0 Octopus version in our ceph-el8-x86_64 mirrors repo, the earliest Octopus version in this repo is 15.2.16-0…)

  • What is the required version for the oracle-instantclient that can be found in Oracle Instant Client | Oracle, Software. Hardware. Complete.?

  • What is the required version for the packages

eos-protobuf3-compiler
eos-protobuf3-devel

(assuming that these are the new names of protobuf3-compiler and protobuf3-devel in cta.spec.in) that can be found in
https://storage-ci.web.cern.ch/storage-ci/eos/diopside-depend/el-8/x86_64/
There is actually only one one version in this repo 3.17.3-1

  • What is the required XRootD version for the xroot-libs etc?

Many thanks,

George

Hi George,

Currently at CERN for CTA we are using CentOS-7 with this packages: versionlock.list

For Ceph we are using `15.2.15-0.el7.

For oracle-instant-client we are using 19.3 , described in cta.spec.in. You can try to use the version oracle-instantclient19.13-devel-19.13.0.0.0-2.x86_64.rpm. In Alma9 we will use oracle-instantclient19.19-devel-19.19.0.0.0-1.el9.x86_64.rpm because it’s the only available version.

For protobuf3-devel we use the default one in CentOS7

Hi Jorge,

Thanks for the reply. I am aware of these package versions in the case of Centos-7/EL7.
I was basically wondering what are the corresponding versions of these same packages
in the of EL8.

George

Hi George,
we know :slight_smile: We just mentioned the closest configuration we are sure of, in case it is useful, as no one has given a Rocky8-specific answer yet. Since we plan to skip from CentOS7 straight to Alma9 we will likely not have a good answer for you here.

Hi Richard,

Can you please tell me the version of these packages that you will use for the Alma9 compilation?

Morning!
The Alma9 setup is being worked on by Jorge (see also his comment above for Alma9 details) in issue #499. Additional build details can be seen in the corresponding branch & MR: 499-compile-and-running-cta-in-alma9-linux

Thanks and sorry for missing Jorge’s comment on the version of oracle-instantclient1; I will try the version oracle-instantclient19.19.

Would it be please possible to confirm also the versions of Ceph/rados and eos-protobuf3 (as the protobuf3 packages are now called in the diopside deps repo)? I didn’t manage to find these in the above gitlab #499 issue.

No worries if you haven’t decided on these yet. Please post an update in this thread whenever you can!

George

In the first instance, if you have the package versions for EL8/Alma8 that would also be very usefull! In fact these are the ones I am after!

George

Hi,

I have managed to build the src.rpm and install all package deps but I get compilation errors the “build_rpm” stage. I paste the last few lines of the compilation output. Can you please help?

In file included from /root/CTA/build_rpm/RPM/BUILD/cta-4.10.0-2/objectstore/ObjectOps.hpp:22,
from /root/CTA/build_rpm/RPM/BUILD/cta-4.10.0-2/objectstore/Agent.hpp:20,
from /root/CTA/build_rpm/RPM/BUILD/cta-4.10.0-2/scheduler/OStoreDB/OStoreDB.hpp:32,
from /root/CTA/build_rpm/RPM/BUILD/cta-4.10.0-2/objectstore/Helpers.hpp:34,
from /root/CTA/build_rpm/RPM/BUILD/cta-4.10.0-2/objectstore/Algorithms.hpp:31,
from /root/CTA/build_rpm/RPM/BUILD/cta-4.10.0-2/objectstore/ArchiveQueueAlgorithms.hpp:20,
from /root/CTA/build_rpm/RPM/BUILD/cta-4.10.0-2/objectstore/ArchiveQueueToTransferAlgorithms.cpp:19:
/root/CTA/build_rpm/RPM/BUILD/cta-4.10.0-2/build/objectstore/cta.pb.h:23681:13: note: declared here
inline void RetrieveRequestRepackInfo::set_force_disabled_tape(bool value) {
^~~~~~~~~~~~~~~~~~~~~~~~~
cc1plus: all warnings being treated as errors
make[6]: *** [objectstore/CMakeFiles/ctaobjectstore.dir/build.make:251: objectstore/CMakeFiles/ctaobjectstore.dir/ArchiveQueueToTransferAlgorithms.cpp.o] Error 1
make[5]: *** [CMakeFiles/Makefile2:2614: objectstore/CMakeFiles/ctaobjectstore.dir/all] Error 2
make[4]: *** [Makefile:136: all] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.qnR592 (%build)

RPM build errors:
Bad exit status from /var/tmp/rpm-tmp.qnR592 (%build)
make[3]: *** [CMakeFiles/cta_rpm.dir/build.make:72: CMakeFiles/cta_rpm] Error 1
make[2]: *** [CMakeFiles/Makefile2:1174: CMakeFiles/cta_rpm.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:1181: CMakeFiles/cta_rpm.dir/rule] Error 2
make: *** [Makefile:280: cta_rpm] Error 2

Hi George,

This seems to be some problem with the building of the protobuf files. I have seen it happen before, and it’s usually because they were not rebuilt properly.

I’m not sure what can help in this specific case, but I would try the following:

  1. Clear manually all build files
  2. Clear ccache (if used)
  3. Run git submodule update --init --recursive to pull the correct commits of all submodules
  4. Try to build again

I hope this works,
Joao

Hi Joao,

Thanks for the reply. I did what you suggested but I still get compilation errors…

Just to let you know about certain package deps I am not sure about

  • For the protobuf3 libraries, I have installed the following (I have modified cta.spec.in and /cmake/FindProtobuf3.cmake accordingly)

eos-protobuf3-3.17.3-1.el8.eos.x86_64
eos-protobuf3-compiler-3.17.3-1.el8.eos.x86_64
eos-protobuf3-devel-3.17.3-1.el8.eos.x86_64

from the diopside-depend repo because I didnt find any in the citrine-depend one.
Is this OK?

  • For gprc, I have

grpc-plugins-1.19.0-1.el8.x86_64
grpc-1.19.0-1.el8.x86_64
grpc-static-1.19.0-1.el8.x86_64
grpc-devel-1.19.0-1.el8.x86_64

all taken from the citrine-depend repo. Maybe I need the eos-gprc ones from the diopside-depend repo…?

George

Trying to compile CTA 5.10.0-2 on Rocky 9 and still get errors relatedto grpc++ header files

*Can you please confirm the GPRC library paths in cmake/FindGRPC.cmake?

I currently have
+set (GRPC_INCLUDE_DIR /opt/eos/grpc/include/)
+set (GRPC_LIBRARY /opt/eos/grpc)
+set (GRPC_GRPC++_LIBRARY /opt/eos/grpc)
+set (GRPC_GRPC++_REFLECTION_LIBRARY /opt/eos/grpc)
+set (GRPC_CPP_PLUGIN /opt/eos/grpc/bin)

For the first three, I have installed

eos-grpc-devel-1.41.0-1.el9.x86_64
eos-grpc-1.41.0-1.el9.x86_64
eos-grpc-plugins-1.41.0-1.el9.x86_64
eos-grpc-static-1.41.0-1.el9.x86_64

When I run cmake3, I get the following warnings

WARNING: Target “EosGrpcClient” requests linking to directory “/opt/eos/grpc”. Targets may link only to libraries. CMake is dropping the item.
WARNING: Target “EosGrpcClient” requests linking to directory “/opt/eos/grpc”. Targets may link only to libraries. CMake is dropping the item.
WARNING: Target “ctaCmdlineToolsCommon” requests linking to directory “/opt/eos/grpc”. Targets may link only to libraries. CMake is dropping the item.
WARNING: Target “cta-send-event” requests linking to directory “/opt/eos/grpc”. Targets may link only to libraries. CMake is dropping the item.
WARNING: Target “cta-change-storage-class-in-catalogue” requests linking to directory “/opt/eos/grpc”. Targets may link only to libraries. CMake is dropping the item.
WARNING: Target “cta-restore-deleted-files” requests linking to directory “/opt/eos/grpc”. Targets may link only to libraries. CMake is dropping the item.
WARNING: Target “cta-eos-namespace-inject” requests linking to directory “/opt/eos/grpc”. Targets may link only to libraries. CMake is dropping the item.
WARNING: Target “cta-admin-grpc” requests linking to directory “/opt/eos/grpc”. Targets may link only to libraries. CMake is dropping the item.
WARNING: Target “cta-admin-grpc” requests linking to directory “/opt/eos/grpc”. Targets may link only to libraries. CMake is dropping the item.
WARNING: Target “cta-frontend-async-grpc” requests linking to directory “/opt/eos/grpc”. Targets may link only to libraries. CMake is dropping the item.
WARNING: Target “cta-frontend-async-grpc” requests linking to directory “/opt/eos/grpc”. Targets may link only to libraries. CMake is dropping the item.
WARNING: Target “cta-frontend-grpc” requests linking to directory “/opt/eos/grpc”. Targets may link only to libraries. CMake is dropping the item.
– Generating done
– Build files have been written to: /root/CTA/build_rpm

Hi George,

I am working in the issue about compiling and running CTA in Alma9. Currently I’ve managed to compile CTA in alma9, here you can follow the changes: Draft: Resolve "Compile and Running CTA in Alma9 Linux" (!357) · Merge requests · cta / CTA · GitLab

But at the moment it’s a bit messy with multiple duplicate files and patches. When I manage to run it in the CI I will clean it.

Hi Jorge,

Thanks for the reply and for the GitLab link; I am afraid I cannot make too much our of it. I have modified both cmake/FindProtobuf3.cmake

-set(ORACLE-INSTANTCLIENT_VERSION 19.3)
+set(ORACLE-INSTANTCLIENT_VERSION 19.19)

and cmake/FindProtobuf3.cmake

-set(PROTOBUF3_ROOT /usr)
+set(PROTOBUF3_ROOT /opt/eos)

and also cmake/FindGRPC.cmake (se changes above)

to get past the “cmake3 …/” stage. It is just when I do “make cta_rpm” I get errors about grpc and grpc++ not being found which results eventually in the compilation to abort.

This, I think, means that my changes in cmake/FindGRPC.cmake are not correct hence my question. Can you please clarify how should I set the following?

+set (GRPC_INCLUDE_DIR /opt/eos/grpc/include)
+set (GRPC_LIBRARY /opt/eos/grpc)
+set (GRPC_GRPC++_LIBRARY /opt/eos/grpc)
+set (GRPC_GRPC++_REFLECTION_LIBRARY /opt/eos/grpc)
+set (GRPC_CPP_PLUGIN /opt/eos/grpc/bin)

For the record, I suppose it is bit of of an overkill to try and build CTA on Rocky 9 but I just want to have a back-up option in case your Alma9 builds have issues running on our Rocky 9 hosts.

Best,

George