From 75fffe82464493551fa63fdd55d096f6f9693fa3 Mon Sep 17 00:00:00 2001 From: Jean-Nicolas Brunet Date: Wed, 16 Dec 2020 12:24:05 +0100 Subject: [PATCH 1/4] first --- docs/sphinx/source/_templates/layout.html | 6 +++++ docs/sphinx/source/conf.py | 21 ++++++++++++++--- docs/sphinx/source/index.rst | 28 ++++++++++++----------- 3 files changed, 39 insertions(+), 16 deletions(-) create mode 100644 docs/sphinx/source/_templates/layout.html diff --git a/docs/sphinx/source/_templates/layout.html b/docs/sphinx/source/_templates/layout.html new file mode 100644 index 000000000..f76c5627d --- /dev/null +++ b/docs/sphinx/source/_templates/layout.html @@ -0,0 +1,6 @@ +{% extends "!layout.html" %} + +{% block menu %} +Overview +{{ super() }} +{% endblock %} \ No newline at end of file diff --git a/docs/sphinx/source/conf.py b/docs/sphinx/source/conf.py index 31ead1f98..86dbb7721 100644 --- a/docs/sphinx/source/conf.py +++ b/docs/sphinx/source/conf.py @@ -48,6 +48,8 @@ import sys import os +import re + #sys.path.append("/home/dmarchal/projects/DEFROST/dev/sofa2/builds/release/lib/site-packages/") sys.path.append(os.getcwd()+"/../../sphinx-stubs") print(sys.path) @@ -74,7 +76,7 @@ # General information about the project. project = u'SofaPython3' -copyright = u'2018, damien.marchal@univ-lille.fr' +copyright = u'2020, SOFA Framework' author = u'damien.marchal@univ-lille.fr' # The version info for the project you're documenting, acts as replacement for @@ -82,9 +84,22 @@ # built documents. # # The short X.Y version. -version = u'1.0' +_cmake_version_major_re = re.compile(r'set[^\S\n]*\(\w*_VERSION_MAJOR[^\S\n]+(\w+)[^\S\n]*\)') +_cmake_version_minor_re = re.compile(r'set[^\S\n]*\(\w*_VERSION_MINOR[^\S\n]+(\w+)[^\S\n]*\)') +_cmake_version_patch_re = re.compile(r'set[^\S\n]*\(\w*_VERSION_PATCH[^\S\n]+(\w+)[^\S\n]*\)') + +version_major = 0 +version_minor = 0 +version_patch = 0 +for line in open('../../../CMakeLists.txt'): + major, minor, patch = _cmake_version_major_re.search(line), _cmake_version_minor_re.search(line), _cmake_version_patch_re.search(line) + if major: version_major = major.group(1) + if minor: version_minor = minor.group(1) + if patch: version_patch = patch.group(1) + +version = f'{version_major}.{version_minor}' # The full version, including alpha/beta/rc tags. -release = u'1.0' +release = f'{version}.{version_patch}' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/docs/sphinx/source/index.rst b/docs/sphinx/source/index.rst index 8dd7cd83a..926ba24f4 100644 --- a/docs/sphinx/source/index.rst +++ b/docs/sphinx/source/index.rst @@ -1,23 +1,25 @@ -Welcome to SofaPython3 ! -======================== +General overview +================ -The project is python3 binding for the Sofa simulation framework. -It is composed of one *Sofa plugin* and several *python modules*. +The SofaPython3 project brings python bindings for the `SOFA simulation framework `_. +Thereby, it allows users to access most of the components and API found in SOFA directly into their python scripts. -*Sofa plugin* embeds a python3 interpreter and a scene loader. This plugins allows you to load -a python interpreter in a sofa simulation to write Sofa scene directly using python. It also -permits to implement in python3 custom sofa component like ForceField, Controllers, Visitors. +This project is composed of two modules: *Sofa plugin* and several *python modules*. -Apart from the SofaPython3 plugin we also provide several *python modules* that exposes python different -parts of Sofa. +1. The **SofaPython3 plugin** which embeds a python interpreter and a scene loader. This plugin allows one to load a python +script as the main simulation scene file. The scene loader will automatically detect the ".py", ".py3", ".py3scn" or +".pyscn" file extension and load the script into the embedded python interpreter. -The general guidelines design for these binding was to be as much as possible idiomatic python3 API -and with tight integration for numpy. +2. The **SofaPython3 bindings** which make the link between the SOFA API and python. These are compiled (C++) python +modules compatible with the C-Python ABI and can therefore be directly imported into any python interpreter, given +that the python version is compatible. Hence, the python interpreter embedded inside the *SOFA plugin* will be able +to load these binding modules. In addition, one could load the binding modules directly inside their own python +interpreter without requiring the load of the plugin. General overview ----------------- -The Sofa python module: -^^^^^^^^^^^^^^^^^^^^^^^ +The SOFA python packages: +^^^^^^^^^^^^^^^^^^^^^^^^^ Exposes the base Sofa object to build and manipulate a Sofa simulation. - contains 4 submodules : From bc16421a4ba8b9941aab400ab5c724888d695bc8 Mon Sep 17 00:00:00 2001 From: Jean-Nicolas Brunet Date: Tue, 12 Jan 2021 14:49:06 +0100 Subject: [PATCH 2/4] temp --- docs/CMakeLists.txt | 2 +- docs/sphinx/source/_templates/layout.html | 2 +- docs/sphinx/source/conf.py | 5 +- docs/sphinx/source/index.rst | 65 +------ docs/sphinx/source/menu/Compilation.rst | 170 ++++++++++++++++++ .../menu/{install.rst => Installation.rst} | 4 +- 6 files changed, 181 insertions(+), 67 deletions(-) create mode 100644 docs/sphinx/source/menu/Compilation.rst rename docs/sphinx/source/menu/{install.rst => Installation.rst} (95%) diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index f338be8cb..23b529fd7 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -2,7 +2,7 @@ project(Documentation) set(DOCUMENTATION_FILES ${CMAKE_CURRENT_SOURCE_DIR}/sphinx/source/index.rst - ${CMAKE_CURRENT_SOURCE_DIR}/sphinx/source/menu/install.rst + ${CMAKE_CURRENT_SOURCE_DIR}/sphinx/source/menu/Installation.rst ${CMAKE_CURRENT_SOURCE_DIR}/sphinx/source/menu/Contributing.rst ${CMAKE_CURRENT_SOURCE_DIR}/sphinx/source/menu/SofaPlugin.rst ${CMAKE_CURRENT_SOURCE_DIR}/sphinx/source/menu/SofaModule.rst diff --git a/docs/sphinx/source/_templates/layout.html b/docs/sphinx/source/_templates/layout.html index f76c5627d..f4d402fe0 100644 --- a/docs/sphinx/source/_templates/layout.html +++ b/docs/sphinx/source/_templates/layout.html @@ -1,6 +1,6 @@ {% extends "!layout.html" %} {% block menu %} -Overview +Overview {{ super() }} {% endblock %} \ No newline at end of file diff --git a/docs/sphinx/source/conf.py b/docs/sphinx/source/conf.py index 86dbb7721..ade889692 100644 --- a/docs/sphinx/source/conf.py +++ b/docs/sphinx/source/conf.py @@ -34,6 +34,7 @@ 'sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.autosummary', + 'sphinxcontrib.contentui', #'sphinx.ext.intersphinx', #'sphinx.ext.mathjax', #'sphinx.ext.ifconfig', @@ -77,7 +78,7 @@ # General information about the project. project = u'SofaPython3' copyright = u'2020, SOFA Framework' -author = u'damien.marchal@univ-lille.fr' +author = u'consortium@sofa-framework.org' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the @@ -140,7 +141,7 @@ # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] +html_static_path = [] # Custom sidebar templates, must be a dictionary that maps document names # to template names. diff --git a/docs/sphinx/source/index.rst b/docs/sphinx/source/index.rst index 926ba24f4..b62383e24 100644 --- a/docs/sphinx/source/index.rst +++ b/docs/sphinx/source/index.rst @@ -16,80 +16,23 @@ that the python version is compatible. Hence, the python interpreter embedded in to load these binding modules. In addition, one could load the binding modules directly inside their own python interpreter without requiring the load of the plugin. -General overview ------------------ -The SOFA python packages: -^^^^^^^^^^^^^^^^^^^^^^^^^ -Exposes the base Sofa object to build and manipulate a Sofa simulation. - -- contains 4 submodules : - - Sofa.Core, that contains bindings for scene components, - - Sofa.Simulation, that contains functions to conduct simulation, - - Sofa.Types, that contains default types available in Sofa, - - Sofa.Helper, that contains utility functions. -- provides a copy-less API to access the sofa Data containers -- allows to implement custom sofa object (ForceField, Controller) in python -- has docstring documentation - -Try it: ```python import Sofa``` - -The SofaRuntime python module -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -- access the runtime specific stuff (GUI, GLViewers, runSofa internal status) [POC] -- docstring with sphinx content [TBD] - -Try it: ```python import SofaRuntime``` - -Developer's environment -^^^^^^^^^^^^^^^^^^^^^^^ -- autogenerated documentation using sphinx [DONE] -- automated update the docs from the c++'s docstring: https://sofapython3.readthedocs.io/en/latest/ [WIP] -- code completion with common editor [WIP, some editor are not working with c++ modules] - - -Execution environment -^^^^^^^^^^^^^^^^^^^^^ -- SofaPython3 is a plugin to include a python3 environment in a Sofa scene [DONE], - -Try it: ```xml ``` - - -- Sofa and SofaRuntime are the python module that can be imported in any python interpreter (python3, ipython, jupyter)[DONE], - -Try it: ```python python3 minimalscene.py``` - -- Access to Sofa simulation within the MathLab python interpreter [WIP-POC]. -- Make a full python GUI application (with UI framework like PySide2, pygame) and render an integrated sofa scene in an opengl context [POC] - - -Global diagram of SofaPython3 ------------------------------ .. figure:: images/SP3_global_arch.png - :alt: How SP3 fits in the SOFA usage pipeline - :align: center + :alt: How SP3 fits in the SOFA usage pipeline + :align: center Content ------- - .. toctree:: :glob: :maxdepth: 1 - menu/Welcome - menu/install + menu/Installation + menu/Compilation menu/SofaPlugin menu/SofaModule menu/pythonLibraries menu/CustomModule menu/Contributing - -Contributors ------------- - -- Damien Marchal, Research Engineer CNRS -- Bruno Marques, Research Engineer Inria -- Eve Le Guillou, Enginnering Student - diff --git a/docs/sphinx/source/menu/Compilation.rst b/docs/sphinx/source/menu/Compilation.rst new file mode 100644 index 000000000..a81dffdc2 --- /dev/null +++ b/docs/sphinx/source/menu/Compilation.rst @@ -0,0 +1,170 @@ +Compilation +=========== + +The compilation of the SofaPython3 can be done automatically when `building SOFA `__, +or it can be done independently using an already compiled/installed SOFA. The former is called an *in-tree build*, which is, +the compilation of SofaPython3 is included inside the build tree of SOFA. The latter is called an *out-of-tree build*, hence +the compilation of SofaPython3 is done in its own build tree, usually placed somewhere else than SOFA. This page will +cover both methods. + +Prerequisites +------------- +The compilation of SofaPython3 requires the installation of some dependencies. The following table lists all of those +prerequisites. + +.. content-tabs:: + + .. tab-container:: tab1 + :title: Ubuntu + + .. list-table:: + :widths: 15 10 30 45 + :header-rows: 1 + + * - Package + - Type + - Installation + - Description + * - Python 3 libs + - **Required** + - ``sudo apt install python3-dev`` + - Used to link against the C-Python API + * - `pybind11 `__ + - **Required** + - ``sudo apt install pybind11-dev`` + - Heavily used to automatically create the binding code between SOFA and python + * - `SOFA Framework `__ + - **Required** + - See below for more information + - + + + .. tab-container:: tab2 + :title: MacOS + + .. list-table:: + :widths: 15 10 30 45 + :header-rows: 1 + + * - Package + - Type + - Installation + - Description + * - Python 3 libs + - **Required** + - ``brew install python3`` + - Used to link against the C-Python API + * - `pybind11 `__ + - **Required** + - ``brew install pybind11`` + - Heavily used to automatically create the binding code between SOFA and python + * - `SOFA Framework `__ + - **Required** + - See below for more information + - + + .. tab-container:: tab3 + :title: Windows + + .. list-table:: + :widths: 15 10 30 45 + :header-rows: 1 + + * - Package + - Type + - Installation + - Description + * - Python 3 libs + - **Required** + - Install the latest Python 3 from `here `__ + - Used to link against the C-Python API + * - `pybind11 `__ + - **Required** + - ``brew install pybind11`` + - Heavily used to automatically create the binding code between SOFA and python + * - `SOFA Framework `__ + - **Required** + - See below for correctly linking SOFA when building out-of-tree. + - + + .. warning:: + + Add the installation path of each of those dependencies into your environment variable. For example, + using the PowerShell of Windows: + + .. code-block:: powershell + + PS $env:Path += ";C:\sofa;C:\pybind11;C:\python" + +In-tree build +------------- + +We use here the term *in-tree build* to indicate that we wish to compile SofaPython3 in the same build tree as SOFA, which is, +compiling SOFA will automatically compile SofaPython3 as an internal subproject. + +Prerequisites - Sofa +-------------------- + +If you want to compile the SofaPython3 plugin out-of-tree, you will need to either: + +* [**Method 1**] Install the `SOFA binaries and headers `__ + somewhere on your computer and note its installation directory. Or, +* [**Method 2**] Compile it following the `SOFA build documentation `__. + Once it is built, execute the installation by going into the build directory of SOFA (for example, + */home/user/sofa/build/master/*), and using the command ``cmake --install .`` + +.. warning:: + + If you choose the first method (installing the binaries), make sure you have all the SOFA dependencies installed on + your system (e.g. boost, Eigen3, etc.). You can follow the same instructions as if you had chosen the second method + (compiling SOFA), but skipping the compilation part. + +Once done, export the installation path of SOFA inside the ``SOFA_ROOT`` environment variable. For example, + +.. code-block:: bash + + $ export SOFA_INSTALL="/home/user/sofa/build/master/install" + + +.. note:: + + To make sure your ``SOFA_INSTALL`` is well defined, you can verify that the following file path exists: + + .. code-block:: bash + + $SOFA_INSTALL/lib/cmake/SofaFramework/SofaFrameworkTargets.cmake + +Install from source +------------------- + +Requirement Install +^^^^^^^^^^^^^^^^^^^ +- have an up to date version of the sofa source code from the master repository +- pybind11 (minimal 2.2.4) +- cmake (minimal 3.12) +- developement package for python3.7 (python3.7-dev) +- numpy + +In-tree build +^^^^^^^^^^^^^^^^^^^ + +If you have already compiled and installed SOFA, you will have to do it again, and add some configuration to CMAKE: + + * Add this directory path in `SOFA_EXTERNAL_DIRECTORIES`. + * Check the `PLUGIN_SOFAPYTHON3` box + * You may need to add an entry called `SofaPython3_DIR`, of the value /cmake + + + +You may also need to add to your variable `PYTHONPATH` the string: /lib/site-packages + + +NB: This plugin cannot be build through in-build process when the old SofaPython plugin is activated. To have both SofaPython3 and SofaPython you need to use out-of-tree build. + +Out-of-tree build +^^^^^^^^^^^^^^^^^^^ + +This plugin should compile with out-of-tree builds. + + + diff --git a/docs/sphinx/source/menu/install.rst b/docs/sphinx/source/menu/Installation.rst similarity index 95% rename from docs/sphinx/source/menu/install.rst rename to docs/sphinx/source/menu/Installation.rst index 1e8629f7e..eed811044 100644 --- a/docs/sphinx/source/menu/install.rst +++ b/docs/sphinx/source/menu/Installation.rst @@ -1,5 +1,5 @@ -Download and Install -================================ +Installation +============ The plugin can be compiled from the source. From 2bbdb9b937be9926b74d4cbd88c2c93b6dfcc115 Mon Sep 17 00:00:00 2001 From: Jean-Nicolas Brunet Date: Mon, 8 Feb 2021 13:59:36 +0100 Subject: [PATCH 3/4] second Signed-off-by: Jean-Nicolas Brunet --- docs/sphinx/source/conf.py | 17 +--- docs/sphinx/source/index.rst | 17 ++-- docs/sphinx/source/menu/Compilation.rst | 121 +++++++++++++++-------- docs/sphinx/source/menu/Installation.rst | 39 -------- 4 files changed, 96 insertions(+), 98 deletions(-) delete mode 100644 docs/sphinx/source/menu/Installation.rst diff --git a/docs/sphinx/source/conf.py b/docs/sphinx/source/conf.py index ade889692..e12206cd3 100644 --- a/docs/sphinx/source/conf.py +++ b/docs/sphinx/source/conf.py @@ -35,14 +35,9 @@ 'sphinx.ext.doctest', 'sphinx.ext.autosummary', 'sphinxcontrib.contentui', - #'sphinx.ext.intersphinx', - #'sphinx.ext.mathjax', - #'sphinx.ext.ifconfig', 'sphinx.ext.viewcode', 'sphinx.ext.githubpages', 'sphinx.ext.napoleon', - #'autoapi.sphinx', - #'sphinx.ext.inheritance_diagram' ] #autoapi_modules = {'Sofa': None, 'Sofa.Core' : None} @@ -85,18 +80,16 @@ # built documents. # # The short X.Y version. -_cmake_version_major_re = re.compile(r'set[^\S\n]*\(\w*_VERSION_MAJOR[^\S\n]+(\w+)[^\S\n]*\)') -_cmake_version_minor_re = re.compile(r'set[^\S\n]*\(\w*_VERSION_MINOR[^\S\n]+(\w+)[^\S\n]*\)') -_cmake_version_patch_re = re.compile(r'set[^\S\n]*\(\w*_VERSION_PATCH[^\S\n]+(\w+)[^\S\n]*\)') +_cmake_version_re = re.compile(r'project[^\S\n]*\(\w*[^\S\n]*VERSION[^\S\n]+(\w+).(\w+).(\w+)[^\S\n]*\)') version_major = 0 version_minor = 0 version_patch = 0 for line in open('../../../CMakeLists.txt'): - major, minor, patch = _cmake_version_major_re.search(line), _cmake_version_minor_re.search(line), _cmake_version_patch_re.search(line) - if major: version_major = major.group(1) - if minor: version_minor = minor.group(1) - if patch: version_patch = patch.group(1) + version = _cmake_version_re.search(line) + if version: + version_major, version_minor, version_patch = version.group(1), version.group(2), version.group(3) + break version = f'{version_major}.{version_minor}' # The full version, including alpha/beta/rc tags. diff --git a/docs/sphinx/source/index.rst b/docs/sphinx/source/index.rst index b62383e24..e9d789cbe 100644 --- a/docs/sphinx/source/index.rst +++ b/docs/sphinx/source/index.rst @@ -2,17 +2,19 @@ General overview ================ The SofaPython3 project brings python bindings for the `SOFA simulation framework `_. -Thereby, it allows users to access most of the components and API found in SOFA directly into their python scripts. +Thereby, it allows users to use most of the components and features found in SOFA directly into their python scripts. -This project is composed of two modules: *Sofa plugin* and several *python modules*. +This project is composed of two modules: a *SOFA plugin* and several *python modules*. -1. The **SofaPython3 plugin** which embeds a python interpreter and a scene loader. This plugin allows one to load a python +1. The **SofaPython3 plugin** embeds a python interpreter and a SOFA scene loader. This plugin allows one to load a python script as the main simulation scene file. The scene loader will automatically detect the ".py", ".py3", ".py3scn" or -".pyscn" file extension and load the script into the embedded python interpreter. +".pyscn" file extension and load the script into the embedded python interpreter. Whereas traditional XML-based scene +file would discribe the SOFA scene structure, the python scene script will instead programmatically construct the SOFA +scene. -2. The **SofaPython3 bindings** which make the link between the SOFA API and python. These are compiled (C++) python -modules compatible with the C-Python ABI and can therefore be directly imported into any python interpreter, given -that the python version is compatible. Hence, the python interpreter embedded inside the *SOFA plugin* will be able +2. The **SofaPython3 bindings** makes the link between the SOFA API and python. These are compiled (C++) python +modules compatible with the C-Python ABI and therefore directly accessible from any python interpreter, given +that the python version is compatible. Hence, the python interpreter embedded inside the *SofaPython3 plugin* will be able to load these binding modules. In addition, one could load the binding modules directly inside their own python interpreter without requiring the load of the plugin. @@ -27,7 +29,6 @@ Content :glob: :maxdepth: 1 - menu/Installation menu/Compilation menu/SofaPlugin menu/SofaModule diff --git a/docs/sphinx/source/menu/Compilation.rst b/docs/sphinx/source/menu/Compilation.rst index a81dffdc2..3b95ec109 100644 --- a/docs/sphinx/source/menu/Compilation.rst +++ b/docs/sphinx/source/menu/Compilation.rst @@ -35,7 +35,8 @@ prerequisites. - Heavily used to automatically create the binding code between SOFA and python * - `SOFA Framework `__ - **Required** - - See below for more information + - You can either `download it `__, or + `compile it `__ from sources - @@ -60,7 +61,8 @@ prerequisites. - Heavily used to automatically create the binding code between SOFA and python * - `SOFA Framework `__ - **Required** - - See below for more information + - You can either `download it `__, or + `compile it `__ from sources - .. tab-container:: tab3 @@ -80,11 +82,13 @@ prerequisites. - Used to link against the C-Python API * - `pybind11 `__ - **Required** - - ``brew install pybind11`` + - Compile and install it from `sources `__. Then, add the installation + path to your PATH environment variable. - Heavily used to automatically create the binding code between SOFA and python * - `SOFA Framework `__ - **Required** - - See below for correctly linking SOFA when building out-of-tree. + - You can either `download it `__, or + `compile it `__ from sources - .. warning:: @@ -100,10 +104,58 @@ In-tree build ------------- We use here the term *in-tree build* to indicate that we wish to compile SofaPython3 in the same build tree as SOFA, which is, -compiling SOFA will automatically compile SofaPython3 as an internal subproject. +compiling SOFA will automatically compile SofaPython3 as an internal subproject. In this case, the compilation of the +plugin should be straightforward, given that you installed correctly all the dependencies of SofaPython3. + +Follow the same steps as the one needed to compile SOFA : ``__. +When you get to the step **Generate a Makefile with CMake**, activate the CMake option **SOFA_FETCH_SOFAPYTHON3**: + +.. figure:: /images/cmake_fetch_sp3.jpg + :alt: Activate the cmake option SOFA_FETCH_SOFAPYTHON3 + :align: center + +and configure CMake. This will pull the source code of SofaPython3 into the `application/plugins` directory of SOFA's +source directory. + +.. note:: + + The CMake option **SOFA_FETCH_SOFAPYTHON3** should disable itself automatically once CMake has been configure one + time. This is to prevent pulling again the SofaPython3 source code again the next time you run cmake. If you need + to update the plugin, you can manually turn the option `ON` again to pull the latest changes made in SofaPython3. -Prerequisites - Sofa --------------------- +Once cmake has pulled the source code of SofaPython3 into the `application/plugins` directory, a new CMake option should +now be available : **PLUGIN_SOFAPYTHON3**. Make sure you activate it and re-run CMake configure and generate: + +.. figure:: /images/cmake_activate_sp3.jpg + :alt: Activate the cmake option PLUGIN_SOFAPYTHON3 + :align: center + +If everything went fine during the cmake configuration stage, you should be able to find some information on the version +of python and pybind11 used for the compilation of the plugin: + +.. code-block:: bash + + $ cmake .. + (...) + Adding plugin SofaPython3 + -- Python: + Version: 3.9.1 + Executable: /usr/bin/python3.9 + Headers: /usr/include/python3.9 + Libraries: /usr/lib64/libpython3.9.so + User site: /home/jnbrunet/.local/lib/python3.9/site-packages + -- pybind11: + Version: 2.6.1 + Config: /usr/share/cmake/pybind11/pybind11Config.cmake + (...) + -- Configuring done + -- Generating done + -- Build files have been written to: /home/jnbrunet/sources/sofa/build + +At this point, you are ready to start the compilation of SOFA and the SofaPython3 plugin. + +Out-of-tree build +----------------- If you want to compile the SofaPython3 plugin out-of-tree, you will need to either: @@ -123,48 +175,39 @@ Once done, export the installation path of SOFA inside the ``SOFA_ROOT`` environ .. code-block:: bash - $ export SOFA_INSTALL="/home/user/sofa/build/master/install" + $ export SOFA_ROOT="/home/user/sofa/build/master/install" .. note:: - To make sure your ``SOFA_INSTALL`` is well defined, you can verify that the following file path exists: + To make sure your ``SOFA_ROOT`` is well defined, you can verify that the following file path exists: .. code-block:: bash - $SOFA_INSTALL/lib/cmake/SofaFramework/SofaFrameworkTargets.cmake + $SOFA_ROOT/lib/cmake/SofaFramework/SofaFrameworkTargets.cmake -Install from source -------------------- +We are now ready to compile SofaPython3. Let's first create three new environment variables: **SP3_SRC**, **SP3_BUILD** +and **SP3_ROOT** that will be use to set the location to the source code, the built files and the installed files, +respectively. For example: -Requirement Install -^^^^^^^^^^^^^^^^^^^ -- have an up to date version of the sofa source code from the master repository -- pybind11 (minimal 2.2.4) -- cmake (minimal 3.12) -- developement package for python3.7 (python3.7-dev) -- numpy - -In-tree build -^^^^^^^^^^^^^^^^^^^ - -If you have already compiled and installed SOFA, you will have to do it again, and add some configuration to CMAKE: - - * Add this directory path in `SOFA_EXTERNAL_DIRECTORIES`. - * Check the `PLUGIN_SOFAPYTHON3` box - * You may need to add an entry called `SofaPython3_DIR`, of the value /cmake - - - -You may also need to add to your variable `PYTHONPATH` the string: /lib/site-packages - - -NB: This plugin cannot be build through in-build process when the old SofaPython plugin is activated. To have both SofaPython3 and SofaPython you need to use out-of-tree build. - -Out-of-tree build -^^^^^^^^^^^^^^^^^^^ +.. code-block:: bash -This plugin should compile with out-of-tree builds. + $ export SP3_SRC=/opt/SofaPython3/src + $ export SP3_BUILD=/opt/SofaPython3/build + $ export SP3_ROOT=/opt/SofaPython3/build/install +Let's now pull the source code of the plugin, configure the build and start the compilation and installation. +.. code-block:: bash + $ git clone https://github.com/sofa-framework/SofaPython3.git $SP3_SRC + $ cmake -DCMAKE_PREFIX_PATH=$SOFA_ROOT/lib/cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=$SP3_ROOT\ + -S $SP3_SRC \ + -B $SP3_BUILD + $ cmake --build $SP3_BUILD + $ cmake --install $SP3_BUILD + +That's it, you are now ready to use SofaPython3. Keep the environment variable **SOFA_ROOT** and **SP3_ROOT** close by +for the upcoming sections. \ No newline at end of file diff --git a/docs/sphinx/source/menu/Installation.rst b/docs/sphinx/source/menu/Installation.rst deleted file mode 100644 index eed811044..000000000 --- a/docs/sphinx/source/menu/Installation.rst +++ /dev/null @@ -1,39 +0,0 @@ -Installation -============ - -The plugin can be compiled from the source. - -Install from source -------------------- - -Requirement Install -^^^^^^^^^^^^^^^^^^^ -- have an up to date version of the sofa source code from the master repository -- pybind11 (minimal 2.2.4) -- cmake (minimal 3.12) -- developement package for python3.7 (python3.7-dev) -- numpy - -In-tree build -^^^^^^^^^^^^^^^^^^^ - -If you have already compiled and installed SOFA, you will have to do it again, and add some configuration to CMAKE: - - * Add this directory path in `SOFA_EXTERNAL_DIRECTORIES`. - * Check the `PLUGIN_SOFAPYTHON3` box - * You may need to add an entry called `SofaPython3_DIR`, of the value /cmake - - - -You may also need to add to your variable `PYTHONPATH` the string: /lib/site-packages - - -NB: This plugin cannot be build through in-build process when the old SofaPython plugin is activated. To have both SofaPython3 and SofaPython you need to use out-of-tree build. - -Out-of-tree build -^^^^^^^^^^^^^^^^^^^ - -This plugin should compile with out-of-tree builds. - - - From 2874afb225dd33b6fbc3b1dc7f502bb43efb0883 Mon Sep 17 00:00:00 2001 From: Jean-Nicolas Brunet Date: Thu, 18 Mar 2021 16:02:28 +0100 Subject: [PATCH 4/4] add images --- .../sphinx/source/images/cmake_activate_sp3.jpg | Bin 0 -> 54282 bytes docs/sphinx/source/images/cmake_fetch_sp3.jpg | Bin 0 -> 54961 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/sphinx/source/images/cmake_activate_sp3.jpg create mode 100644 docs/sphinx/source/images/cmake_fetch_sp3.jpg diff --git a/docs/sphinx/source/images/cmake_activate_sp3.jpg b/docs/sphinx/source/images/cmake_activate_sp3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..97d5d1a83ce1af665f1f53b3289a46c3bf3b20a1 GIT binary patch literal 54282 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 h