Skip to content

Compilation failure with Ubuntu 26.04 #22300

Closed

Description

@TomasDado

Check duplicate issues.

  • Checked for duplicates

Description

Hello,

I just updated my machine to Ubuntu 26.04 and I encountered a compilation error.

I had to install manually:

sudo apt install libzmq3-dev libpcre2-dev

Note this is different than the versions of these two packages before.

With these two packages installed and using:

cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -Duse_gsl_cblas=ON -Dbuiltin_gsl=ON -Dbuiltin_vdt=ON -Dbuiltin_tbb=OFF -Dxrootd=OFF -Droofit_multiprocess=ON -Ddavix=OFF -Dmathmore=ON -Dbuiltin_lz4=ON -Dbuiltin_gl2ps=ON -Dbuiltin_xxhash=ON -Dbuiltin_tiff=ON -DCMAKE_INSTALL_PREFIX=../root_install/ ../root_src/

The compilation stops with

[ 15%] Linking CXX shared library ../../lib/libRooFitZMQ.so
/usr/bin/x86_64-linux-gnu-ld.bfd: CMakeFiles/RooFitZMQ.dir/src/ppoll.cpp.o: in function `ZMQ::ppoll(zmq_pollitem_t*, unsigned long, long, __sigset_t const*)':
/home/tomas/ROOT/root_src/roofit/roofitZMQ/src/ppoll.cpp:21:(.text+0x9): undefined reference to `zmq_ppoll'
collect2: error: ld returned 1 exit status
gmake[2]: *** [roofit/roofitZMQ/CMakeFiles/RooFitZMQ.dir/build.make:151: lib/libRooFitZMQ.so] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:61879: roofit/roofitZMQ/CMakeFiles/RooFitZMQ.dir/all] Error 2
gmake[1]: *** Waiting for unfinished jobs....

Activity

  1. TomasDado commented on May 15, 2026

    @TomasDado
    ContributorAuthor

    Just to add that removing -Droofit_multiprocess=ON fixes the compilation

  2. ferdymercury commented on May 15, 2026

    @ferdymercury
    Collaborator

    Release notes specifying these changes are here #21596 but not yet merged.

    Wrt ZMQ, @guitargeek might know better if there is a missing dependency or if it's an incremental build issue or sth like that.

    Btw if you apt install libtiff-dev libxxhash-dev libgl2ps-dev liblz4-dev you can avoid additional builtins.

  3. TomasDado commented on May 15, 2026

    @TomasDado
    ContributorAuthor

    Thanks for the suggestions. I typed this too fast in the morning. The issue is that Ubuntu requires a new version of libzmq libzmq3 and it seems that the functions/arguments changed in this fucntion comapred to the previous versions. So to me it seems like the RooFit part for roofit_multiprocess needs an update if the new ZMQ is to be used (required by Ubuntu 26.04)

  4. ferdymercury commented on May 15, 2026

    @ferdymercury
    Collaborator

    Probably 8446def has to be reverted
    or find_package needs to specify 4.3.5 as min version
    fyi @egpbos

  5. guitargeek commented on May 18, 2026

    @guitargeek
    Contributor

    Thanks for the report. The compilation is failing because roofit_multiprocess requires ZeroMQ with the draft API enabled, which is not enabled in the Ubuntu package. I'll address this issue by updating the CMake code to give a clearer error.

    By the way, the the reason why you see this now is because the builtin_zeromq and builtin_cppzmq options were removed. This was done to reduce ROOTs vulnerability surface related to low-level builtin dependencies.

    The drawback is that ZeroMQ with the draft API is not available everywhere, as you are seeing now. This is an acceptable drawback given that roofit_multiprocess is an experimental performance optimization that has so far only proven beneficial in "clinical trials" (e.g. the benchmark Higgs analysis it was designed for), so it cannot be recommended to the general user. Also, the R&D line of gradient parallelization has been superseded by the Automatic Differentiation (AD) R&D effort, which shows even greater gradient speedups with better scalability and only using one core. The other side of the new RooFit multiprocessing, the parallelization across likelihood components, also has yet to be proven to be more performant/scalable than the old NumCPU() implementation, which didn't need the ZeroMQ dependency.

    Anyway, we'll keep roofit_multiprocess around because the underlying multiprocessing abstraction might be useful later, but for now I see the increased difficulty in building ROOT with it as a positive, because it deters users from using unstable features where we don't have the bandwidth for support!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions