Skip to content

compilation failure on emulated ARM for 6.36.04 #20147

@tomeichlersmith

Description

@tomeichlersmith

Check duplicate issues.

  • Checked for duplicates

Description

When attempting to build ROOT 6.36.04 into a container image, the compilation fails only during the arm64 emulation build. The build succeeds for an x86_64 (amd64) build with the same build context and builds for both architectures succeed for ROOT 6.34.04.

The full build logs for building this container image (including all of our other software like Geant4) are here: https://github.com/user-attachments/files/22984721/bump-root-naive-6.36-ci-logs.tar.gz
This tar-archive contains both the amd64 and arm64 builds with the amd64 succeeding and the arm64 build failing.

The arm64 build fails at

#18 113867.4 [ 76%] Built target Tree
#18 113867.7 [ 76%] Generating G__TreePlayer.cxx, ../../lib/TreePlayer.pcm
#18 113873.3 In file included from input_line_10:34:
#18 113873.3 /build/include/TMPWorkerTree.h:16:10: remark: building module 'MultiProc' as '/build/lib/MultiProc.pcm' [-Rmodule-build]
#18 113873.4 #include "TMPWorker.h"
#18 113873.4          ^
#18 113873.4 Error: Building module 'MultiProc' implicitly. If 'MultiProc' requires a 
#18 113873.4 dictionary please specify build dependency: 'G__TreePlayer.cxx' depends on 'MultiProc'.
#18 113873.4 Otherwise, specify '-mByproduct MultiProc' to disable this diagnostic.
#18 113902.7 gmake[2]: *** [tree/treeplayer/CMakeFiles/G__TreePlayer.dir/build.make:153: tree/treeplayer/G__TreePlayer.cxx] Error 1
#18 113902.7 gmake[1]: *** [CMakeFiles/Makefile2:41050: tree/treeplayer/CMakeFiles/G__TreePlayer.dir/all] Error 2
#18 113902.8 gmake: *** [Makefile:156: all] Error 2
#18 ERROR: process "/bin/sh -c mkdir src &&    ${__wget} [https://root.cern/download/root_v${ROOT_VERSION}.source.tar.gz](https://root.cern/download/root_v$%7BROOT_VERSION%7D.source.tar.gz) |     ${__untar} &&    cmake       -DCMAKE_BUILD_TYPE=Release       -DCMAKE_CXX_STANDARD=20       -DCMAKE_INSTALL_PREFIX=${__prefix}       -DCMAKE_INSTALL_LIBDIR=lib       -Dgnuinstall=ON       -Dgminimal=ON       -Dasimage=ON       -Dgeom=ON       -Dgdml=ON       -Dopengl=ON       -Dpyroot=ON       -Dxrootd=OFF       -Dmathmore=ON       -Dpythia8=ON       -B build       -S src     && cmake --build build --target install -j$NPROC &&    rm -rf build src &&    ldconfig" did not complete successfully: exit code: 2
------
 > [11/29] RUN mkdir src &&    wget -q -O - https://root.cern/download/root_v6.36.04.source.tar.gz |     tar -xz --strip-components=1 --directory src &&    cmake       -DCMAKE_BUILD_TYPE=Release       -DCMAKE_CXX_STANDARD=20       -DCMAKE_INSTALL_PREFIX=/usr/local       -DCMAKE_INSTALL_LIBDIR=lib       -Dgnuinstall=ON       -Dgminimal=ON       -Dasimage=ON       -Dgeom=ON       -Dgdml=ON       -Dopengl=ON       -Dpyroot=ON       -Dxrootd=OFF       -Dmathmore=ON       -Dpythia8=ON       -B build       -S src     && cmake --build build --target install -j1 &&    rm -rf build src &&    ldconfig:
input_line_10:34:
113873.3 /build/include/TMPWorkerTree.h:16:10: remark: building module 'MultiProc' as '/build/lib/MultiProc.pcm' [-Rmodule-build]
113873.4 #include "TMPWorker.h"
113873.4          ^
113873.4 Error: Building module 'MultiProc' implicitly. If 'MultiProc' requires a 
113873.4 dictionary please specify build dependency: 'G__TreePlayer.cxx' depends on 'MultiProc'.
113873.4 Otherwise, specify '-mByproduct MultiProc' to disable this diagnostic.
113902.7 gmake[2]: *** [tree/treeplayer/CMakeFiles/G__TreePlayer.dir/build.make:153: tree/treeplayer/G__TreePlayer.cxx] Error 1
113902.7 gmake[1]: *** [CMakeFiles/Makefile2:41050: tree/treeplayer/CMakeFiles/G__TreePlayer.dir/all] Error 2
113902.8 gmake: *** [Makefile:156: all] Error 2

Reproducer

The repository where we house our development environment's build context is LDMX-Software/dev-build-context. The Dockerfile has a lot of other software that is "heavy" so I would suggest removing other RUN commands from that Dockerfile if you want to speed up the build. (We do try to have ROOT be the first "big" build though, so if you are just replicating the error we observed in the GitHub build you can start it out-of-the-box.)

ROOT version

  • 6.36.04
  • linuxarm64gcc (guess)

Installation method

build from source

Operating system

Linux (Ubuntu 24.04 Container Image)

Additional context

The relevant lines of the Dockerfile are

# see repo for full Dockerfile
ENV ROOT_VERSION="6.36.04"
LABEL root.version=${ROOT_VERSION}
RUN mkdir src &&\
    ${__wget} https://root.cern/download/root_v${ROOT_VERSION}.source.tar.gz |\
     ${__untar} &&\
    cmake \
      -DCMAKE_BUILD_TYPE=Release \
      -DCMAKE_CXX_STANDARD=20 \
      -DCMAKE_INSTALL_PREFIX=${__prefix} \
      -DCMAKE_INSTALL_LIBDIR=lib \
      -Dgnuinstall=ON \
      -Dgminimal=ON \
      -Dasimage=ON \
      -Dgeom=ON \
      -Dgdml=ON \
      -Dopengl=ON \
      -Dpyroot=ON \
      -Dxrootd=OFF \
      -Dmathmore=ON \   
      -Dpythia8=ON \    
      -B build \
      -S src \
    && cmake --build build --target install -j$NPROC &&\
    rm -rf build src &&\
    ldconfig
ENV ROOTSYS=${__prefix}
# first instance of PYTHONPATH, so no appending
ENV PYTHONPATH=${ROOTSYS}/lib
ENV CLING_STANDARD_PCH=none

We are building these images using a GitHub runner that emulates the arm64 architecture. I am very interested to see if this problem is present on non-emulated arm64 machines which I do not have access to myself at present.

Metadata

Metadata

Assignees

Type

No type

Projects

Status

No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions