READMEDEV.org 3.76 KB
Newer Older
1 2 3 4 5 6 7 8 9 10
#+TITLE: README for developers
#+LANGUAGE:  en
#+OPTIONS: H:3 num:t \n:nil @:t ::t |:t _:nil ^:nil -:t f:t *:t <:t
#+OPTIONS: TeX:t LaTeX:t skip:nil d:nil pri:nil tags:not-in-toc html-style:nil

This page is dedicated to rules and conventions that Chameleon's
developers must follow and that should be read by contributors.

* Gitlab flow: how to contribute to Chameleon

11
  Please read and follow guidelines given in the [[file:CONTRIBUTING.org][CONTRIBUTING file]].
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

** Update submodules

   Chameleon git project depends on a "submodule" git, located in
   cmake_modules/morse_cmake and hosted here
   https://gitlab.inria.fr/solverstack/morse_cmake.

   To update this submodule to the last development state, follow
   these steps:

   #+begin_src sh
   git submodule update --remote cmake_modules/morse_cmake
   git commit cmake_modules/morse_cmake -m "update morse_cmake submodule"
   git push --recurse-submodules=check
   #+end_src

* Documentation
29
  <<sec:doc>>
30
** Generate the documentation
31
*** Prerequisites
32 33

     To generate the documentation you need to have [[http://www.stack.nl/~dimitri/doxygen/][Doxygen]] and
34
     [[https://orgmode.org/][org-mode]] installed on your system.
35 36 37

     For example, on Debian systems:
     #+begin_src sh
38
     sudo apt install doxygen org-mode texlive texlive-latex-extra emacs
39 40 41 42 43
     #+end_src

*** configure + make documentation

    Enter into the Chameleon's source root directory and configure
44 45
    with *CHAMELEON_ENABLE_DOC=ON*, then generate the documentation
    with ~make doc~
46 47 48 49

    #+begin_src sh
    cd chameleon
    mkdir build && cd build
50 51
    cmake .. -DCHAMELEON_ENABLE_DOC=ON
    make doc
52 53 54 55
    #+end_src

** Rules about source code documentation

56
   Please refer to this file for the documentation guidelines [[file:doc/doxygen/README.org][README]].
57 58 59

* Naming and writting conventions

60 61
  Chameleon library started as an extension of the PLASMA library so
  that code naming and writting conventions should follow [[https://bitbucket.org/icl/plasma][PLASMA]] ones.
62

PRUVOST Florent's avatar
PRUVOST Florent committed
63
* Releasing
64 65 66 67

   A Chameleon's release is a source package, of the form
   chameleon-major.minor.patch.tar.gz, which:
   1) has been properly tested,
PRUVOST Florent's avatar
PRUVOST Florent committed
68 69 70
   2) has an up-to-date ChangeLog file,
   3) is published on internet as a GitLab release plus an associated
      git tag.
71 72 73 74 75 76 77 78

** Test Chameleon before packaging

   TODO - Write the way we could systematically test Chameleon before
   packaging, for example writting a script (generated from this
   org-mode file) to be used on PlaFRIM plus some specific ctest
   tests.

PRUVOST Florent's avatar
PRUVOST Florent committed
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
** Release generation and publication

   Releases are published on GitLab automatically through the gitlab-ci
   job /release/.

   To create a release the workflow is:
   1) ensure chameleon is ready for this release, /i.e./
      - all required features are well integrated
      - all tests succeed
      - the ChangeLog file is up-to-date
      - the version number is up-to-date in all source files
   2) create and push a branch /release-major.minor.patch/,
      major.minor.patch being the version number for the release
   3) the gitlab-ci job should produce a new release and tag according
      to the version number
      - releases: https://gitlab.inria.fr/solverstack/chameleon/releases
      - tags: https://gitlab.inria.fr/solverstack/chameleon/tags
   4) delete the branch

* CDash tests dashboard
  To see details about the tests performed during the [[https://gitlab.inria.fr/solverstack/chameleon/pipelines][pipelines]] visit
  [[https://my.cdash.org/index.php?project=Chameleon][CDash]].

* Static and dynamic analysis
  To see details about the analysis job performed during the
  [[https://gitlab.inria.fr/solverstack/chameleon/pipelines][pipelines]] visit [[https://sonarqube.bordeaux.inria.fr/sonarqube/dashboard?id=hiepacs%3Achameleon%3Agitlab%3Asolverstack%3Amaster][Sonarqube]].