This script is a tool to test a Gentoo ebuild and its dependencies. The idea is that the package is emerged in a clean (and current) stage3 Docker container.
You require Docker and FUSE. Docker must be configured to use the devicemapper storage driver. This can be achieved with the following inside /etc/docker/daemon.json
:
{
"storage-driver": "devicemapper"
}
We are going to assume that the user has a local git clone of the portage tree in
/usr/local/git/gentoo
We have added a new ebuild and would like to verify that the build dependencies are all correct. We can build the package (ATOM) with:
ebuildtester --portage-dir /usr/local/git/gentoo \
--atom ATOM \
--use USE1 USE2
where we have specified two USE flags, USE1 and USE2. The ebuildtester command will now create a docker container and start installing the ATOM. All specified dependencies will be installed as well.
The command understands the following command line arguments:
usage: ebuildtester [-h] [--version] [--atom ATOM [ATOM ...]] [--live-ebuild]
[--manual] --portage-dir PORTAGE_DIR
[--overlay-dir OVERLAY_DIR] [--ccache-dir CCACHE_DIR]
[--update] [--threads N] [--use USE [USE ...]]
[--global-use GLOBAL_USE [GLOBAL_USE ...]] [--unmask ATOM]
[--unstable] [--gcc-version VER] [--rm] [--pull]
[--with-X] [--with-vnc]
[--profile {default/linux/amd64/17.1,default/linux/amd64/17.1/systemd}]
[--shell-env SHELL_ENV [SHELL_ENV ...]]
A dockerized approach to test a Gentoo package within a clean stage3.
optional arguments:
-h, --help show this help message and exit
--version show program's version number and exit
--atom ATOM [ATOM ...]
The package atom(s) to install
--live-ebuild Unmask the live ebuild of the atom
--manual Install package manually
--portage-dir PORTAGE_DIR
The local portage directory
--overlay-dir OVERLAY_DIR
Add overlay dir (can be used multiple times)
--ccache-dir CCACHE_DIR
Add ccache dir
--update Update container before installing atom
--threads N Use N (default 6) threads to build packages
--use USE [USE ...] The use flags for the atom
--global-use GLOBAL_USE [GLOBAL_USE ...]
Set global USE flag
--unmask ATOM Unmask atom (can be used multiple times)
--unstable Globally 'unstable' system, i.e. ~amd64
--gcc-version VER Use gcc version VER
--rm Remove container after session is done
--pull Download latest 'gentoo/stage3-amd64' docker image
--with-X Globally enable the X USE flag
--with-vnc Install VNC server to test graphical applications
--profile {default/linux/amd64/17.1,default/linux/amd64/17.1/systemd}
The profile to use
--shell-env SHELL_ENV [SHELL_ENV ...]
Set user shell env (Example: --shell-env
"EDITOR=/usr/bin/vi")