From: Wolfgang Bangerth Date: Fri, 18 Jun 2021 16:42:51 +0000 (-0600) Subject: Edit the candi section. X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c050b3ddab20343a6b26d7dd85fefe91df4027e6;p=release-papers.git Edit the candi section. --- diff --git a/9.3/paper.tex b/9.3/paper.tex index 710cf07..1c623e2 100644 --- a/9.3/paper.tex +++ b/9.3/paper.tex @@ -218,7 +218,7 @@ The major changes of this release are: \item Nine new tutorial programs and a new code gallery program (see Section~\ref{subsec:steps}). \end{itemize} % -In addition, we discuss the \texttt{candi} installation program in Section~\ref{subsec:candi}. +In addition, we discuss the \candi{} installation program in Section~\ref{subsec:candi}. While all of these major changes are discussed in detail in Section~\ref{sec:major}, there @@ -959,85 +959,71 @@ solution vector at arbitrary points (see also the %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\subsection{Source based toolchain installer} +\subsection{The ource based toolchain installer \candi{}} \label{subsec:candi} -The requirement to download, compile and install \dealii{} and its dependencies from -source is of major interest for many \dealii{}-users. -% -Compiling dependencies from source can be of importance on arbitrary Linux-based operating systems for which +The requirement to download, compile, and install \dealii{} and its dependencies from +source is a major obstacle to many \dealii{} users. +Compiling all dependencies from source can be difficult on operating systems for which binary packages aren't available or on compute clusters and other machines without root privileges for the user to install system dependencies. The source based installation of \dealii{} and its many dependent libraries can be done with the \candi{} script tool for various -Linux operating systems, within the Windows Subsystem Linux (WSL) and on OSX (experimental). +Linux operating systems, within the Windows Subsystem Linux (WSL) and +on OS X (experimental). % The general assumption is that a C, C++ and Fortran compiler and suitable MPI-compilers for the base compilers as well as the corresponding development system packages are available. -\candi is a bash-script based tool, it is the abbreviation of ``compile and install'' -and it is released under the GNU LGPL v3.0. +\candi is a bash-script based tool, is an abbreviation of ``compile and install'' +and is released under the GNU LGPL v3.0. % The origin of \candi{} is a fork made in 2013 from \texttt{dorsal}, -a retired source based installer for the \texttt{FEniCS} library. +a now-retired source based installer for the \texttt{FEniCS} library. % The \candi{} tool can be found via the download page of \dealii{} since version 8.5 -or from github.com/dealii/candi and is under active development. -To install older releases of \dealii{} toolchains one can checkout the branch -corresponding to the \dealii{}-version with \texttt{git}. - -The installer supports the user to download, unpack, compile and install a certain -library, a list of libraries or a complete toolchain. -A library is called a package within \candi{}. -The toolchain installation is the default behaviour and the default configuration +or from \url{github.com/dealii/candi}, and is under active development. +To install older releases of \dealii{} toolchains, one can check out +the \candi{} branch of the \texttt{git} repository that +corresponds to the desired \dealii{} version. + +\candi{} downloads, unpacks, compiles, and installs an individual +library (called a ``package'' in \candi{}), a list of libraries, or a complete toolchain. +The toolchain installation is the default behavior and the default configuration ensures that most of the \dealii{} step tutorials can be used directly. -The package installation mode can be handy to generate docker containers -for instance. -Especially in the toolchain mode we can check for dependencies from one library to -another and handle them accordingly. +The package installation mode is also useful to generate docker containers. +In toolchain mode, \candi{} checks for and deals appropriately with +dependencies between libraries. Each package for a library is defined by variables for its name and version, a (remote or local) download location, -its packaging format (e.g. tar, gz or zip), -a checksum to prevent from incomplete downloads, -its general build chain (e.g. using \texttt{autotools}, \texttt{cmake} and others) +its packaging format (e.g. tar, gz, or zip), +a checksum, +its general build chain (e.g., using \texttt{autotools}, \texttt{cmake}, or others), as well as configuration options. -% Moreover, one can give specific instructions for each of the steps being -necessary for the unpacking, configuration or building of the package. - -An internet connection isn't necessary -if the source files are downloaded and -repositories are checked out to its unpacking location, -e.g. from a previous run on a machine having an internet connection. -% -The download of a package can be supported via local or remote mirror servers -similar as we are doing it already for several of the packages. -% -If the temporary files of \candi{} aren't removed, one can use the developer +necessary for the unpacking, configuration, or building of a package. +A new feature allows \candi{} to skip user prompts, allowing its use in +a batch mode. + +\candi{} does all this by either downloading packages from the +internet, including through mirrors, or re-using previously downloaded +or checked out from a repository. +If temporary files of \candi{} are not removed, one can use the developer mode to prepare patches or developments for any of the packages. -% -A new feature allows \candi{} to skip user prompts which can be used for -a batch mode run on a compute cluster job for instance. -This source based installer is implemented in a modular fashion. -The \texttt{candi.sh} script is implemented without any knowledge -on a package or toolchain for a specific operating system. -Therefore, a couple of checks and setting internal variables -for known platforms are done. - -The \candi{} source based installer is organised in the following way: +\candi{} is organized in the following way: \begin{itemize} -\item \texttt{candi.sh}: the bash-script which controls the overall process. -The command line options are given by the output of ``\texttt{candi.sh -h}'' +\item \texttt{candi.sh}: the bash script which controls the overall process. +Available command line options are listed by calling ``\texttt{candi.sh -h}'' and explained in the \texttt{README.md} file. \item \texttt{candi.cfg} (or \texttt{local.cfg}): the default toolchain -configuration file. Here one can easily switch on/off important features, -give additional configuration options to \dealii{} and -define the set of packages for the toolchain. +configuration file. Here one can easily switch on/off features, +give additional configuration, and +list the packages for a toolchain. \item \texttt{deal.II-toolchain} folder: the central project folder for \dealii{}-based toolchains. @@ -1045,11 +1031,11 @@ It contains subfolders for packages (libraries, dependencies, general tools in a specific version), platforms (operating systems) and for patches to be applied after unpacking a package. - \end{itemize} -The \texttt{dealii/candi} \texttt{github} repository includes continuous -integration (CI) to ensure that new features of the script or new packages +The installer is developed in the \texttt{dealii/candi} +\texttt{github} repository, and uses continuous +integration (CI) to ensure that old and new features are working as expected.