The project is currently heavily WIP. It does not yet include a kernel or an init system, and the packaging is rough (both the build system and the templates themselves are in the state of flux).
Chimera is a Linux distribution with the following goals:
Chimera uses LLVM and Clang as its system toolchain. This is used to build all core components of the system.
There is currently no GCC in the source repository. The
component is used as the core runtime, and
libc++ is used as the
standard C++ library.
There are no GNU components in the base system, except currently GNU
Make (used to build a few components) and
ncurses. The rest of the
userland comes mostly from FreeBSD (no
musl libc is used as the standard C library.
Chimera has a completely new source packaging system that is not written in shell as is conventional, but rather in the Python scripting language. This reduces the build system overhead to a minimum, as well as making it introspectable and so on.
The builds are always containerized, with a minimal Chimera system being
used as the build environment for every package. This system is sandboxed
bubblewrap and run completely unprivileged.
The binary packaging system used is
apk-tools, originally from Alpine
Linux. It was chosen because of its speed and ease of integration.
The system can build itself. You can use any
musl based distribution
as the initial system, as long as it has the few required components
needed for the system build. It is also possible to bootstrap from a
completely foreign system using our scripts.
After that, Chimera uses a 3-stage bootstrap path, with stage 0 building all components needed to assemble the build container, stage 1 rebuilding itself using components from stage 0, and stage 2 rebuilding itself using components from stage 1. This is done to ensure that the final system is not influenced by the initial host system.
Chimera can target a variety of CPU architectures, including
ppc64. It is very easy to bring up
a new architecture if necessary, as long as the required LLVM components
support it - one simply needs to create a profile describing some basics
of the target architecture. The build system has full support for
cross-compiling (not only for bootstrap - all of it is cross-aware).