Binary installation of ROOT with MacOS 11.1

Hello,
the binary I have downloaded last November for MacOS 11.0 worked fine. Now I updated my laptop to MacOS 11.1 and the above version (macOS 11.0 x86_64 Xcode 12) doesn’t work any more. Do you foresee to produce a binary for MacOS 11.1 soon?
Many thanks,
Elemer

Hello again,
waiting for reply, my laptop is now upgraded to MacOS 11.2. Of course, my previous installation MacOS 11.0 doesn’t work on it. I think I need MacOS 11.2 binary to download, since the error message when I try to run ROOT reads as follows:

elemer@admins-macbook-pro ~ % root -l

ERROR in cling::CIFactory::createCI(): cannot extract standard library include paths!

Invoking:

LC_ALL=C /Library/Developer/CommandLineTools/usr/bin/c++ -O3 -DNDEBUG -xc++ -E -v /dev/null 2>&1 | sed -n -e '/^.include/,${' -e '/^ \/.*++/p' -e '}'

Results was:

With exit code 0

warning: no such sysroot directory: '/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk'

*** Break *** segmentation violation

[/usr/lib/system/libsystem_platform.dylib] _sigtramp (no debug info)

[<unknown binary>] (no debug info)

[/Users/elemer/Downloads/root/lib/libCling.6.22.06.so] (anonymous namespace)::RedirectingFileSystemParser::uniqueOverlayTree((anonymous namespace)::RedirectingFileSystem*, (anonymous namespace)::Entry*, (anonymous namespace)::Entry*) (no debug info)

[/Users/elemer/Downloads/root/lib/libCling.6.22.06.so] (anonymous namespace)::RedirectingFileSystem::create(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer> >, void (*)(llvm::SMDiagnostic const&, void*), llvm::StringRef, void*, llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>) (no debug info)

[/Users/elemer/Downloads/root/lib/libCling.6.22.06.so] clang::vfs::getVFSFromYAML(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer> >, void (*)(llvm::SMDiagnostic const&, void*), llvm::StringRef, void*, llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>) (no debug info)

[/Users/elemer/Downloads/root/lib/libCling.6.22.06.so] (anonymous namespace)::createCIImpl(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer> >, cling::CompilerOptions const&, char const*, std::__1::unique_ptr<clang::ASTConsumer, std::__1::default_delete<clang::ASTConsumer> >, std::__1::vector<std::__1::shared_ptr<clang::ModuleFileExtension>, std::__1::allocator<std::__1::shared_ptr<clang::ModuleFileExtension> > > const&, bool, bool) (no debug info)

[/Users/elemer/Downloads/root/lib/libCling.6.22.06.so] cling::CIFactory::createCI(llvm::StringRef, cling::InvocationOptions const&, char const*, std::__1::unique_ptr<clang::ASTConsumer, std::__1::default_delete<clang::ASTConsumer> >, std::__1::vector<std::__1::shared_ptr<clang::ModuleFileExtension>, std::__1::allocator<std::__1::shared_ptr<clang::ModuleFileExtension> > > const&) (no debug info)

[/Users/elemer/Downloads/root/lib/libCling.6.22.06.so] cling::IncrementalParser::IncrementalParser(cling::Interpreter*, char const*, std::__1::vector<std::__1::shared_ptr<clang::ModuleFileExtension>, std::__1::allocator<std::__1::shared_ptr<clang::ModuleFileExtension> > > const&) (no debug info)

[/Users/elemer/Downloads/root/lib/libCling.6.22.06.so] cling::Interpreter::Interpreter(int, char const* const*, char const*, std::__1::vector<std::__1::shared_ptr<clang::ModuleFileExtension>, std::__1::allocator<std::__1::shared_ptr<clang::ModuleFileExtension> > > const&, bool, cling::Interpreter const*) (no debug info)

[/Users/elemer/Downloads/root/lib/libCling.6.22.06.so] TCling::TCling(char const*, char const*, char const* const*) (no debug info)

[/Users/elemer/Downloads/root/lib/libCling.6.22.06.so] CreateInterpreter (no debug info)

[/Users/elemer/Downloads/root/lib/libCore.6.22.06.so] TROOT::InitInterpreter() (no debug info)

[/Users/elemer/Downloads/root/lib/libCore.6.22.06.so] ROOT::Internal::GetROOT2() (no debug info)

[/Users/elemer/Downloads/root/lib/libCore.6.22.06.so] TApplication::TApplication(char const*, int*, char**, void*, int) (no debug info)

[/Users/elemer/Downloads/root/lib/libRint.6.22.06.so] TRint::TRint(char const*, int*, char**, void*, int, bool) (no debug info)

[/Users/elemer/Downloads/root/bin/root.exe] main (no debug info)

[/usr/lib/system/libdyld.dylib] start (no debug info)

[<unknown binary>] (no debug info)

Perhaps you can tell me how to remedy this or you will provide us with a binary working with MacOS 11.2.

Thanks,

Elemer

Hi,
I think the solution is the same as here: Downloading binary for macOS Big Sur version 11.0.1 - #7 by Axel , you probably need a xcode-select --install to update/reinstall the compiler toolchain after the upgrade.

Cheers,
Enrico

Hi,
I have already on my laptop ROOT macOS Big Sur version 11.0, downloaded previously, i.e. I have root_v6.22.06.macos-11.0-x86_64-clang120.tar.gz in my Downloads directory. Should I delete it and download it again? I don’t see any more recent binary version for macOS on Release 62206 - ROOT.
In my Downloads I have also its unzipped version and thus also the file Downloads/root/bin/thisroot.sh. I have verified that in my .login file there is a command: source Downloads/root/bin/thisroot.sh which is activated issuing the command source .login when starting in a fresh terminal.
I have also launched again xcode-select --install on my upgraded laptop and installed the software.
Nevertheless, the command root -l results in a crash, with the warning:
no such sysroot directory: ‘/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk’
How can I get this missing directory: by downloading again the existing macOS Big Sur version 11.01?
I have verified, I have Xcode 12.4.

Thanks,

Elemer

Ok, what does ‘ls /Library/Developer/CommandLineTools/SDKs print?

No no, you should get the same result if you download the same binary release. My guess is that ROOT is looking for a certain version of the SDK, and you have another.

@Axel did MacOS 11.2 change the name of the SDK?

Cheers,
Enrico

Hi Enrico,
it prints:
elemer@admins-macbook-pro Downloads % ls /Library/Developer/CommandLineTools/SDKs

MacOSX.sdk MacOSX10.15.sdk MacOSX11.1.sdk

BTW I have downloaded in the meantime again the same binary and indeed you are right, it gives the same error.
What is SDK?
Thanks,
Elemer

Uhm alright, so ROOT looks for MacOSX11.0.sdk but you only have MacOSX11.1.sdk. I don’t think the pre-compiled binaries currently available will work for you (but I’m not a mac user, let’s see if Axel has a better idea).

In the meanwhile, to unblock you: you can install ROOT via conda, macports or homebrew, as mentioned at https://root.cern/install . Those methods should work.

I think e.g. this page provides a good explanation.

Cheers,
Enrico

Hi Enrico,
many thanks for all these clarifications. Indeed, I think a ROOT binary compiled with macOS 11.2 will do for me, since this will automatically use the corresponding correct SDK on the macOS 11.2 platform. So if this won’t be done in a too far future by the ROOT Team (Axel may tell me) then I prefer to wait for it. Otherwise I’ll try to install the source with the help of the ROOT documentations.
Thanks again your help, it was very useful.
Best regards,
Elemer

No problem. Compiling ROOT from source is always an option, but should really be your last resort, I would recommend to try conda or homebrew first, getting a working ROOT installation with those package managers typically just requires running a single installation command.

Cheers,
Enrico

1 Like

Yes I’m aware of this, super annoying - we’ll get it fixed. As Wile_E points out, a symlink is a workaround. We’re tracking this at cling depends on exact macOS SDK headers · Issue #7021 · root-project/root · GitHub

1 Like

Excellent idea, the workaround: sudo ln -s MacOSX.sdk MacOSX11.0.sdk worked for me fine!
Many thanks,

Elemer