6.26.04 build error in Debian Bullseye

Attempting to build ROOT 6.26.04 in a Debian Bullseye pbuilder (sandbox build environment), with only the required packages installed as build dependencies, and cmake run with a minimal set of options (-Dgnuninstall=ON -Dclad=OFF) and parallelism -j 8, I’m getting

[ 81%] Generating G__NetxNG.cxx, ../../lib/NetxNG.pcm                                                                                                                                                                                                                                     
[ 81%] Generating G__RootAuth.cxx, ../../lib/RootAuth.pcm                                                                                                                                                                                                                                 
[ 81%] Generating G__SQLIO.cxx, ../../lib/SQLIO.pcm                                                                                                                                                                                                                                       
[ 81%] Generating G__MultiProc.cxx, ../../lib/MultiProc.pcm                                                                                                                                                                                                                               
/bin/sh: 1: cannot create -I/build/root-cds-6.26.4+sg/net/netxng/inc: Directory nonexistent                                                                                                                                                                                               
make[4]: *** [net/netxng/CMakeFiles/G__NetxNG.dir/build.make:95: net/netxng/G__NetxNG.cxx] Error 2                                                                                                                                                                                        
make[4]: Leaving directory '/build/root-cds-6.26.4+sg/.build/.python3'                                                                                                                                                                                                                    
make[3]: *** [CMakeFiles/Makefile2:30329: net/netxng/CMakeFiles/G__NetxNG.dir/all] Error 2                                                                                                                                                                                                
make[3]: *** Waiting for unfinished jobs....                                                                                                                                                                                                                                              

The directory /build/root-cds-6.26.4+sg/net/netxng/inc exists; the -I puzzles me though.
Any suggestions where to look next? Thanks!

ROOT Version: 6.26.04
Platform: Debian Bullseye amd64
Compiler: gcc version 10.2.1 20210110 (Debian 10.2.1-6)


Hi @steffen.aei ,

and welcome to the ROOT forum! Shot in the dark, can you try building in a directory the path of which does not contain a +?

If that does not help, can you try building with make VERBOSE=1 or equivalent and post the full compilation log? (VERBOSE=1 tells make to display all commands it runs).

Cheers,
Enrico

I started with (1) (replace the + in the version with a .) which miraculously succeeded - although my last attempt (on version 6.20.04) worked despite a + in the tree.
There was no need for (2) (make VERBOSE=1).

IMHO + somewhere in the path shouldn’t be a special character affecting the build (and apparently only in the NetxGN part? - what’s so special about that one that I could get to 81%?).

Thanks so far - I’ll have to revisit the versioning scheme that was the cause for the + sign in the tree…

Hi @steffen.aei ,

I agree that a + in the path should not be a problem. Unfortunately we have seen before that some parts of the build system, sometimes while building ROOT dependencies, special characters like that confuse some part of the logic (e.g. because they are picked up as parts of a regex). Feel free to open a GitHub issue about this.

Here is a similar problem with paths that contain @ :upside_down_face:

CC: @bellenot

I’m afraid this time the underlying issue is completely different (no explicit sed invocations anymore).
Here cmake features seem to be the culprit.
Not being a cmake guy, I cannot see what would be wrong with target_include_directories(G__NetxNG SYSTEM PRIVATE ${XROOTD_INCLUDE_DIRS}), while target_include_directories(NetxNG SYSTEM PRIVATE ${XROOTD_INCLUDE_DIRS}) seems to be benign (or just had no chance to hit?).

Hi,

Yes I did not mean to say that this is the same issue, just that unfortunately such issues sometimes pop up.

I’ll leave it to our build system expert @bellenot to comment on possible fixes on the ROOT side.

Cheers,
Enrico

I’m not an expert, but I’ll investigate nevertheless

FYI, a pull request addressing this issue has just been created: Fix generation of G__NetxNG.cxx in paths with special characters by bellenot · Pull Request #10900 · root-project/root · GitHub

This is now fixed in the master and v6-26-00-patches branches

2 Likes