Aimee OS/container-images/pipeline/head There was a failure building this commitDetails
In order to create multiple Jenkins build pipelines for this repository,
I'm splitting it up with branches. There will be a branch for each
image:
* base/main: The base image
* cross/main: The image with a cross-compiler toolchain
* build/main: The final build image
Note _/main_ in each name. The intent here is to be able to have
different "sub-branches" for each image, so e.g. there might be a
_base/dev_.
In addition to the branches for each image, there will be branches for
the shared library code as well, named like _lib/main_. The image
branches will checkout this branch using `git worktree`.
A recent update to the Gentoo repo as introduced a circular dependency
between _m4_ and _gettext_. We can avoid it by setting `USE=-nls`.
This is OK because we don't need i18n in the build environment.
Although Jenkins is supposed to be able to decode ANSI escape sequences
for terminal colors, it doesn't do so in all cases and when it does, it
doesn't seem to produce the right result for output from `emerge`.
Several log files in `/var/log` are owned by users other than root.
From outside the user namespace, these files are inaccessible to the
unprivileged user, so we need to change their ownership before we can
archive them.
During development, we leave a container running and `exec` into it
to run multiple commands. To keep the container running, we need a PID
1 process that never terminates, which we achieved previously with
Python. This technically works, but ultimately leaves a lot of zombie
processes. If we use a "true" init process for PID 1, it will clean
these up.
Aimee OS/container-images/pipeline/head There was a failure building this commitDetails
Although most software can be cross-compiled, there are quite a few edge
cases where executables built for the target system need to be run on
the build host. Notably, `ldconfig` only considers libraries for the
same machine type as the tool itself, so it's impossible to run it in a
cross-compiled root. In order to get passed these situations, we can
use QEMU in user mode to emulate the target architecture, allowing ARM
executables to run on AMD64 machines.
Aimee OS/container-images/pipeline/head This commit looks goodDetails
The _build/cross-{target}_ image only includes the crossdev toolchain.
What we really need is the _build/build-{target}_ image, which contains
all the tools necessary to build an Aimee OS project.
* Base
* Crossdev
* Build
The *Base* layer is bootstrapped from a regular Gentoo stage 3
environment. The *Build* layer is the primary artifact, and is
"squashed" into a single layer when built.