Basic concepts

The framework is the deployment unit used to factorize the documentation and binaries repositories of a collection of related packages. It basically contains:

  • the jekyll templated markdown or html pages describing the framework from a global point of view or more specific to packages.
  • optionally packages binaries if it is used has a binaries repository.
  • git version control information.
  • CMake projects files used to :

    • build the source static site
    • generate configuration files

frameworks have been imagined since it can become quite complex to understand the relationship between many related packages.

Framework structure

A framework is implemented as folder hierarchy inside a worskpace. This is in the same time a CMake project and a git repository.

CMake project

A framework is a CMake project structured according to the standard folder hierarchy defined below:

  • the root folder of the framework has the name of the framework. This folder is basically a git repository which allows to manage concurrent work and version control on a package’s content.
  • the .git folder contains version control related information, automatically managed by the git tool.
  • the root .gitignore file is used to exclude from version control some artefacts like temporary files.
  • the CMakeLists.txt file is used to describe how to build the framework. It also contains meta-information on the framework (authors and institutions, repository address, license, etc.).
  • the build folder contains results from build process.
  • the src folder contains hand written documentation files as well as files generated by packages. Each subdirectory has a specific role:

    • the assets folder contains static binary assets, like images, used in the framework global description.
    • the pages folder contains files used to describe the framework from a global point of view. Some of these files are pre-generated, other are hand-written.
    • the _posts folder contains specific markdown files used to notify important activities in the framework lifecycle. These files are hand written if they concern the framework as a whole, or they are automatically generated by packages when the activity concerns a specific package.
    • the _packages folder contains specific markdown files used to describe a given package belonging to the framework. It can also contain binaries for that package, in such a case the framework acts as a binary repository for the package. This folder’s content is mainly modified by packages contributing to the framework.
  • the share folder contains some specific files used by the build process.

    • the cmake subfolder contains cmake scripts (notably find scripts) that the framework uses during configuration.
    • the ci subfolder contains scripts used during continuous integration process.
  • the license.txt file contains the license that applies to the static site source code itself. This file is generated by the build process.
  • the README.md file contains the text presenting the framework in the source project online site.
  • the .gitlab-ci.yml file ise used to control and configure the continuous integration process of the framework.

Git repository

Frameworks, as any deployment unit, are also git repositories, whose content is structured according to the previously defined pattern. git is used to version all text files used (cmake scripts, html or markdown sources, etc.).

Contrarily to packages, there is no semantic version bound to a framework.