Docker Image for v5.34/24

I am in need of a docker image for v5.34.24. Thus far, I have been working on lxplus and this is available as 5.34.24-x86_64-slc6-gcc48-opt. However, I am moving my analysis to the analysis preservation system that relies on images for their working environments and I can’t find this image in the root-project dockerhub. I would build my own image but when I try to build this version of root from source, it fails to build. This holds true for all patches v.34.XY. Finally, when I download the compiled binaries into my image, I can’t build my code with those.

As such, I feel that I have exhausted my options and require support from you all.

Thank you!

P.S. I love the new root docker-hub. Super helpful in reducing startup time for introducing new people to root!


Please read tips for efficient and successful posting and posting code

_ROOT Version: 5.34.24
Platform: Not Provided
Compiler: Not Provided


may be @eguiraud can help you ?

Hi,

We don’t have the resources to maintain historic versions of ROOT for today’s operating systems. It’s not trivial to build software from 15 years on a current OS. As you are referring to an “analysis preservation system” I would expect them to provide the necessary ingredients - please check with them.

Cheers, Axel.

I understand that this is spreading the limited person-power thin. I’ve been trying to do this myself, and hopefully you can assist in guiding me. I have a successful build here - https://gitlab.cern.ch/meehan/root-builds using

./configure \
      linuxx8664gcc \
      --prefix=/usr/local \
      --disable-x11 \
      --enable-xml \
      --with-x11-libdir=/usr/lib64 \
      --with-xpm-libdir=/usr/lib64/ \
      --with-xft-libdir=/usr/lib64/ \
      --with-xext-libdir=/usr/lib64

make

and this does build root successfully. However, I am finding that there are missing headers/libraries when I try to build my code against this

Compiling Utils.cxx
Compiling Variable.cxx
Compiling XMLDataInterpreter.cxx
XMLDataInterpreter.cxx:5:24: error: TDOMParser.h: No such file or directory
XMLDataInterpreter.cxx:6:22: error: TXMLNode.h: No such file or directory
XMLDataInterpreter.cxx:7:26: error: TXMLDocument.h: No such file or directory
XMLDataInterpreter.cxx:8:22: error: TXMLAttr.h: No such file or directory
In file included from XMLDataInterpreter.cxx:12:
XMLDataInterpreter.h:21: error: 'TXMLNode' has not been declared
XMLDataInterpreter.cxx: In member function 'virtual Bool_t XMLDataInterpreter::Interpret() const':
XMLDataInterpreter.cxx:33: error: 'TDOMParser' was not declared in this scope
XMLDataInterpreter.cxx:33: error: 'xmlparser' was not declared in this scope
XMLDataInterpreter.cxx:33: error: expected type-specifier before 'TDOMParser'
XMLDataInterpreter.cxx:33: error: expected ';' before 'TDOMParser'
XMLDataInterpreter.cxx:42: error: 'TXMLDocument' was not declared in this scope
XMLDataInterpreter.cxx:42: error: 'xmldoc' was not declared in this scope
XMLDataInterpreter.cxx:44: error: 'TXMLNode' was not declared in this scope
XMLDataInterpreter.cxx:44: error: 'globalData_node' was not declared in this scope
XMLDataInterpreter.cxx:45: error: 'globalData_elem' was not declared in this scope
XMLDataInterpreter.cxx: At global scope:
XMLDataInterpreter.cxx:60: error: variable or field 'ReadMeasurements' declared void
XMLDataInterpreter.cxx:60: error: 'TXMLNode' was not declared in this scope
XMLDataInterpreter.cxx:60: error: 'channelNode' was not declared in this scope
make: *** [XMLDataInterpreter.o] Error 1
[root@3daf97dd91f3 src]#

it seems to be missing four things pertaining to XML

TDOMParser.h
TXMLNode.h
TXMLDocument.h
TXMLAttr.h

though I thought that with the --enable-xml flag in the configuration of the build, this would have ensured that all libraries having to do with XML would be built.

Is there any guess that what may be missing here from the build?

I would finally note, if it wasn’t clear in the initial description, that the version available on lxplus via LCG does work. So are there directions on how LCG builds root?

Hi,

LCG builds “inject” custom compilers.

--enable-xml enables the XML library - lib libxml2 is found. You can use --fail-on-missing (or whatever the actual spelling was in 5.34) to make configure fail if one of your --enable... cannot be enabled due to missing dependencies. I.e. you’re likely missing libxml2-dev(el).

Cheers, Axel.

Hi,

Alright, thanks! Indeed, I was missing a library. That flag helped point it out and your hint as to what library we needed ( libxml2-devel) was super helpful. The dockerfile and build are now here https://gitlab.cern.ch/meehan/root-builds with some good assistance by @feickert for cleaning up the dockerfile and getting it working with CMake.

Thanks for the support and I hope this repo may be useful for others.

Cheers,
Sam (and Matt)

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.