diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2f0fd22c9..49fdf96ba 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,412 +1,418 @@ # yaml-language-server: $schema=gitlab-ci # yaml-language-server: $format.enable=false stages: - version - configure - build_libs - build_tests - test - code_quality - deploy include: - local: ".gitlab-ci.d/*.yaml" + local: ".gitlab/ci.d/*.yaml" #------------------------------------------------------------------------------- # Rebuilding the docker images if needed #------------------------------------------------------------------------------- docker build:debian-bullseye: variables: IMAGE_NAME: debian:bullseye extends: .docker_build docker build:ubuntu-lts: variables: IMAGE_NAME: ubuntu:lts extends: .docker_build docker build:manylinux: variables: IMAGE_NAME: manylinux:2014_x86_64 extends: .docker_build version_determination: stage: version image: python:latest variables: GIT_STRATEGY: fetch GIT_DEPTH: 500 script: - python3 cmake/semver.py > VERSION - cat VERSION artifacts: when: on_success paths: - VERSION expire_in: 1day # ------------------------------------------------------------------------------ # Debian bullseye compiled with GCC # ------------------------------------------------------------------------------ configure:debian_bullseye_gcc: extends: - .debian_bullseye_gcc - .build_coverage - .configure needs: - version_determination build_libs:debian_bullseye_gcc: extends: - .debian_bullseye_gcc - .build_coverage - .build_libs needs: - job: configure:debian_bullseye_gcc build_tests:debian_bullseye_gcc: extends: - .debian_bullseye_gcc - .build_coverage - .build_tests needs: - job: build_libs:debian_bullseye_gcc test:debian_bullseye_gcc: extends: - .debian_bullseye_gcc - .build_coverage - .tests coverage: '/^lines: (\d+\.\d+\%)/' needs: - job: build_tests:debian_bullseye_gcc # ------------------------------------------------------------------------------ # Debian bullseye compiled with Clang # ------------------------------------------------------------------------------ configure:debian_bullseye_clang: extends: - .debian_bullseye_clang - .build_release - .configure needs: - version_determination build_libs:debian_bullseye_clang: extends: - .debian_bullseye_clang - .build_release - .build_libs needs: - job: configure:debian_bullseye_clang build_tests:debian_bullseye_clang: extends: - .debian_bullseye_clang - .build_release - .build_tests needs: - job: build_libs:debian_bullseye_clang test:debian_bullseye_clang: extends: - .debian_bullseye_clang - .build_release - .tests coverage: '/^lines: (\d+\.\d+\%)/' needs: - job: build_tests:debian_bullseye_clang # ------------------------------------------------------------------------------ # Ubuntu LTS compiled with GCC # ------------------------------------------------------------------------------ configure:ubuntu_lts_gcc: extends: - .ubuntu_lts_gcc - .build_release - .configure needs: - version_determination build_libs:ubuntu_lts_gcc: extends: - .ubuntu_lts_gcc - .build_release - .build_libs needs: - job: configure:ubuntu_lts_gcc build_tests:ubuntu_lts_gcc: extends: - .ubuntu_lts_gcc - .build_release - .build_tests needs: - job: build_libs:ubuntu_lts_gcc test:ubuntu_lts_gcc: extends: - .ubuntu_lts_gcc - .build_release - .tests needs: - job: build_tests:ubuntu_lts_gcc # ------------------------------------------------------------------------------ # Debian bullseye compiled with GCC tested with valgrind # ------------------------------------------------------------------------------ configure:ubuntu_lts_gcc_valgrind: extends: - .ubuntu_lts_gcc - .build_valgrind - .configure needs: - version_determination build_libs:ubuntu_lts_gcc_valgrind: extends: - .ubuntu_lts_gcc - .build_valgrind - .build_libs needs: - job: configure:ubuntu_lts_gcc_valgrind build_tests:ubuntu_lts_gcc_valgrind: extends: - .ubuntu_lts_gcc - .build_valgrind - .build_tests needs: - job: build_libs:ubuntu_lts_gcc_valgrind test:ubuntu_lts_gcc_valgrind: extends: - .ubuntu_lts_gcc - .build_valgrind - .tests needs: - job: build_tests:ubuntu_lts_gcc_valgrind # ------------------------------------------------------------------------------ # Manylinux to build python packages # ------------------------------------------------------------------------------ configure:python_package: stage: configure extends: - .manylinux_2014_x64_gcc - .build_release cache: - key: ${CI_COMMIT_REF_SLUG}-third-party paths: - third-party/eigen3 - third-party/pybind11 - third-party/google-test - key: ${output}-${BUILD_TYPE}-ccache paths: - .ccache/ - key: ${output}-${BUILD_TYPE}-build-${CI_COMMIT_SHORT_SHA} paths: - build/ script: # create the build folder - cmake -E make_directory build - cd build # Variables for cmake - export CMAKE_PREFIX_PATH=/softs/view - export BOOST_ROOT=/softs/view # Configure in sequential and without tests or examples - cmake -DAKANTU_COHESIVE_ELEMENT:BOOL=TRUE -DAKANTU_IMPLICIT:BOOL=TRUE -DAKANTU_PARALLEL:BOOL=FALSE -DAKANTU_STRUCTURAL_MECHANICS:BOOL=TRUE -DAKANTU_HEAT_TRANSFER:BOOL=TRUE -DAKANTU_DAMAGE_NON_LOCAL:BOOL=TRUE -DAKANTU_PHASE_FIELD:BOOL=TRUE -DAKANTU_PYTHON_INTERFACE:BOOL=FALSE -DAKANTU_CONTACT_MECHANICS:BOOL=TRUE -DAKANTU_EXAMPLES:BOOL=FALSE -DAKANTU_TESTS:BOOL=FALSE -DMUMPS_DETECT_DEBUG:BOOL=TRUE -DCMAKE_INSTALL_PREFIX:PATH=${CI_PROJECT_DIR}/install -DCMAKE_BUILD_TYPE:STRING=${BUILD_TYPE} .. needs: - version_determination artifacts: when: on_success paths: - VERSION expire_in: 10h build_akantu:python_package: extends: - .build_libs - .build_release - .manylinux_2014_x64_gcc script: - cmake --build build --target akantu -j1 - cmake --install build artifacts: when: on_success paths: - install/ - VERSION expire_in: 10h needs: - job: configure:python_package build_pip:python_package: stage: build_tests extends: - .build_release - .manylinux_2014_x64_gcc cache: - key: ${CI_COMMIT_REF_SLUG}-third-party paths: - third-party/eigen3 - third-party/pybind11 - third-party/google-test - key: ${output}-${BUILD_TYPE}-ccache paths: - .ccache/ - key: ${output}-${BUILD_TYPE}-build-${CI_COMMIT_SHORT_SHA} paths: - build/ script: - export CI_AKANTU_INSTALL_PREFIX=${CI_PROJECT_DIR}/install - export CMAKE_PREFIX_PATH=/softs/view:${CI_AKANTU_INSTALL_PREFIX} - test/ci/make-wheels.sh needs: - job: build_akantu:python_package artifacts: when: on_success paths: - wheelhouse expire_in: 10h test:python_package: stage: test image: python:3.10 needs: - job: build_pip:python_package script: - pip install numpy scipy - pip install akantu --no-index --find-links=${PWD}/wheelhouse - python -c "import akantu" - cd examples/python/dynamics/ - apt update && apt install -y gmsh - gmsh -2 bar.geo - python ./dynamics.py package:python_gitlab: stage: deploy image: python:latest script: - pip install twine - TWINE_PASSWORD=${CI_JOB_TOKEN} TWINE_USERNAME=gitlab-ci-token python3 -m twine upload --repository-url https://gitlab.com/api/v4/projects/${CI_PROJECT_ID}/packages/pypi wheelhouse/* needs: - job: build_pip:python_package - job: test:python_package only: - master package:python_pypi: stage: deploy image: python:latest script: - pip install twine - TWINE_PASSWORD=${PYPI_TOKEN} TWINE_USERNAME=__token__ python3 -m twine upload --verbose wheelhouse/* needs: - job: build_pip:python_package - job: test:python_package only: - tags # ------------------------------------------------------------------------------ # Code Quality # ------------------------------------------------------------------------------ cq:code_quality: extends: - .code_quality_gitlab_template + - .code_only needs: - job: build_libs:debian_bullseye_clang artifacts: paths: - gl-code-quality-report.json cq:clang_tidy: extends: - .clang_tools + - .code_only script: - test/ci/scripts/cq -x third-party -x extra-packages -x pybind11 -x test -x build ${FILE_LIST_ARG} clang-tidy -p ${CI_PROJECT_DIR} > gl-clang-tidy-report.json needs: - job: configure:debian_bullseye_clang artifacts: paths: - gl-clang-tidy-report.json cq:clang_format: extends: - .clang_tools + - .code_only script: - test/ci/scripts/cq -x third-party -x extra-packages -x build clang-format -p ${CI_PROJECT_DIR} > gl-clang-format-report.json needs: - job: configure:debian_bullseye_clang artifacts: paths: - gl-clang-format-report.json cq:compilation_warnings: stage: code_quality image: python:latest + extends: + - .code_only script: - pip install warning-parser termcolor Click tqdm - ls build-*-err.log - test/ci/scripts/cq -x third-party -x extra-packages -x build warnings build-*-err.log > gl-warnings-report.json needs: - job: build_libs:debian_bullseye_clang - job: build_libs:debian_bullseye_gcc - job: build_libs:ubuntu_lts_gcc artifacts: paths: - gl-warnings-report.json cq:merge_code_quality: stage: deploy extends: - .debian_bullseye_clang + - .code_only script: - jq -Ms '[.[][]]' gl-*-report.json | tee gl-codequality.json | jq -C needs: - job: cq:code_quality - job: cq:clang_tidy - job: cq:clang_format - job: cq:compilation_warnings artifacts: reports: codequality: [gl-codequality.json] paths: - gl-codequality.json diff --git a/.gitlab-ci.d/code-quality.yaml b/.gitlab/ci.d/code-quality.yaml similarity index 100% rename from .gitlab-ci.d/code-quality.yaml rename to .gitlab/ci.d/code-quality.yaml diff --git a/.gitlab-ci.d/images.yaml b/.gitlab/ci.d/images.yaml similarity index 100% rename from .gitlab-ci.d/images.yaml rename to .gitlab/ci.d/images.yaml diff --git a/.gitlab-ci.d/templates.yaml b/.gitlab/ci.d/templates.yaml similarity index 63% rename from .gitlab-ci.d/templates.yaml rename to .gitlab/ci.d/templates.yaml index 902993507..709e662b0 100644 --- a/.gitlab-ci.d/templates.yaml +++ b/.gitlab/ci.d/templates.yaml @@ -1,169 +1,194 @@ # yaml-language-server: $schema=gitlab-ci # yaml-language-server: $format.enable=false +# Split ci +.documentation_only: + only: + - doc/**/* + - .readthedocs.yaml + - README.md + +.code_only: + except: + - doc/**/* + - .gitpod.yml + - .gitignore + - .editorconfig + - .readthedocs.yaml + - README.md + - AUTHORS + - CHANGELOG.md # Configuration template .configure: stage: configure + extends: + - .code_only variables: BLA_VENDOR: "Generic" CMAKE_GENERATOR: "Unix Makefiles" # CMAKE_GENERATOR: 'Ninja' cache: - key: ${CI_COMMIT_REF_SLUG}-third-party policy: push paths: - third-party/eigen3 - third-party/pybind11 - third-party/google-test - key: ${output}-${BUILD_TYPE}-ccache policy: pull-push paths: - .ccache/ - key: ${output}-${BUILD_TYPE}-build-${CI_COMMIT_SHORT_SHA} policy: push paths: - build/ script: # Create the build folder - cmake -E make_directory build - cd build - echo BUILD_TYPE=${BUILD_TYPE} # Configure the project - cmake -DAKANTU_COHESIVE_ELEMENT:BOOL=TRUE - -DAKANTU_IMPLICIT:BOOL=TRUE - -DAKANTU_IMPLICIT_SOLVER:STRING="Mumps" - -DAKANTU_PARALLEL:BOOL=TRUE - -DAKANTU_STRUCTURAL_MECHANICS:BOOL=TRUE - -DAKANTU_HEAT_TRANSFER:BOOL=TRUE - -DAKANTU_DAMAGE_NON_LOCAL:BOOL=TRUE - -DAKANTU_PHASE_FIELD:BOOL=TRUE - -DAKANTU_PYTHON_INTERFACE:BOOL=TRUE - -DAKANTU_CONTACT_MECHANICS:BOOL=TRUE - -DAKANTU_EXAMPLES:BOOL=TRUE - -DAKANTU_BUILD_ALL_EXAMPLES:BOOL=TRUE - -DAKANTU_TESTS:BOOL=TRUE - -DAKANTU_RUN_IN_DOCKER:BOOL=TRUE - -DAKANTU_TEST_EXAMPLES:BOOL=${TEST_EXAMPLES} - -DCMAKE_BUILD_TYPE:STRING=${BUILD_TYPE} - -G "${CMAKE_GENERATOR}" .. + -DAKANTU_IMPLICIT:BOOL=TRUE + -DAKANTU_IMPLICIT_SOLVER:STRING="Mumps" + -DAKANTU_PARALLEL:BOOL=TRUE + -DAKANTU_STRUCTURAL_MECHANICS:BOOL=TRUE + -DAKANTU_HEAT_TRANSFER:BOOL=TRUE + -DAKANTU_DAMAGE_NON_LOCAL:BOOL=TRUE + -DAKANTU_PHASE_FIELD:BOOL=TRUE + -DAKANTU_PYTHON_INTERFACE:BOOL=TRUE + -DAKANTU_CONTACT_MECHANICS:BOOL=TRUE + -DAKANTU_EXAMPLES:BOOL=TRUE + -DAKANTU_BUILD_ALL_EXAMPLES:BOOL=TRUE + -DAKANTU_TESTS:BOOL=TRUE + -DAKANTU_RUN_IN_DOCKER:BOOL=TRUE + -DAKANTU_TEST_EXAMPLES:BOOL=${TEST_EXAMPLES} + -DCMAKE_BUILD_TYPE:STRING=${BUILD_TYPE} + -G "${CMAKE_GENERATOR}" .. # Copy the compile commands for the code quality - if [ -e compile_commands.json ]; then - - cp compile_commands.json .. + - cp compile_commands.json .. - fi artifacts: when: on_success paths: - VERSION - compile_commands.json expire_in: 10h # Build the libraries .build_libs: stage: build_libs + extends: + - .code_only cache: - key: ${CI_COMMIT_REF_SLUG}-third-party policy: pull paths: - third-party/eigen3 - third-party/pybind11 - third-party/google-test - key: ${output}-${BUILD_TYPE}-ccache policy: pull-push paths: - .ccache/ - key: ${output}-${BUILD_TYPE}-build-${CI_COMMIT_SHORT_SHA} policy: pull-push paths: - build/ script: - echo BUILD_TYPE=${BUILD_TYPE} - cmake --build build/src - > >(tee -a build-${output}-out.log) - 2> >(tee -a build-${output}-err.log >&2) + > >(tee -a build-${output}-out.log) + 2> >(tee -a build-${output}-err.log >&2) - cmake --build build/python - > >(tee -a build-${output}-out.log) - 2> >(tee -a build-${output}-err.log >&2) + > >(tee -a build-${output}-out.log) + 2> >(tee -a build-${output}-err.log >&2) - ls build/test artifacts: when: on_success paths: - VERSION - build-${output}-err.log - compile_commands.json expire_in: 10h timeout: 5h # build the tests .build_tests: stage: build_tests + extends: + - .code_only cache: - key: ${CI_COMMIT_REF_SLUG}-third-party policy: pull paths: - third-party/eigen3 - third-party/pybind11 - third-party/google-test - key: ${output}-${BUILD_TYPE}-ccache policy: pull-push paths: - .ccache/ - key: ${output}-${BUILD_TYPE}-build-${CI_COMMIT_SHORT_SHA} policy: pull paths: - build/ script: - ls - ls build - cmake --build build/test - > >(tee -a build-${output}-out.log) - 2> >(tee -a build-${output}-err.log >&2) + > >(tee -a build-${output}-out.log) + 2> >(tee -a build-${output}-err.log >&2) - cmake --build build/examples - > >(tee -a build-${output}-out.log) - 2> >(tee -a build-${output}-err.log >&2) + > >(tee -a build-${output}-out.log) + 2> >(tee -a build-${output}-err.log >&2) artifacts: when: on_success paths: - VERSION - build-${output}-err.log - compile_commands.json - build exclude: - build/**/*.o expire_in: 10h # Run the tests .tests: stage: test + extends: + - .code_only script: - cd build - ctest -T test --output-on-failure --no-compress-output --timeout 1800 after_script: - cd build - tag=$(head -n 1 < Testing/TAG) - if [ -e Testing/${tag}/Test.xml ]; then - - xsltproc -o ./juint.xml ${CI_PROJECT_DIR}/test/ci/ctest2junit.xsl Testing/${tag}/Test.xml; + - xsltproc -o ./juint.xml ${CI_PROJECT_DIR}/test/ci/ctest2junit.xsl Testing/${tag}/Test.xml; - fi - if [ ${BUILD_TYPE} = "Coverage" ]; then - - gcovr --xml - --gcov-executable "${GCOV_EXECUTABLE}" - --xml-pretty - --exclude-unreachable-branches - --print-summary - --output coverage.xml - --object-directory ${CI_PROJECT_DIR}/build - --root ${CI_PROJECT_DIR} -s || true + - gcovr --xml + --gcov-executable "${GCOV_EXECUTABLE}" + --xml-pretty + --exclude-unreachable-branches + --print-summary + --output coverage.xml + --object-directory ${CI_PROJECT_DIR}/build + --root ${CI_PROJECT_DIR} -s || true - fi artifacts: when: always expire_in: 2 days paths: - build/juint.xml - build/coverage.xml reports: junit: - build/juint.xml coverage_report: coverage_format: cobertura path: build/coverage.xml diff --git a/doc/dev-doc/conf.py b/doc/dev-doc/conf.py index 7fb70a45c..3406857c1 100644 --- a/doc/dev-doc/conf.py +++ b/doc/dev-doc/conf.py @@ -1,349 +1,350 @@ # -*- coding: utf-8 -*- # # Configuration file for the Sphinx documentation builder. # # This file does only contain a selection of the most common options. For a # full list see the documentation: # http://www.sphinx-doc.org/en/master/config __copyright__ = ( "Copyright (©) 2020-2023 EPFL (Ecole Polytechnique Fédérale de Lausanne)" "Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides)" ) __license__ = "LGPLv3" # -- Path setup -------------------------------------------------------------- # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # import os import shutil import jinja2 # import git # import re import subprocess # -- General configuration --------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. # # needs_sphinx = '1.0' # Number figures numfig = True # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ "sphinx.ext.autodoc", "sphinx.ext.intersphinx", "sphinx.ext.coverage", "sphinx.ext.mathjax", "sphinx.ext.ifconfig", "sphinx.ext.viewcode", "sphinxcontrib.bibtex", "breathe", + "myst-parser", ] read_the_docs_build = os.environ.get("READTHEDOCS", None) == "True" cmake_configure = os.environ.get("RUNNING_IN_CMAKE", None) == "True" if read_the_docs_build: akantu_path = "." akantu_source_path = "../../" elif cmake_configure: akantu_path = "@CMAKE_CURRENT_BINARY_DIR@" akantu_source_path = "@CMAKE_SOURCE_DIR@" else: # most probably running by hand akantu_path = "build-doc" akantu_source_path = "../../" try: os.mkdir(akantu_path) except FileExistsError: pass # Add any paths that contain templates here, relative to this directory. templates_path = ["_templates"] # The suffix(es) of source filenames. # You can specify multiple suffix as a list of string: # # source_suffix = ['.rst', '.md'] source_suffix = ".rst" # The master toctree document. master_doc = "index" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. # # This is also used if you do content translation via gettext catalogs. # Usually you set "language" from the command line for these cases. language = None # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. exclude_patterns = [ "CMakeLists.txt", "manual/appendix/elements.rst", "manual/appendix/material-parameters.rst", "manual/constitutive-laws.rst", "manual/new-constitutive-laws.rst", ] # The name of the Pygments (syntax highlighting) style to use. pygments_style = "sphinx" primary_domain = "cpp" highlight_language = "cpp" bibtex_bibfiles = ["manual/manual-bibliography.bib"] # -- Project information ----------------------------------------------------- project = "Akantu" copyright = ( "2021 EPFL (Ecole Polytechnique Fédérale de Lausanne)" + " Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides)" ) author = "Nicolas Richart" # try: # tag_prefix = 'v' # git_repo = git.Repo(akantu_source_path) # git_describe = git_repo.git.describe('--tags', '--dirty', '--always', # '--long', # '--match', '{}*'.format(tag_prefix)) # print("GIT Describe: {}".format(git_describe)) # # git describe to PEP404 version # describe_matches = re.search( # (r'^{}(?P.+?)' + # r'(?:-(?P\d+)-g(?P[0-9a-f]+)' + # r'(?:-(?Pdirty))?)?$').format(tag_prefix), # git_describe) # if describe_matches: # describe_matches = describe_matches.groupdict() # release = describe_matches['version'] # if describe_matches['distance']: # release += '.' if '+' in release else '+' # release += '{distance}.{sha}'.format(**describe_matches) # if describe_matches['dirty']: # release += '.dirty' # else: # count = git_repo.git.rev_list('HEAD', '--count') # describe_matches = re.search( # (r'^(?P[0-9a-f]+)' + # r'(?:-(?Pdirty))?$').format(tag_prefix), # git_describe).groupdict() # release = '{}.{}+{}'.format(file_release, count, # describe_matches['sha']) # except git.InvalidGitRepositoryError: # with open(os.path.join(akantu_source_path, 'VERSION'), 'r') as fh: # version_file = fh.readlines() # file_release = version_file[0].strip() # release = file_release # print("Release: {} - Version: {}".format(release, version)) # -- Options for HTML output ------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # if read_the_docs_build: html_theme = "default" else: html_theme = "sphinx_rtd_theme" # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. # # html_theme_options = {} # 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_logo = "_static/logo_only_akantu.svg" # Custom sidebar templates, must be a dictionary that maps document names # to template names. # # The default sidebars (for documents that don't match any pattern) are # defined by theme itself. Builtin themes are using these templates by # default: ``['localtoc.html', 'relations.html', 'sourcelink.html', # 'searchbox.html']``. # # html_sidebars = {} html_sidebars = { "**": [ "relations.html", # needs 'show_related': True theme option to display "searchbox.html", ] } math_eqref_format = "Eq. {number}" # MathJax configuration # if not read_the_docs_build: mathjax2_config = { "extensions": ["tex2jax.js", "siunitx.js"], "TeX": { "Macros": { "st": [r"\mathrm{#1}", 1], "mat": [r"\mathbf{#1}", 1], "half": [r"\frac{1}{2}", 0], }, "extensions": ["AMSmath.js", "AMSsymbols.js", "sinuitx.js"], }, } # for old versions mathjax_config = mathjax2_config mathjax3_config = { "tex": { "macros": { "st": [r"\mathrm{#1}", 1], "mat": [r"\mathbf{#1}", 1], "half": [r"\frac{1}{2}", 0], }, "packages": ["base", "ams"], }, "loader": {"load": ["[tex]/ams"]}, } # -- Options for HTMLHelp output --------------------------------------------- # Output file base name for HTML help builder. htmlhelp_basename = "Akantudoc" # -- Options for LaTeX output ------------------------------------------------ latex_elements = { # The paper size ('letterpaper' or 'a4paper'). # # 'papersize': 'letterpaper', # The font size ('10pt', '11pt' or '12pt'). # # 'pointsize': '10pt', # Additional stuff for the LaTeX preamble. # "preamble": r"""\usepackage{amsmath}""", # Latex figure (float) alignment # # 'figure_align': 'htbp', } # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, # author, documentclass [howto, manual, or own class]). latex_documents = [ (master_doc, "Akantu.tex", "Akantu Documentation", "Nicolas Richart", "manual"), ] # -- Options for manual page output ------------------------------------------ # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [(master_doc, "akantu", "Akantu Documentation", [author], 1)] # -- Options for Texinfo output ---------------------------------------------- # Grouping the document tree into Texinfo files. List of tuples # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ ( master_doc, "Akantu", "Akantu Documentation", author, "Akantu", "One line description of project.", "Miscellaneous", ), ] # -- Options for Epub output ------------------------------------------------- # Bibliographic Dublin Core info. epub_title = project epub_author = author epub_publisher = author epub_copyright = copyright # The unique identifier of the text. This can be a ISBN number # or the project homepage. # epub_identifier = "" # A unique identification for the text. # # epub_uid = '' # A list of files that should not be packed into the epub file. epub_exclude_files = ["search.html"] # -- Extension configuration ------------------------------------------------- j2_args = {} if read_the_docs_build or not cmake_configure: j2_template_path = "." elif cmake_configure: j2_template_path = "@CMAKE_CURRENT_SOURCE_DIR@" os.makedirs(os.path.join(akantu_path, "_static"), exist_ok=True) shutil.copyfile( os.path.join("@CMAKE_CURRENT_SOURCE_DIR@", html_logo), os.path.join(akantu_path, html_logo), ) j2_args = { "akantu_source_path": akantu_source_path, } print(akantu_path) j2_env = jinja2.Environment( loader=jinja2.FileSystemLoader(j2_template_path), undefined=jinja2.DebugUndefined ) j2_template = j2_env.get_template("akantu.dox.j2") with open(os.path.join(akantu_path, "akantu.dox"), "w") as fh: fh.write(j2_template.render(j2_args)) subprocess.run(["doxygen", "akantu.dox"], cwd=akantu_path) # print("akantu_path = '{}'".format(akantu_path)) breathe_projects = {"Akantu": os.path.join(akantu_path, "xml")} breathe_default_project = "Akantu" breathe_default_members = ("members", "undoc-members") breathe_implementation_filename_extensions = [".c", ".cc", ".cpp"] breathe_show_enumvalue_initializer = True breathe_debug_trace_directives = True # -- Options for intersphinx extension --------------------------------------- intersphinx_mapping = { "numpy": ("https://docs.scipy.org/doc/numpy/", None), "scipy": ("https://docs.scipy.org/doc/scipy/reference", None), } diff --git a/doc/dev-doc/requirements.txt b/doc/dev-doc/requirements.txt index 0b39a9070..f0302b21d 100644 --- a/doc/dev-doc/requirements.txt +++ b/doc/dev-doc/requirements.txt @@ -1,7 +1,8 @@ urllib3<2 sphinx==3.4.3 sphinx-rtd-theme==0.5.2 sphinxcontrib-bibtex==2.3.0 breathe==4.30.0 jinja2==3.0.1 gitpython==3.1.18 +myst-parser