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
.
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
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/
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
.
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.