Distribution-independent installer framework
Unfortunately, dnf treats it as an error if we try to remove a package that already did not exist. This means that, e.g., if we try to remove calamares itself, but calamares was not installed on the base image, only in the overlay, we will fail with an error. So, as long as we do not have a better solution, we ignore the exit code of "dnf remove" entirely. (yum does not show this behavior, it returns success when the package to remove is already not installed.) |
||
---|---|---|
.tx | ||
CMakeModules | ||
data/images | ||
hacking | ||
lang | ||
src | ||
.gitignore | ||
.gitmodules | ||
AUTHORS | ||
calamares.desktop | ||
CalamaresAddBrandingSubdirectory.cmake | ||
CalamaresAddLibrary.cmake | ||
CalamaresAddModuleSubdirectory.cmake | ||
CalamaresAddPlugin.cmake | ||
CalamaresBuildTreeSettings.cmake.in | ||
CalamaresConfig.cmake.in | ||
CalamaresConfigVersion.cmake.in | ||
CalamaresUse.cmake.in | ||
cmake_uninstall.cmake.in | ||
CMakeLists.txt | ||
com.github.calamares.calamares.policy | ||
HACKING.md | ||
LICENSE | ||
README.md | ||
settings.conf |
Calamares
Distribution-independent installer framework
Dependencies
- CMake >= 2.8.12
- Qt >= 5.3
- yaml-cpp >= 0.5.1
- Python >= 3.3
- Boost.Python >= 1.55.0
Additional dependencies, only for the partitioning module:
- extra-cmake-modules
- kconfig (part of KF5)
- solid (part of KF5)
- kcoreaddons (part of KF5)
- ki18n (part of KF5)
Building
$ git submodule init
$ git submodule update
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Debug ..
$ make
Design notes
Calamares is currently split as follows:
- libcalamares - the backend library,
- only depends on QtCore, yaml-cpp, Python and Boost.Python,
- provides a job queue and generic jobs,
- comes with 3 job interfaces: C++, Python and process (the latter is very limited);
- libcalamaresui - the frontend library,
- same dependencies as libcalamares, plus QtWidgets and other Qt modules,
- comes with a module loading system, for different kinds of plugins,
- themeable so branding can be done easily (plugin-based, TBD),
- presents a bunch of pages in a scripted order, enqueues jobs in the backend library;
- calamares - the main executable,
- a thin wrapper around libcalamaresui, starts up and plugs together all the parts.