| .. | ||
| rustup | ||
| build-in-container.py | ||
| container-build-image.py | ||
| Dockerfile | ||
| llvm-rename.sh | ||
| README.md | ||
Container build for Floss
This repo contains the Container-image build rule, used to generate the
(docker/podman) container image necessary to build Floss. If building a new
docker/podman image, run container-build-image.py with the tag floss:latest.
Container binary: setting up podman (default)
On most Debian based machines, you should be able to simply use apt-get and
install these requisite packages.
sudo apt-get install \
podman \
uidmap
Then, we need to set up podman for rootless mode:
sudo usermod --add-subuids 10000-75535 $USERNAME
sudo usermod --add-subgids 10000-75535 $USERNAME
Container binary: setting up docker (alternative)
Follow the installation instructions at: https://docs.docker.com/engine/install/, such as https://docs.docker.com/engine/install/debian/.
Also consider configuring Docker to run in rootless mode: https://docs.docker.com/engine/security/rootless/
Generating the floss-build image
Run the following to generate the required image:
container-build-image.py --tag floss:latest
If you use the docker binary, add the flag: --use-docker when running
container-build-image.py.
This uses the default tag of floss:latest so you don't have to provide it
specifically when invoking build-in-container.py.
Using the container image to build
Once the container image is built (and assuming it's tagged as floss:latest), you
should use the build-in-container.py script to build the current repo.
Basic build:
build-in-container.py
This script will use the local floss:latest (or pull it from the registry),
mount (or create) the floss-out volume to /root/.floss and the current
source to /root/src before running these commands in the container:
cd /root/src./build.py --run-bootstrap./build.py --libdir=/usr/lib/x86-64_linux_gnu/
If you want to run the build more quickly (or pass other commands), run
build-in-container.py --only-start. This will only start the container for you
(doing the correct mounts) and will print the commands it would have run via
<container_binary> exec normally.