Mac OS X installation issues
- Note that DYLD_LIBRARY_PATH is used instead of LD_LIBRARY_PATH on macOS!
- Make sure your macOS is up to date. Using version 10.12 or newer is recommended.
- Avoid mixing tools such as compilers and the Python installation between system installations and versions from Fink, MacPorts, etc. You can either run a pure-system setup, in which case place
/optat the end of your path variables; or run pure MacPorts/HomeBrew/etc. and exclude the system packages. The pure-system way is probably easier. Mixing and matching is hard, and it's easy to end up inconsistent. In particular, if you have multiple Python installations (say, the system Python and one from HomeBrew) make sure that the PYTYHONPATH is set to point consistently to only one installation
- The system tools on macOS have for many years now been based on Clang and LLVM instead of GCC. These work fine for Rivet. Some people prefer a completely separate GCC setup - please let us know if you have success or otherwise with that. For the moment, most of our experience on macOS is with Clang.
- There is an issue on recent versions of macOS related to System Integrity Protection (SIP) when building the Rivet docs. SIP is a recent mac security feature that is supposed to protect the system from malicious code. The Rivet docs are built by calling a python script with an environment setup so that the Rivet libs you just built are available. However, Python in macOS 10.12 and later is a protected process, and for reasons we don't fully understand, the recursive calls to it do not allow the PYTHONPATH to be passed on. Modifying PYTHONPATH does change the behaviour of Python, and this is presumably the reason it is protected This means that the build script cannot see the Rivet libs, and fails when it tries to produce the documentation for the analyses. The issue is not 100% reproducible, and some Mac users have reported success in building the docs regardless. Some users, particularly members of the ALICE collaboration, may find that their SIP is (perhaps unwisely) turned off. This can be tested by the command
Some older hints that are no longer relevant for recent macOS versions are below
- When building with Mavericks system tools, there is an inconsistency between the Apple builds of the clang compilers and Python. You need to work around this by setting C compiler flags before building:
export CFLAGS=-Qunused-arguments export CPPFLAGS=-Qunused-arguments
- Also, you may want to explicitly force use of the clang compilers, although the OS X system "gcc" is itself just a copy of clang these days:
export CC=clang export CXX=clang++