This contains bit of documentation in progress, or that haven't found a better location in the site yet.
A benefit in the making. When libfaketime is available it is used, some packages like make opt out of faketime building. And other packages are not reproducible without further effort, making more builds reproducible reduces amount of unneded binary update downloads, in addition to other benefits such improvements to packaging brings.
To build you need: a posix compatible shell (tested with bash, dash and busybox' ash), wget, and musl-cross installed, eid tries to download and unpack the latest version in /opt/cross. For generating bootable USB images you also need syslinux and dosfstools installed.
To generate an image, run
eid generate <target-image>
For completing the process all the way through building an usb image, you need syslinux installed on the host system, and perhaps adjusting the SYSLINUX path in the build system.
to build mrg, the microraptor gui distribution, on i486, run:
eid generate mrg
This will read mrg and compile all included packages and their dependencies, and create images. Note that the diskusage at peak - during compilation of gcc, exceeds 1.2GB.
Isthmus picks up the number of siblings a processing core has in /proc and adds the corresponding flag to make to speed up the build.
To cross-compile your own linux-kernel packages from outside - you need:
perl, make, host, gcc, busybox, binutils, musl(glibc) - these might have different names in your operating system package management.
If you encounter unexpected behavior from eid or a recipe you can enable verbose
package builds by setting the
V environment variable to any value.
This has the effect of teeing to screen what ends up in the build log which is
also accessible by running
eid log package. Here's an example:
V=1 eid add gcc
If that does not provide enough clues as to what's going on, you can turn on
eid-wide shell debugging through the
D variable, which passes any arguments to
set command. For instance, you can
set -x by running:
D=x eid rebuild
Note that eid does not pass these variables to sub-invocations of itself. For instance,
adding a package might trigger a build which will be run without the
V env vars.
Isthmus uses chroots to build packages and to provide target architecture shells. This mechanism can be augmented with jail style compartmentalization with systemd-nspawn. Enable the use of nspawn with by setting ISTHMUS_NSPAWN=1 before calling eid.
export ISTHMUS_NSPAWN=1 eid rebuild vim
There is a known issue with nspawn where due to an incomplete mapping between host and container UID's the file system becomes owned by root and the calling eid does not have permissions to manipulate it. Symptoms of this are eid reporting failures when hard-linking.
The isthmus website is a live monitor of multi-arch build, generated by eid. It uses markdown for formatting a small set of text files.
Boy, there are a lot of ARMs out there. We've aimed to provide a base compatible with as many of them as possible, but only tested on Kobo, Pi(Zero, 1, 2) and Beaglebone BLACK. Anything that supports the ARMv7 instruction set should work.
If you're trying to build things from scratch yourself on target, you might be in for some trouble. GCC has some stupidity in its automata generations (ref https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60743) and will eat way more RAM than the target often has available (1G), death by OOM killer. Fix this by increasing your swap size or using a bigger/better/badder box.
If you're trying to build some esoteric ARM be warned, there are issues with the cross compilers. Here be dragons.
We have started mirroring the musl-cross tarballs and building our own starting with musl 1.1.16.