Compiling ROOT 6.24 for ARM (Zynq Ultrascale+)

Thanks @mathieubenoit ! I’ll try to play with that and report back here. (sorry for the basic questions, but as I said I’m a Windows user…)

Hi,
is the build toolchain (specifically compiler and standard library) coming from devtoolset?
ROOT has a bunch of issues with devtoolset, see e.g. Devtoolset/gcc-toolset compatibility

1 Like

slightly off-topic, but I’d be interested to know if groot were to run on that SoC.
it should be as simple as:

$> curl -O -L https://go-hep.org/dist/latest/root-ls-linux_arm64.exe
$> chmod +x ./root-ls-linux_arm64.exe
$> ./root-ls-linux_arm64.exe /path/to/some/file.root

Salut @sbinet , I will give it a try !

So I tried to change an option in root_git.bb and here is what I get now:

[caribou@bbcc7x64 build]$ bitbake root
NOTE: Started PRServer with DBfile: /home/caribou/poky/build/cache/prserv.sqlite3, IP: 127.0.0.1, PORT: 45118, PID: 155
WARNING: Host distribution "centos-8" has not been validated with this version of the build system; you may possibly experience unexpected failures. It is recommended that you use a tested distribution.
Loading cache: 100% |################################################################################################| Time: 0:00:00
Loaded 3400 entries from dependency cache.
Parsing recipes: 100% |##############################################################################################| Time: 0:00:00
Parsing of 2276 .bb files complete (2272 cached, 4 parsed). 3404 targets, 135 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies

Build Configuration:
BB_VERSION           = "1.44.0"
BUILD_SYS            = "x86_64-linux"
NATIVELSBSTRING      = "universal"
TARGET_SYS           = "arm-poky-linux-gnueabi"
MACHINE              = "caribou-zynq7"
DISTRO               = "poky"
DISTRO_VERSION       = "3.0.4"
TUNE_FEATURES        = "arm vfp cortexa9 neon thumb callconvention-hard"
TARGET_FPU           = "hard"
meta
meta-poky
meta-yocto-bsp       = "zeus:d88d62c20d7d8da85f02edb170dae0280624ad7e"
meta-xilinx-bsp
meta-xilinx-contrib  = "zeus:b82343ac5f013926839627cee9dae7106c008ae9"
meta-oe
meta-python
meta-networking      = "zeus:2b5dd1eb81cd08bc065bc76125f2856e9383e98b"
meta-caribou         = "ROOT-compilation-test:1ed173c77a11a41b04ed8362722b7edc06f50984"

Initialising tasks: 100% |###########################################################################################| Time: 0:00:01
Sstate summary: Wanted 561 Found 33 Missed 528 Current 0 (5% match, 0% complete)
NOTE: Executing Tasks
WARNING: The free space of /home/caribou/poky/build/tmp (rootfs) is running low (0.536GB left)
ERROR: No new tasks can be executed since the disk space monitor action is "STOPTASKS"!
WARNING: The free space of /downloads (/dev/vda1) is running low (0.536GB left)
ERROR: No new tasks can be executed since the disk space monitor action is "STOPTASKS"!
WARNING: The free space of /sstate-cache (/dev/vda1) is running low (0.536GB left)
ERROR: No new tasks can be executed since the disk space monitor action is "STOPTASKS"!
NOTE: Tasks Summary: Attempted 0 tasks of which 0 didn't need to be rerun and all succeeded.

Summary: There were 4 WARNING messages shown.
Summary: There were 3 ERROR messages shown, returning a non-zero exit code.
[caribou@bbcc7x64 build]$

I tried to delete everything in the /home/caribou/poky/build/tmp directory, but no change

Seems to work fine !

root@ST1_ME-XU1-6CG-1E-D11E:~# chmod +x ./root-ls-linux_arm64.exe 
root@ST1_ME-XU1-6CG-1E-D11E:~# ./root-ls-linux_arm64.exe 
error: you need to give a ROOT file

Usage: root-ls [options] file1.root [file2.root [...]]

ex:
 $> root-ls ./testdata/graphs.root
 $> root-ls -t -sinfos ./testdata/graphs.root

options:
  -cpu-profile string
    	path to CPU profile output file
  -sinfos
    	print StreamerInfos
  -t	print Tree(s) (recursively)
root@ST1_ME-XU1-6CG-1E-D11E:~# ls
pulser_results.root  root-ls-linux_arm64.exe
root@ST1_ME-XU1-6CG-1E-D11E:~# ./root-ls-linux_arm64.exe pulser_results.root 
=== [pulser_results.root] ===
version: 62401
TCanvas c1_n2   c1_n2   (cycle=1)
TCanvas c1_n3   c1_n3   (cycle=1)
TCanvas c1_n4   c1_n4   (cycle=1)

Hi Bertrand, it seems to be an issue of docker itself running out of space. It will not increase the space beyond a certain limit as to not kill your machine by accident. You can try pruning old image that are not used :

docker system prune

also,

There should be also a setting in the docker runner where you can increase the allowable size for docker. I am not sure where in the windows version, it should be called disk images max size in Docker Settings.

OK, thanks, that was my VM (CentOS) on which I run the docker image which was a bit low on disk space…

Latest news, after creating a dedicated VM, here is what I got when trying to build with bitbake root:

exit 1 from 'cmake -G 'Ninja' -DCMAKE_MAKE_PROGRAM=ninja $oecmake_sitefile /home/caribou/poky/build/tmp/work/cortexa9t2hf-neon-poky-linux-gnueabi/root/AUTOINC+069afcc949-r0/git -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_INSTALL_BINDIR:PATH=bin -DCMAKE_INSTALL_SBINDIR:PATH=sbin -DCMAKE_INSTALL_LIBEXECDIR:PATH=libexec -DCMAKE_INSTALL_SYSCONFDIR:PATH=/etc -DCMAKE_INSTALL_SHAREDSTATEDIR:PATH=../com -DCMAKE_INSTALL_LOCALSTATEDIR:PATH=/var -DCMAKE_INSTALL_LIBDIR:PATH=lib -DCMAKE_INSTALL_INCLUDEDIR:PATH=include -DCMAKE_INSTALL_DATAROOTDIR:PATH=share -DCMAKE_INSTALL_SO_NO_EXE=0 -DCMAKE_TOOLCHAIN_FILE=/home/caribou/poky/build/tmp/work/cortexa9t2hf-neon-poky-linux-gnueabi/root/AUTOINC+069afcc949-r0/toolchain.cmake -DCMAKE_NO_SYSTEM_FROM_IMPORTED=1 -Drootfit=ON -Dminuit2=ON -Dssl=ON -Dbuiltin_freetype=OFF -Dbuiltin_llvm=ON -Dbuiltin_clang=ON -Dbuiltin_cling=ON -DCMAKE_CXX_STANDARD=14 -DCMAKE_CXX_STANDARD_REQUIRED=ON -DPYTHON_EXECUTABLE=python3 -Wno-dev'
ERROR: Task (/home/caribou/poky/meta-caribou/recipes-caribou/root/root_git.bb:do_configure) failed with exit code '1'

And here is the bottom part of /CMakeError.log:

Run Build Command(s):ninja cmTC_d2873 && [1/2] Building C object CMakeFiles/cmTC_d2873.dir/CheckSymbolExists.c.o
FAILED: CMakeFiles/cmTC_d2873.dir/CheckSymbolExists.c.o
/home/caribou/poky/build/tmp/work/cortexa9t2hf-neon-poky-linux-gnueabi/root/AUTOINC+069afcc949-r0/recipe-sysroot-native/usr/bin/arm-poky-linux-gnueabi/arm-poky-linu
x-gnueabi-gcc -D_GNU_SOURCE  -mthumb -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a9 -fstack-protector-strong  -D_FORTIFY_SOURCE=2   --sysroot=/home/caribou/poky/build/
tmp/work/cortexa9t2hf-neon-poky-linux-gnueabi/root/AUTOINC+069afcc949-r0/recipe-sysroot  -O2 -pipe -g -feliminate-unused-debug-types -fmacro-prefix-map=/home/caribo
u/poky/build/tmp/work/cortexa9t2hf-neon-poky-linux-gnueabi/root/AUTOINC+069afcc949-r0=/usr/src/debug/root/AUTOINC+069afcc949-r0                      -fdebug-prefix-
map=/home/caribou/poky/build/tmp/work/cortexa9t2hf-neon-poky-linux-gnueabi/root/AUTOINC+069afcc949-r0=/usr/src/debug/root/AUTOINC+069afcc949-r0
 -fdebug-prefix-map=/home/caribou/poky/build/tmp/work/cortexa9t2hf-neon-poky-linux-gnueabi/root/AUTOINC+069afcc949-r0/recipe-sysroot=                      -fdebug-p
refix-map=/home/caribou/poky/build/tmp/work/cortexa9t2hf-neon-poky-linux-gnueabi/root/AUTOINC+069afcc949-r0/recipe-sysroot-native=   -mthumb -mfpu=neon -mfloat-abi=
hard -mcpu=cortex-a9 -fstack-protector-strong  -D_FORTIFY_SOURCE=2   --sysroot=/home/caribou/poky/build/tmp/work/cortexa9t2hf-neon-poky-linux-gnueabi/root/AUTOINC+0
69afcc949-r0/recipe-sysroot -fdiagnostics-color=always -Wno-implicit-fallthrough -pipe -Wall -W -pthread -fPIC -Werror=date-time -w -fdiagnostics-color -ffunction-s
ections -fdata-sections -o CMakeFiles/cmTC_d2873.dir/CheckSymbolExists.c.o   -c CheckSymbolExists.c
CheckSymbolExists.c:2:10: fatal error: os/signpost.h: No such file or directory
    2 | #include <os/signpost.h>
      |          ^~~~~~~~~~~~~~~
compilation terminated.
ninja: build stopped: subcommand failed.


File /home/caribou/poky/build/tmp/work/cortexa9t2hf-neon-poky-linux-gnueabi/root/AUTOINC+069afcc949-r0/build/CMakeFiles/CMakeTmp/CheckSymbolExists.c:
/* */
#include <os/signpost.h>

int main(int argc, char** argv)
{
  (void)argv;
#ifndef os_signpost_interval_begin
  return ((int*)(&os_signpost_interval_begin))[argc];
#else
  (void)argc;
  return 0;
#endif
}

(if it’s the relevant part…)

And the only information I could find is: Fail when Using RISCV gcc to build LLVM · Issue #823 · riscv/riscv-gnu-toolchain · GitHub

cool.
(I wasn’t particularly worried as I do use such a thing -kind of: an Altera SocKit DE-10- for a non-LHC experiment where the whole DAQ is in Go, translating an experiment-cooked binary format to LCIO and/or ROOT, still in Go.)

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