Description of frameworks
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
-
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
- 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.