-
-
Notifications
You must be signed in to change notification settings - Fork 12.7k
ERROR: ROOT not correctly built after the sequoia 15.4 update #217574
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
ROOT is tightly coupled with Xcode/LLVM version so it is likely to break when Apple changes these. This is particularly so in new Xcode 16.3 where Apple upgraded their LLVM from 17 to 19. This will likely not be a quick fix as the CI runners need to be upgraded first, which requires a manual maintenance window. You could try the upstream's binaries, but I would expect a similar issue as their CI isn't on macOS 15.4 / Xcode 16.3. Only workaround for now would be source building but this will first need a workaround for CMake 4.0. |
Just tried source build and looks like upstream will need to update for newer Xcode. Specifically need support in Cling:
i.e. https://github.com/root-project/cling/blob/master/include/cling/std_darwin.modulemap#L538-L542
|
Also tried to build and older version of root, V 6.32.02, from source, after installing cmake V3.31.6 from source. Best regards |
Upstream PR to fix build in 6.34.x is I did backport a couple of the commits in #218169 and applied some workarounds to get source build working for me. May need more backports to fix other issues. Ideally there will be a 6.34.07 with all the fixes soon. You still won't be able to use a bottle until CI is updated. The modulemap is selected at compile time so it needs to be compiled with Xcode 16.3 to work on macOS 15.4 |
hi from ROOT. Yes, we'll provide a 6.34.08 soon, as well as a 6.32.12. Thanks for the work you did to test our patches in advance. |
Hi, a followup on this. I have installed ROOT 6.34.08 via homebrew (thanks for picking up the patch release so quickly!). I still see the following issue
I have been debugging the situation, and I have an hypothesis that needs testing. ROOT 6.34.08 is built to work with the latest SDK (16.3) for MacOS Sequoia (15.4). Due to the tight dependency on the MacOS SDK, the modulemap created in the ROOT build works for the SDK version it was built for. Now, if I build ROOT manually on my machine, I get a
This filename means that the build of ROOT produced by homebrew hit this line in CMake , which in turn suggests that the AppleClang version used to build ROOT was less than the AppleClang version available on the latest MacOS+SDK version:
So, my hypothesis is that the MacOS machine used in the homebrew infra to build ROOT has a different MacOS/SDK/AppleClang version than the one of many of our users. I have never built a homebrew formula myself, but I could try it if you give me pointers to instructions. My guess is if I built the homebrew formula on my machine with the latest SDK, I would get the right modulemap from the build. In any case, I wonder if there are ways in homebrew to specify which MacOS SDK version a specific formula build is targeting, this could be used in the future if available |
Our CI doesn't have Xcode 16.4 (which has the macOS 15.4 SDK) and won't for a few days (target was next Monday, but I can try expedite it if I find time). We usually update Xcode a week or two after release rather than immediately, to allow regressions to be addressed by projects (e.g. in this case, for ROOT 6.34.08 to be released). Though even then we don't make any requirements on what end users use. Some might have the macOS 15.2 SDK installed, some might have the macOS 15.4 SDK installed. So I'm guessing how we build it will break one or the other party. Though we generally lean on supporting the latest of course. |
Dear @Bo98 , Thanks for your reply! Just to be clear about the different versions I'm talking about, here is an excerpt from my system
So indeed it is MacOS SDK version 15.4 and XCode version 16.3(16E140), which are both at the latest version at the time of writing. I see your point and indeed you are right, this is a scenario where unfortunately we cannot make everyone happy (for the moment at least). If the homebrew policy is to lean towards the latest SDK and XCode versions, does it mean there will be a rebuild of the ROOT 6.34.08 formula once the CI will be updated? I'm just trying to understand homebrew workflows as I'm not familiar with them. |
I had downgraded cmake to 3.31.0 (as suggested in the ROOT forum) and then run
I still get an error `🍺 /opt/homebrew/Cellar/pcre/8.45: 205 files, 4.7MB -- Configuring incomplete, errors occurred! READ THIS: https://docs.brew.sh/Troubleshooting These open issues may also help: |
brew gist-logs <formula>
link ORbrew config
ANDbrew doctor
outputVerification
brew doctor
output saysYour system is ready to brew.
and am still able to reproduce my issue.brew update
and am still able to reproduce my issue.brew doctor
and that did not fix my problem.What were you trying to do (and why)?
After yesterday's MacOS upgrade. I brew upgraded all my installed packages and one of the core programming tools I needed to use failed to function properly. I have tried to uninstall and install homebrew entirely but this issue is still not resolved.
What happened (include all command output)?
After all the dependencies are installed, I tried to run root in the command line, and get this error message:
/opt/homebrew/Cellar/root/6.34.06/etc/root/cling/std_darwin.modulemap:540:12: error: header 'experimental/__memory' not found
header "experimental/__memory"
^
input_line_1:1:10: note: submodule of top-level module 'std' implicitly imported here
#include
^
Warning in cling::IncrementalParser::CheckABICompatibility():
Failed to extract C++ standard library version.
Warning in cling::IncrementalParser::CheckABICompatibility():
Possible C++ standard library mismatch, compiled with _LIBCPP_ABI_VERSION '1'
Extraction of runtime standard library version was: ''
input_line_2:1:2: fatal error: module file '/tmp/root-20250327-18543-ll7y48/root-6.34.06/builddir/lib/_mach_port_t.pcm' not found: module file not found
#include <cling/Interpreter/RuntimeUniverse.h>
^
input_line_2:1:2: note: imported by module 'pthread' in '/opt/homebrew/Cellar/root/6.34.06/lib/root/pthread.pcm'
input_line_2:1:2: note: imported by module 'std' in '/opt/homebrew/Cellar/root/6.34.06/lib/root/std.pcm'
input_line_2:1:2: note: imported by module 'Cling_Runtime_Extra' in '/opt/homebrew/Cellar/root/6.34.06/lib/root/Cling_Runtime_Extra.pcm'
input_line_2:1:2: note: imported by module 'Cling_Runtime' in '/opt/homebrew/Cellar/root/6.34.06/lib/root/Cling_Runtime.pcm'
<<< cling interactive line includer >>>: fatal error: module file '/opt/homebrew/Cellar/root/6.34.06/lib/root/std.pcm' is out of date and needs to be rebuilt
<<< cling interactive line includer >>>: note: imported by module 'Darwin' in '/opt/homebrew/Cellar/root/6.34.06/lib/root/Darwin.pcm'
Failed to load module Darwin
[...]
Failed to load module GenVector
Failed to load module Cling_Runtime
Failed to load module RooFitCore
Failed to load module Core
Failed to load module ROOTNTupleUtil
*** Break *** segmentation violation
[/usr/lib/system/libsystem_platform.dylib] _sigtramp (no debug info)
[/opt/homebrew/Cellar/root/6.34.06/lib/root/libCling.so] ROOT::TMetaUtils::TNormalizedCtxtImpl::keepTypedef(cling::LookupHelper const&, char const*, bool) (no debug info)
[/opt/homebrew/Cellar/root/6.34.06/lib/root/libCling.so] ROOT::TMetaUtils::TNormalizedCtxtImpl::TNormalizedCtxtImpl(cling::LookupHelper const&) (no debug info)
[/opt/homebrew/Cellar/root/6.34.06/lib/root/libCling.so] ROOT::TMetaUtils::TNormalizedCtxt::TNormalizedCtxt(cling::LookupHelper const&) (no debug info)
[/opt/homebrew/Cellar/root/6.34.06/lib/root/libCling.so] TCling::TCling(char const*, char const*, char const* const*, void*) (no debug info)
[/opt/homebrew/Cellar/root/6.34.06/lib/root/libCling.so] CreateInterpreter (no debug info)
[/opt/homebrew/Cellar/root/6.34.06/lib/root/libCore.so] TROOT::InitInterpreter() (no debug info)
[/opt/homebrew/Cellar/root/6.34.06/lib/root/libCore.so] ROOT::Internal::GetROOT2() (no debug info)
[/opt/homebrew/Cellar/root/6.34.06/lib/root/libCore.so] TApplication::TApplication(char const*, int*, char**, void*, int) (no debug info)
[/opt/homebrew/Cellar/root/6.34.06/lib/root/libRint.so] TRint::TRint(char const*, int*, char**, void*, int, bool, bool) (no debug info)
[/opt/homebrew/Cellar/root/6.34.06/bin/root.exe] main (no debug info)
[/usr/lib/dyld] start (no debug info)
What did you expect to happen?
I expected a normal interface from the ROOT software.
Step-by-step reproduction instructions (by running
brew
commands)The text was updated successfully, but these errors were encountered: