-.. Copyright 2005-2019
+.. Copyright 2005-2021
.. _install:
You should obviously install the ``boost-context`` library on your
machine, for example with ``apt``.
+Version numbering and deprecation
+---------------------------------
+
+SimGrid tries to be both a research instrument that you can trust, and
+a vivid project targeting the future issues. We have 4 stable versions
+per year, numbered 3.24 or 3.25. Backward compatibility is ensured for
+one year: Code compiling without warning on 3.24 will still compile
+with 3.28, but maybe with some deprecation warnings. You should update
+your SimGrid installation at least once a year and fix those
+deprecation warnings: the compatibility wrappers are usually removed
+after 4 versions. Another approach is to never update your SimGrid
+installation, but we don't provide any support to old versions.
+
+Interim versions (also called pre-versions) may be released between
+stable releases. They are numbered 3.X.Y, with even Y (for example,
+3.23.2 was released on July 8. 2019 as a pre-version of 3.24). These
+versions should be as usable as regular stable releases, even if they
+may be somewhat less tested and documented. They play no role in our
+deprecation handling, and they are not really announced to not spam
+our users.
+
+Version numbered 3.X.Y with odd Y are git versions. They often work,
+but no guarantee is given whatsoever (all releases are given "as is",
+but that's even more so for these unreleased versions).
+
.. _install_src:
Installing from the Source
^^^^^^^^^^^^^^^^^^^^^^^^
C++ compiler (either g++, clang, or icc).
- We use the C++11 standard, and older compilers tend to fail on
+ We use the C++14 standard, and older compilers tend to fail on
us. It seems that g++ 5.0 or higher is required nowadays (because of
boost). SimGrid compiles well with `clang` or `icc` too.
Python 3.
.. code-block:: shell
- tar xf SimGrid-3-XX.tar.gz
- cd SimGrid-*
+ tar xf simgrid-3-XX.tar.gz
+ cd simgrid-*
cmake -DCMAKE_INSTALL_PREFIX=/opt/simgrid .
make
make install
enable_debug (ON/off)
Disabling this option discards all log messages of severity
- debug or below at compile time (see @ref XBT_log). The resulting
- code is faster than if you discard these messages at
- runtime. However, it obviously becomes impossible to get any debug
- info from SimGrid if something goes wrong.
+ debug or below at compile time (see :ref:`outcome_logs`). The resulting
+ code is marginaly faster than if you discard these messages at
+ runtime, but it obviously becomes impossible to get any debug
+ info from SimGrid when things go wrong.
enable_documentation (on/OFF)
Generates the documentation pages. Building the documentation is not
version for now.
enable_java (on/OFF)
- Generates the java bindings of SimGrid.
+ Generates the java bindings of SimGrid. You must also enable MSG for
+ this to work.
enable_jedule (on/OFF)
Produces execution traces from SimDag simulations, which can then be visualized with the
simulation speed** even when the model checker is not activated at
run time.
+enable_msg (on/OFF)
+ Activates the :ref:`MSG <MSG_doc>` legacy interface.
+
enable_ns3 (on/OFF)
Activates the ns-3 bindings. See section :ref:`model_ns3`.
Take as few optional dependencies as possible, to get minimal
library bindings in Java and Python.
+SMPI_C_FLAGS, SMPI_CXX_FLAGS, SMPI_Fortran_FLAGS (string)
+ Default compiler options to use in smpicc, smpicxx, or smpiff.
+ This can be useful to set options like "-m32" or "-m64".
+
Reset the build configuration
"""""""""""""""""""""""""""""
- **make**: Build the core of SimGrid that gets installed, but not any example.
- **make tests**: Build the tests and examples.
- **make simgrid**: Build only the SimGrid library. Not any example nor the helper tools.
-- **make s4u-app-pingpong**: Build only this example (works for any example)
+- **make s4u-comm-pingpong**: Build only this example (works for any example)
- **make java-all**: Build all Java examples and their dependencies
- **make clean**: Clean the results of a previous compilation
- **make install**: Install the project (doc/ bin/ lib/ include/)
Once everything is built, you may want to test the result. SimGrid
comes with an extensive set of regression tests (as described in the
-@ref inside_tests "insider manual"). The tests are run with ``ctest``,
-that comes with CMake. We run them every commit and the results are
-on `our Jenkins <https://ci.inria.fr/simgrid/>`_.
+@ref inside_tests "insider manual"). The tests are not built by
+default, so you first have to build them with ``make tests``. You can
+then run them with ``ctest``, that comes with CMake. We run them
+every commit and the results are on `our Jenkins <https://ci.inria.fr/simgrid/>`_.
.. code-block:: shell
+ make tests # Build the tests
ctest # Launch all tests
ctest -R s4u # Launch only the tests whose names match the string "s4u"
ctest -j4 # Launch all tests in parallel, at most 4 concurrent jobs
Python-specific instructions
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Recompiling the Python bindings from the source should be as easy as:
+Once you have the Python development headers installed as well as a
+recent version of the `pybind11 <https://pybind11.readthedocs.io/en/stable/>`
+module (version at least 2.4), recompiling the Python bindings from
+the source should be as easy as:
.. code-block:: shell
CFLAGS=-m32 \
CXXFLAGS=-m32 \
+ FFLAGS=-m32 \
PKG_CONFIG_LIBDIR=/usr/lib/i386-linux-gnu/pkgconfig/ \
cmake . \
-DCMAKE_SYSTEM_PROCESSOR=i386 \
-DCMAKE_Fortran_COMPILER=/some/path/to/i686-linux-gnu-gfortran \
-DGFORTRAN_EXE=/some/path/to/i686-linux-gnu-gfortran \
- -DCMAKE_Fortran_FLAGS=-m32
+ -DSMPI_C_FLAGS=-m32 \
+ -DSMPI_CXX_FLAGS=-m32 \
+ -DSMPI_Fortran_FLAGS=-m32
If needed, implement ``i686-linux-gnu-gfortran`` as a script: