Packaging deal.II for a Unix-like distribution
Overview
This page describes how to write packaging scripts
for deal.II. deal.II is written in
C++11 and is known to work with GCC, Clang, and Intel compilers. It is
licensed under the LGPL v2.1. We recommend reading
the porting document first for a description of
the requirements of the build system. deal.II does not
support any type of plug-in architecture for dependencies: all
dependencies must be provided at compile-time.
The only required dependency of deal.II is boost.
Examples
deal.II is already available in many Linux distributions:
for examples of packaging scripts see, e.g.,
Suggestions
-
deal.II defaults to installing several
configuration files
(LICENSE.md, README.md, detailed.log,
and summary.log) in the installation prefix. We recommend
deleting these files. LICENSE.md should be installed in the
correct directory for software licenses.
-
The CMake configuration of deal.II will determine
what compiler is being used and pick reasonable optimization and
debugging flags automatically. Further flags for debug and release mode
may be supplied by DEAL_II_CXX_FLAGS_DEBUG
and DEAL_II_CXX_FLAGS_RELEASE variables passed to CMake,
respectively.
-
The flag DEAL_II_ALLOW_PLATFORM_INTROSPECTION (enabled by
default) enables (as the name implies) CPU-specific issues (usually for
vectorization).
-
The flag DEAL_II_WITH_64BIT_INDICES changes an integral type
used for indices in the library.
-
deal.II includes copies of boost, Kokkos, muParser, TBB, and
UMFPACK. These bundled packages should be disabled
via -DDEAL_II_ALLOW_BUNDLED=OFF and these dependencies should
instead be resolved by ensuring that whenever deal.II
is installed, the packages above are also installed.
-
The standard build of GSL does not link libgsl.so against a
CBLAS implementation, which results in underlinkage
in deal.II. This is resolved, for example, in the
Arch Linux PKGBUILD script by stripping the -Wl,--as-needed
flag from the linker flags.