OS X 10.11 El Capitan and patched ROOT

Table of contents

Apple has recently released a new version of OS X and ALICE is ready to use it.

The installation instructions have been updated accordingly, as well as the prerequisites.

With this new OS X release we are taking the opportunity to be more transparent with respect to the software we release and publish on the Grid: notably, there are some minor patches we apply on top of external software in order to make it work for us.

Instead of recommending users to use a more recent version of ROOT (which, in principle, would require validation), we have backported only the patches that make it work both on the Grid and with El Capitan to a special branch of our custom repository.

The upgrade procedure is very simple and it is explained in detail in the next paragraph.

Upgrade your ALICE installation

First things first: please read carefully the prerequisites for OS X as they have changed a bit.

Go through the following important checklist!

Now, to use the patched ROOT version, you only need to change the root= entry in your tuples from:

AliTuple[1]="root=v5-34-30 geant3=v2-0 ..."

to:

AliTuple[1]="root=alice/v5-34-30 geant3=v2-0 ..."

This is explained here too.

After you have done that, run the automatic installer: the following command will make sure that everything is cleaned up before installing:

bash <(curl -fsSL http://alien.cern.ch/alice-installer) --clean-all --all

System Integrity Protection

El Capitan has a new security enforcing feature called System Integrity Protection (most people call it “rootless mode”) that, among other things, prevents the propagation of some environment variables to programs launched by other programs. Notably, LD_LIBRARY_PATH and DYLD_LIBRARY_PATH are affected.

This is not a problem for the majority of ALICE software, as OS X-compiled programs usually maintain in different ways a full-path reference to the linked library, so that those variables are in most cases not needed anymore.

Problems have been spotted in cases where a library not linked against an executable is loaded at runtime: this is what happens in C applications when you do dlopen() or in ROOT applications with gSystem->Load(). Other problems have been seen in some of our tests where we have applications (or scripts) calling other applications.

In most cases your software can run flawlessly just by applying a workaround to the AliEn installation as described in the updated AliEn installation instructions (works better if Homebrew is installed).

It is possible to turn SIP off completely (extensive description and procedure here), but you must know what you are doing first!

Support

Please address your inquiries to our ALICE JIRA, on the AliRoot project (use the Installation issue type).