Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Troubleshooting Homebrew binaries on macOS (Thanks Paul Adam)
[simgrid.git] / docs / source / Installing_SimGrid.rst
index 55bfd0a..39cc872 100644 (file)
@@ -43,6 +43,17 @@ email.
 .. _simgrid AUR package: https://aur.archlinux.org/packages/simgrid/
 .. _AUR official documentation: https://wiki.archlinux.org/title/Arch_User_Repository
 
+Binaries from macOS
+^^^^^^^^^^^^^^^^^^^
+
+SimGrid can be found in the Homebrew package manager. Troubleshooting:
+
+warning: dylib (libsimgrid.dylib) was built for newer macOS version (14.0) than being linked (13.3)
+  This was reported with the SimGrid version from Homebrew on a Mac book air M1 (ARM).
+  The solution is simply to export this variable before the compilation of your binaries:
+
+  ``export MACOSX_DEPLOYMENT_TARGET=14.0``
+
 .. _deprecation_policy:
 
 Version numbering and deprecation
@@ -75,6 +86,8 @@ but that's even more so for these unreleased versions).
 Installing from the Source
 --------------------------
 
+.. _install_src_deps:
+
 Getting the Dependencies
 ^^^^^^^^^^^^^^^^^^^^^^^^
 
@@ -88,15 +101,26 @@ cmake (v3.5).
   ``ccmake`` provides a nicer graphical interface compared to ``cmake``.
   Press ``t`` in ``ccmake`` if you need to see absolutely all
   configuration options (e.g., if your Python installation is not standard).
-boost (at least v1.48, v1.59 recommended)
-  - On Debian / Ubuntu: ``apt install libboost-dev libboost-context-dev``
+boost mandatory components (at least v1.48, v1.59 recommended)
+  - On Debian / Ubuntu: ``apt install libboost-dev``
   - On CentOS / Fedora: ``dnf install boost-devel``
   - On macOS with homebrew: ``brew install boost``
+boost recommended components (optional).
+  - boost-context may be used instead of our own fast context switching code which only works on amd64.
+  - boost-stacktrace is used to get nice stacktraces on errors in SimGrid.
+  - On Debian / Ubuntu: ``apt install libboost-context-dev libboost-stacktrace-dev``
+python bindings (optional):
+  - On Debian / Ubuntu: ``apt install pybind11-dev python3-dev``
+Model-checking mandatory dependencies
+  - On Debian / Ubuntu: ``apt install libevent-dev``
 Eigen3 (optional)
   - On Debian / Ubuntu: ``apt install libeigen3-dev``
   - On CentOS / Fedora: ``dnf install eigen3-devel``
   - On macOS with homebrew: ``brew install eigen``
-  - Use EIGEN3_HINT to specify where it's installed if cmake doesn't find it automatically.
+  - Use EIGEN3_HINT to specify where it's installed if cmake doesn't find it automatically. Set EIGEN3_HINT=OFF to disable detection even if it could be found.
+JSON (optional, for the DAG wfcommons loader)
+  - On Debian / Ubuntu: ``apt install nlohmann-json3-dev``
+  - Use nlohmann_json_HINT to specify where it's installed if cmake doesn't find it automatically.
 
 For platform-specific details, please see below.
 
@@ -182,7 +206,7 @@ Note that the dot at the end is mandatory (see :ref:`install_cmake_outsrc`).
 
 .. code-block:: console
 
-   $ cmake -DCC=clang -DCXX=clang++ .
+   $ cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ .
 
 SimGrid compilation options
 """""""""""""""""""""""""""
@@ -228,10 +252,9 @@ enable_mallocators (ON/off)
   Activates our internal memory caching mechanism. This produces faster
   code, but it may fool the debuggers.
 
-enable_model-checking (on/OFF)
-  Activates the formal verification mode. This will **hinder
-  simulation speed** even when the model checker is not activated at
-  run time.
+enable_model-checking (ON/off)
+  Activates the verification mode. This should not impact the performance of your simulations if you build it but don't use it,
+  but you can still disable it to save some compilation time.
 
 enable_ns3 (on/OFF)
   Activates the ns-3 bindings. See section :ref:`models_ns3`.
@@ -239,10 +262,13 @@ enable_ns3 (on/OFF)
 enable_smpi (ON/off)
   Allows one to run MPI code on top of SimGrid.
 
-enable_smpi_MBI_testsuite (on/OFF)
-  Adds many extra tests for the model checker module.
+enable_testsuite_McMini (on/OFF)
+  Adds several extra tests for the model checker module (targeting threaded applications).
 
-enable_smpi_MPICH3_testsuite (on/OFF)
+enable_testsuite_smpi_MBI (on/OFF)
+  Adds many extra tests for the model checker module (targeting MPI applications).
+
+enable_testsuite_smpi_MPICH3 (on/OFF)
   Adds many extra tests for the MPI module.
 
 minimal-bindings (on/OFF)
@@ -254,6 +280,7 @@ NS3_HINT (empty by default)
 
 EIGEN3_HINT (empty by default)
   Alternative path into which Eigen3 should be searched for.
+  Providing the value OFF as an hint will disable the detection alltogether.
 
 SIMGRID_PYTHON_LIBDIR (auto-detected)
   Where to install the Python module library. By default, it is set to the cmake Python3_SITEARCH variable if installing to /usr,
@@ -310,7 +337,7 @@ existing targets are not really for public consumption so don't worry
 if some do not work for you.
 
 - **make**: Build the core of SimGrid that gets installed, but not any example.
-- **make tests**: Build the tests and examples.
+- **make examples**: Build the examples, which are needed by the tests.
 - **make simgrid**: Build only the SimGrid library. Not any example nor the helper tools.
 - **make s4u-comm-pingpong**: Build only this example (works for any example)
 - **make python-bindings**: Build the Python bindings
@@ -386,7 +413,7 @@ Windows-specific instructions
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 The best solution to get SimGrid working on windows is to install the
-Ubuntu subsystem of Windows 10. All of SimGrid (but the model checker)
+Ubuntu subsystem of Windows 10. All of SimGrid 
 works in this setting. Native builds never really worked, and they are
 disabled starting with SimGrid v3.33.
 
@@ -409,3 +436,17 @@ simgrid without downloading the source with pip:
 .. code-block:: console
 
   $ pip install simgrid
+
+If you installed SimGrid to a non-standard directory (such as ``/opt/simgrid`` as advised earlier), you should tell python where
+to find the libraries as follows (notice the elements suffixed to the configured prefix).
+
+.. code-block:: console
+
+  $ PYTHONPATH="/opt/simgrid/lib/python3/dist-packages" LD_LIBRARY_PATH="/opt/simgrid/lib" python your_script.py
+
+You can add those variables to your bash profile to not specify it each time by adding these lines to your ``~/.profile``:
+
+.. code-block:: console
+
+  export PYTHONPATH="$PYTHONPATH:/opt/simgrid/lib/python3/dist-packages"
+  export LD_LIBRARY_PATH="$PYTHONPATH:/opt/simgrid/lib"