User:Juippis/The ultimate testing system with lxd

From Gentoo Wiki
Jump to:navigation Jump to:search

The ultimate way of testing ebuild contributions.

Summary: You keep a base container updated and in a tidy condition. You make copies of the base container, use the copies to test ebuild contributions, and delete the copies when you're done. This is automated as much as possible; in an ideal situation all you ever have to do, is give one command.

You can of course use this built environment to test your own ebuild modifications before pushing. Please see some examples how it works.

Pros Description
* safe (unprivileged) No root privileges or access required.
* fully isolated environment Play / test as much as you like, your live system won't break.
* runtime testing Not just build-test, but run GUI applications too.
* discardable snapshots (fast with binpkgs & SSD/NMVE) No need to constantly run emerge --depclean in your test system.
* fast set-up for single-time use If you simply need a container for one-time testing, it's usable in less than 5 minutes. But there are better alternatives for that.
* use emerge against ::gentoo repository Using emerge is much better than using ebuild to test your work.
* OpenRC <-> systemd support Need to test systemd environment, but you use OpenRC? Don't worry, LXD is here for you.
* testing multiple PRs in parallel Launch as many build tests as you wish, and they won't interfere with each other.
* need a musl system? Or a clean environment to test -native-symlinks, clang, etc.
Cons Description
* this exact environment takes a while to set-up For continuous usage, it will live on for ages. At the time of writing, my base image has been going on for 10 months with little manual maintenance.
* I/O and storage heavy Truly negatable when using SSD/NVME.
* lots of automation can break Sometimes manual intervention is required, but rarely.
* prior knowledge of LXD It helps if you've used LXD before.
* prior knowledge of git It helps if you've used git before.

Installation

We're going to need LXD to be installed in the host system.

Important
I expect you to have LXD installed, and prior knowledge of using it. In this page, we are fast-tracking the required steps to get the environment going. If this is your first time installing LXD, please refer to its own wiki page. Especially setting up networking is vital for first-time setup.
root #emerge -av app-emulation/lxd

You should expect to have at least 2-4 GB space per container, especially if they pull rust-bin, gentoo-kernel-bin etc. Therefore it might be wise to symlink /var/lib/lxd somewhere with more space available. Using an SSD/NVME is heavily suggested, as it makes all the operations happen in an instant compared to HDDs.


Configuring lxd

Add your user to newly created lxd group. chown your chosen lxd directory properly for this user.

We will use a binhost @ localhost to be used between host/container. Set up subuid & subgid for accessing binpkg repository from both in and outside the container.


Set up your container

Getting the correct container image

user $lxc remote add images https://images.linuxcontainers.org

Make sure to choose an image suited for your testing needs.

user $lxc image list images: | grep gentoo
user $lxc launch images:gentoo my-test-container

This will download a default gentoo-x86_64 container image, set it up, name it as my-test-container and start it. You can check that it works,

user $lxc list
user $lxc exec my-test-container -- su --login

But for now, we'll want to turn it off so we can configure it properly.

my-test-container #logout
user $lxc stop my-test-container


Edit the container config

default profile

You can edit the 'default' profile which, by default, gets used by containers and contain some necessary options.

user $lxc profile edit default

Note especially the network part. LXD#Setup_storage_and_networking

Container config

Accessing display from container to test GUI runtime

Edit the config file of your container.

user $lxc config edit my-test-container
config:
  environment.DISPLAY: :0.0
devices:
  X0:
    path: /tmp/.X11-unix
    source: /tmp/.X11-unix
    type: disk
  binpkgdir:
    path: /var/cache/binpkgs
    source: /home/joonas/sde1/binpkg
    type: disk
  distfiles:
    path: /var/cache/distfiles/
    source: /var/cache/distfiles/
    type: disk
  mygpu:
    type: gpu
profiles:
- default
Note
Check your DISPLAY information from e.g. xrandr or echo $DISPLAY.
Note
Sometimes it's still required to call xhost +local: or xhost + from host.


Sharing host's disk to container

With the example above, we're sharing our host's distfiles and binpkg directories with the containers.

Note
source: is the one in your host system, path: is how it shows up in container.
Note
You can share your ::gentoo repository between host and container, but it's for advanced users only. It enables you to easily test your own commits before pushing them, though, with the script shown below.
Important
Make sure your user is in portage group if you want to share your distfiles location between all containers and host!


Launching the container

Now that we've configured the relevant parts, we can launch the container. We'll construct the base container image that is kept up-to-date and clean. We'll use that to create discardable copies, where the testing happens.

user $lxc start my-test-container
user $lxc exec my-test-container -- su --login

Initiate configuration

First thing, we need to get a portage tree.

my-test-container #emerge-webrsync

Or alternatively, wget the latest portage tree from any of the mirror's /snapshots/portage-latest.tar.xz and extract it as /var/db/repos/gentoo.

Install dev-vcs/git and an editor of your choice:

my-test-container #emerge -av dev-vcs/git app-editors/emacs app-editors/vim

Now we need to initiate the git-repo, and /etc/portage/ configuration for our container. There are two ways for it:

Automatic configuration via a script

A fast and simple way is to use this script:

my-test-container #cd /root
my-test-container #chmod +x initialize_my-test-container.sh
my-test-container #./initialize_my-test-container.sh
Important
Always read through random scripts you wget from the Internet before running them!
Important
You will need to edit your custom /etc/portage/make.conf.custom file which gets sourced by make.conf. See example here.

When done, skip straight to updating your container.

Alternatively, manual configuration

Prepare the usage of git sync-repo.

my-test-container #cd /etc/portage
my-test-container #mkdir repos.conf
my-test-container #edit /etc/portage/repos.conf/gentoo.conf
FILE /etc/portage/repos.conf/gentoo.confContainer
[DEFAULT]
main-repo = gentoo

[gentoo]
location = /var/db/repos/gentoo
sync-type = git
sync-uri = https://anongit.gentoo.org/git/repo/sync/gentoo.git
auto-sync = true
sync-depth=1
Important
Make sure you're using a sync-friendly repo with metadata cache available!
Note
Using https://github.com/gentoo-mirror/gentoo is fine too, if it provides faster speeds for you.
my-test-container #rm -rf /var/db/repos/gentoo/*
my-test-container #emerge --sync
my-test-container #eselect news read

Edit relevant /etc/portage files.

my-test-container #cd /etc/portage
my-test-container #mkdir -p env package.accept_keywords package.env package.unmask package.use /var/tmp/portage/vbslogs

Edit all the relevant files you need to. make.conf, make.conf.custom, package.use/default, package.accept_keywords/default, package.mask/default, env/test.conf etc.

Always find the latest container /etc/portage config files from https://github.com/juippis/my-gentoo-lxd-scripts/tree/master/container/etc/portage and use wget to get them.

If you wish to git pull only the shell scripts used in testing pull requests, and not /etc/portage files, follow these steps:

my-test-container #cd /root
my-test-container #git clone --depth=1 https://github.com/juippis/my-gentoo-lxd-scripts.git --no-checkout lxd-bin
my-test-container #cd lxd-bin/
my-test-container #git config core.sparsecheckout true
my-test-container #echo container/bin/* > .git/info/sparse-checkout
my-test-container #git read-tree -m -u HEAD
my-test-container #echo "PATH=\"\$PATH:~/lxd-bin/container/bin\"" >> /root/.bashrc
my-test-container #cp /root/.bashrc /root/.profile

Binhost / binpkgs

With the above settings we are enabling binpkgs to be generated, and used, for everything other except packages we're actually testing. This will speed up testing process immensively. Make sure your user has correct permissions in your host to be able to write to shared binpkg directory.


Update your container

Note
If you intend to use your container for stable arch testing, obviously edit the KEYWORDS part in the make.conf above. Otherwise, grab a coffee, sit back and relax.
Important
Make sure you've correctly handled your /etc/portage directory, i.e., you have make.conf and make.conf.custom set up.
Important
Please read https://ahelpme.com/linux/tmpfs-mount-on-dev-shm-in-lxc-container-or-chroot-environment/ first, if you're using OpenRC in host system. A fast fix is to
my-test-container #mkdir -p /dev/shm
my-test-container #mount -t tmpfs -o nodev,nosuid,noexec,mode=1777,size=6144m tmpfs /dev/shm

before trying to update @world. Note that this needs to be done everytime the container is started. You can put those commands in ~/.bashrc and ~/.profile inside your container, or use lxc.raw.config.

https://github.com/juippis/my-gentoo-lxd-scripts/tree/master/container/bin repo ships a script, /root/lxd-bin/container/bin/fixshm.sh that you can call. The initialize_my-test-container.sh executes it automatically for you.

Start the update. Remember to switch profiles here if you need to.

my-test-container #emerge -uavDN @world
my-test-container #perl-cleaner --all
my-test-container #eselect news read
my-test-container #etc-update
Important
Be careful when updating /etc/inittab in container not to lose pf:12345:powerwait:/sbin/halt - it will cause container management issues.

Let's use the latest gcc.

my-test-container #gcc-config -l
my-test-container #gcc-config 2
my-test-container #source /etc/profile
Note
You can logout and login to your container for changes to take effect.

Install necessary tools

my-test-container #emerge -av app-admin/eclean-kernel app-editors/emacs app-emacs/ebuild-mode app-editors/vim app-portage/gentoolkit app-portage/pfl app-portage/portage-utils app-portage/repoman app-text/ansifilter dev-python/sphinx dev-util/pkgcheck sys-kernel/gentoo-kernel-bin x11-base/xorg-server app-portage/pkg-testing-tools
Note
Obviously, edit to your needs. The base image can be a lot smaller depending on your choices here, but testing-time will increase for ANY GUI application. xorg-server does pull llvm though.

We use pfl to help keep https://www.portagefilelist.de/ relevant since we are installing tons of different packages over time.

repoman, pkgcheck, gentoolkit and portage-utils are installed so we can edit and fix any .ebuild files we are testing.

ansifilter is for cleaner logs. Although it may bug sometimes, be aware of that.

gentoo-kernel-bin ensures we won't run into problems when emerging packages that do kernel modules. They are rare. You can easily share your hosts /usr/src/ and /lib/modules/ if you know you'll never run into these packages, as the container itself uses hosts running kernel. You won't have write access from inside the container to these directories on host, so the ebuilds will fail peacefully.

pkg-testing-tools the tool all of our testing leans onto, and our scripts depend upon.


Container-specific modifications to pkg-testing-tools

This step is optional.

Our testing depends heavily on https://github.com/slashbeast/pkg-testing-tools. To "configure" it for specific cases, we'll have to patch it directly utilizing /etc/portage/patches/.

Get the container-specific patches from here: https://github.com/juippis/my-gentoo-lxd-scripts/tree/master/pkg-testing-tool-patches

For example for general pull request testing, against =app-portage/pkg-testing-tools-0.1.0, we'd do:

my-test-container #mkdir -p /etc/portage/patches/app-portage/pkg-testing-tools-0.1.0/
my-test-container #wget https://raw.githubusercontent.com/juippis/my-gentoo-lxd-scripts/master/pkg-testing-tool-patches/mtc/0.1.0/disable-systemd-enable-flags.patch -O /etc/portage/patches/app-portage/pkg-testing-tools-0.1.0/disable-systemd-enable-flags.patch
my-test-container #emerge -av app-portage/pkg-testing-tools
Note
Depending on your use case, you might want to enable autounmasking. For KEYWORD Arch Testing work, don't do it. For general ebuild testing in ~unstable system, it might be a good idea.
Note
Be aware that currently pkg-testing-tool isn't very good at doing PYTHON_SINGLE_TARGET and LUA_SINGLE_TARGET testing, so you might want to add such test cases manually into "export USE". See https://github.com/slashbeast/pkg-testing-tools/issues/9 to track status of this bug.


Set up container scripts

If you've followed the steps above, your container should have /root/lxd-bin/container/bin/ directory with contents from https://github.com/juippis/my-gentoo-lxd-scripts/tree/master/container/bin - if you didn't use initialize_my-test-container.sh add this $PATH to your container's /root/.bashrc and /root/.profile:

FILE /root/.bashrc & /root/.profileContainer
PATH="$PATH:~/lxd-bin/container/bin"
/root/lxd-bin/container/bin/fixshm.sh

Finishing touches for your container

We'll do a world update and depclean remnants after editing our /etc/portage. Then run pfl to submit the initial list, and from now on running pfl from a snapshot-container or main container will only submit modified package list when comparing to base image.

my-test-container #emerge --update --newuse --deep --with-bdeps=y @world
my-test-container #emerge -a --depclean
my-test-container #pfl

Log out, turn off container.

my-test-container #logout

(Ctrl+d works too)

user $lxc stop my-test-container


Set up host scripts

Automatic way via git sync

user $mkdir -p ~/bin/lxd-host-scripts
user $cd ~/bin/lxd-host-scripts
user $git clone --depth=1 https://github.com/juippis/my-gentoo-lxd-scripts.git --no-checkout lxd-host-bin
user $cd lxd-host-bin/
user $git config core.sparsecheckout true
user $echo host/bin/* > .git/info/sparse-checkout
user $git read-tree -m -u HEAD
user $echo "PATH=\"\$PATH:~/bin/lxd-host-scripts/lxd-host-bin/host/bin"" >> ~/.bashrc
user $cp /root/.bashrc /root/.profile

You should now have the contents of https://github.com/juippis/my-gentoo-lxd-scripts/tree/master/host/bin in your host's user dir ~/bin/lxd-host-scripts/lxd-host-bin/host/bin. git pull occassionally to get updates.

Relog or invoke bash to get $PATH updated.

Manually by wgetting

Just take a look at https://github.com/juippis/my-gentoo-lxd-scripts/tree/master/host/bin and wget / copy-paste manually to your host user's bin dir. Add the script dir to your $PATH via ~/.bashrc and/or ~/.profile, relog or invoke bash to get $PATH updated.


Cron job to keep container up-to-date automatically

Use your desired cron system to make the host's maintenance script a cron job. In other words, ~/bin/lxd-host-scripts/lxd-host-bin/host/bin/container_maintain_my-test-container.sh can be ran to keep the base image updated.


Individual scripts explained

Host

container_maintain_my-test-container.sh

Script that attempts to gather all container's base maintenance tasks. Can be cron'd or called manually before each "test session".

container_start_my-test-container.sh

Simple helper script to do manual tasks in the base container. Rarely used.

container_start_tmptestmycontainer.sh

Sets up a generic testing environment fast. You can use this for personal stuff.

test-pr.sh

Gets a Github pull request as a parameter, and sets up a new environment to test it. Attempts to include every necessary step to confirm that the PR builds.

Container

disable-native-symlinks.sh

Quick and dirty script to disable native-symlinks. Ideally this gets called via test-pr.sh -n 12345.

errors_and_qa_notices.sh

Just an error grepper. Spams the screen for any pre-defined checks.

fixshm.sh

Required for some openrc systems to populate devices inside container.

fullget.sh

Gets the Github pull request and applies it onto ::gentoo tree. In future, any git-format patch should be appliable.

initialize_my-test-container.sh

Designed to be ran one-time only whenever a new container is launched. Makes boring tasks easier.

prtester.sh

Identifies .ebuild files that have changed against git-tree's HEAD state, and proceeds to test them.

rdeptester.sh

Give package as a parameter and it tests reverse dependencies of given package. By default it picks 6 rdeps, but with an -a flag it tests them all. Good for checking library updates which don't have test phase enabled.


Testing that everything works!

Choose any PR to your liking from https://github.com/gentoo/gentoo/pulls. Do note that it can't be CLOSED, in other words, merged to main tree as that will cause patch merging collision. And it should edit an .ebuild file, ideally adding a new .ebuild to the tree to be tested.

user $test-pr.sh 12345

You can always, at any given time log in to the container and inspect / test everything manually. This is especially handy if you spot a mistake in the .ebuild file and need to test that your modification works.

user $lxc list
user $lxc start my-test-container-snap-12345
user $lxc exec my-test-container-snap-12345 -- su --login


Examples

A couple of real-life examples with full output below.

Example 1: Simple PR with no deps. Gets ran with FEATURES="-test" and FEATURES="test".

user $test-pr.sh 19766
Initializing new test environment... this will take a while.
Applying: sci-calculators/bc-gh: bump to 3.3.3
Packages to be tested:
sci-calculators/bc-gh-3.3.3

[INFO] >>> Following testing jobs will be executed:
=sci-calculators/bc-gh-3.3.3    USE: <default flags>
[INFO] >>> Running (1 of 1) =sci-calculators/bc-gh-3.3.3 with USE: <default flags>

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  N     ] sci-calculators/bc-gh-3.3.3::gentoo  225 KiB

Total: 1 package (1 new), Size of downloads: 225 KiB

>>> Verifying ebuild manifests
>>> Emerging (1 of 1) sci-calculators/bc-gh-3.3.3::gentoo
>>> Installing (1 of 1) sci-calculators/bc-gh-3.3.3::gentoo
>>> Recording sci-calculators/bc-gh in "world" favorites file...
>>> Jobs: 1 of 1 complete                           Load avg: 0.28, 0.06, 0.02
>>> Auto-cleaning packages...

>>> No outdated packages were found on your system.

 * GNU info directory index is up-to-date.

[INFO] >>> All good.
Grepping through the logs for any errors or QA notices...
Finished grepping.
my-test-container-snap-19766 ~ # 

All looks good. Proceed to merge using pram (or if you share your ::gentoo repository between container/host, just do git push.

Example 2: PR bumping a package with some USE flags, and a test phase available.

user $test-pr.sh 19743
Initializing new test environment... this will take a while.
Applying: dev-vcs/git-cola: verbump to 3.9
Packages to be tested:
dev-vcs/git-cola-3.9

[INFO] >>> Following testing jobs will be executed:
=dev-vcs/git-cola-3.9    USE: -python_single_target_python3_7 python_single_target_python3_8 -python_single_target_python3_9
=dev-vcs/git-cola-3.9    USE: -python_single_target_python3_7 -python_single_target_python3_8 python_single_target_python3_9
=dev-vcs/git-cola-3.9    USE: python_single_target_python3_7 -python_single_target_python3_8 -python_single_target_python3_9
=dev-vcs/git-cola-3.9    USE: <default flags>, FEATURES: test
[INFO] >>> Running (1 of 4) =dev-vcs/git-cola-3.9 with USE: -python_single_target_python3_7 python_single_target_python3_8 -python_single_target_python3_9

These are the packages that would be merged, in order:

Calculating dependencies -[binary  N     ] dev-qt/qtchooser-66::gentoo  USE="-test" 0 KiB
[binary  N     ] media-gfx/graphite2-1.3.14::gentoo  USE="-perl -test" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] dev-libs/lzo-2.10:2::gentoo  USE="(split-usr) -examples -static-libs" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] dev-libs/double-conversion-3.1.5:0/3::gentoo  0 KiB
[binary  N     ] media-fonts/liberation-fonts-2.1.2::gentoo  USE="X -fontforge" 0 KiB
[binary  N     ] media-libs/libpng-1.6.37-r2:0/16::gentoo  USE="-apng -static-libs" ABI_X86="32 (64) (-x32)" CPU_FLAGS_X86="sse" 0 KiB
[binary  N     ] virtual/ttf-fonts-1-r1::gentoo  0 KiB
[binary  N     ] media-libs/freetype-2.10.4:2::gentoo  USE="X adobe-cff bzip2 cleartype_hinting png -bindist -brotli -debug -doc -fontforge -harfbuzz -infinality -static-libs -utils" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] sys-libs/binutils-libs-2.35.2-1:0/2.35.2::gentoo  USE="-64-bit-bfd (-cet) -multitarget -nls -static-libs" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] x11-libs/xcb-util-renderutil-0.3.9-r3::gentoo  ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] x11-libs/xcb-util-keysyms-0.4.0-r2::gentoo  ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] x11-libs/xcb-util-wm-0.4.1-r3::gentoo  ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] dev-python/send2trash-1.5.0-r1::gentoo  PYTHON_TARGETS="python3_7 python3_8 python3_9" 0 KiB
[binary  N     ] dev-python/PyQt5-sip-4.19.24:0/12::gentoo  PYTHON_TARGETS="python3_7 python3_8 python3_9" 0 KiB
[binary  N     ] dev-python/sip-4.19.25:0/12::gentoo  USE="-doc" PYTHON_TARGETS="python3_7 python3_8 python3_9" 0 KiB
[binary  N     ] virtual/opengl-7.0-r2::gentoo  ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] dev-qt/qtcore-5.15.2-r2:5/5.15.2::gentoo  USE="-debug -icu -old-kernel -systemd -test" 0 KiB
[binary  N     ] dev-qt/qtnetwork-5.15.2-r1:5/5.15::gentoo  USE="ssl -bindist -connman -debug -gssapi -libproxy (-libressl) -networkmanager -sctp -test" 0 KiB
[binary  N     ] dev-qt/qtxml-5.15.2:5/5.15::gentoo  USE="-debug -test" 0 KiB
[binary  N     ] x11-libs/gdk-pixbuf-2.42.2:2::gentoo  USE="introspection -gtk-doc -jpeg -tiff" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] dev-qt/qtwebsockets-5.15.2:5/5.15::gentoo  USE="ssl -debug -qml -test" 0 KiB
[binary  N     ] dev-util/gtk-update-icon-cache-3.24.26-1::gentoo  0 KiB
[binary  N     ] dev-libs/libinput-1.17.0-1:0/10::gentoo  USE="-doc -test" INPUT_DEVICES="-wacom" 0 KiB
[binary  N     ] dev-qt/qtdbus-5.15.2:5/5.15::gentoo  USE="-debug -test" 0 KiB
[binary  N     ] dev-python/dbus-python-1.2.16-r1::gentoo  USE="-doc -examples -test" PYTHON_TARGETS="python3_7 python3_8 python3_9" 0 KiB
[binary  N     ] dev-python/numpy-1.19.5::gentoo  USE="-doc -lapack -test" PYTHON_TARGETS="python3_7 python3_8 python3_9" 0 KiB
[ebuild  N     ] x11-libs/libxkbcommon-1.1.0::gentoo  USE="X -doc -static-libs -test" ABI_X86="32 (64) (-x32)" 430 KiB
[binary  N     ] media-libs/fontconfig-2.13.1-r2:1.0::gentoo  USE="-doc -static-libs" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] app-eselect/eselect-fontconfig-1.1-r1::gentoo  0 KiB
[binary  N     ] x11-libs/cairo-1.16.0-r4::gentoo  USE="X glib svg (-aqua) -debug (-gles2-only) -opengl -static-libs -utils -valgrind" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] media-libs/harfbuzz-2.7.4-1:0/0.9.18::gentoo  USE="cairo glib graphite introspection truetype -debug -doc -icu -static-libs -test" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] x11-libs/xcb-util-0.4.0-r2::gentoo  ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] x11-libs/xcb-util-image-0.4.0-r2::gentoo  ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] x11-libs/xcb-util-cursor-0.1.3-r3::gentoo  ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] dev-qt/qtgui-5.15.2-r1:5/5.15.2::gentoo  USE="X dbus gif libinput png udev -accessibility -debug -egl -eglfs -evdev -gles2-only -ibus -jpeg -test -tslib -tuio -vnc -vulkan -wayland" 0 KiB
[binary  N     ] dev-qt/qtwidgets-5.15.2:5/5.15::gentoo  USE="X png -debug -gles2-only -gtk -test" 0 KiB
[binary  N     ] dev-qt/qtsvg-5.15.2:5/5.15::gentoo  USE="-debug -test" 0 KiB
[ebuild  N     ] dev-python/PyQt5-5.15.2::gentoo  USE="dbus gui network ssl svg websockets widgets -bluetooth -debug -declarative -designer -examples -gles2-only -help -location -multimedia -networkauth -opengl -positioning -printsupport -sensors -serialport -sql -testlib -webchannel -webkit -x11extras -xmlpatterns" PYTHON_TARGETS="python3_7 python3_8 python3_9" 0 KiB
[ebuild  N     ] dev-python/QtPy-1.9.0-r2::gentoo  USE="gui -designer -opengl -printsupport -svg -testlib -webengine" PYTHON_TARGETS="python3_7 python3_8 python3_9" 0 KiB
[ebuild  N     ] dev-vcs/git-cola-3.9::gentoo  USE="-doc -test" PYTHON_SINGLE_TARGET="python3_8 -python3_7 -python3_9" 970 KiB

Total: 40 packages (40 new, 36 binaries), Size of downloads: 1399 KiB

The following USE changes are necessary to proceed:
 (see "package.use" in the portage(5) man page for more details)
# required by dev-vcs/git-cola-3.9::gentoo[python_single_target_python3_8]
# required by =dev-vcs/git-cola-3.9 (argument)
=dev-python/QtPy-1.9.0-r2 gui

Autounmask changes successfully written.                                                                     ... done!
[binary  N     ] dev-qt/qtchooser-66::gentoo  USE="-test" 0 KiB
[binary  N     ] media-gfx/graphite2-1.3.14::gentoo  USE="-perl -test" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] dev-libs/lzo-2.10:2::gentoo  USE="(split-usr) -examples -static-libs" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] dev-libs/double-conversion-3.1.5:0/3::gentoo  0 KiB
[binary  N     ] media-fonts/liberation-fonts-2.1.2::gentoo  USE="X -fontforge" 0 KiB
[binary  N     ] media-libs/libpng-1.6.37-r2:0/16::gentoo  USE="-apng -static-libs" ABI_X86="32 (64) (-x32)" CPU_FLAGS_X86="sse" 0 KiB
[binary  N     ] virtual/ttf-fonts-1-r1::gentoo  0 KiB
[binary  N     ] media-libs/freetype-2.10.4:2::gentoo  USE="X adobe-cff bzip2 cleartype_hinting png -bindist -brotli -debug -doc -fontforge -harfbuzz -infinality -static-libs -utils" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] sys-libs/binutils-libs-2.35.2-1:0/2.35.2::gentoo  USE="-64-bit-bfd (-cet) -multitarget -nls -static-libs" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] x11-libs/xcb-util-renderutil-0.3.9-r3::gentoo  ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] x11-libs/xcb-util-keysyms-0.4.0-r2::gentoo  ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] x11-libs/xcb-util-wm-0.4.1-r3::gentoo  ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] dev-python/send2trash-1.5.0-r1::gentoo  PYTHON_TARGETS="python3_7 python3_8 python3_9" 0 KiB
[binary  N     ] dev-python/PyQt5-sip-4.19.24:0/12::gentoo  PYTHON_TARGETS="python3_7 python3_8 python3_9" 0 KiB
[binary  N     ] dev-python/sip-4.19.25:0/12::gentoo  USE="-doc" PYTHON_TARGETS="python3_7 python3_8 python3_9" 0 KiB
[binary  N     ] virtual/opengl-7.0-r2::gentoo  ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] dev-qt/qtcore-5.15.2-r2:5/5.15.2::gentoo  USE="-debug -icu -old-kernel -systemd -test" 0 KiB
[binary  N     ] dev-qt/qtnetwork-5.15.2-r1:5/5.15::gentoo  USE="ssl -bindist -connman -debug -gssapi -libproxy (-libressl) -networkmanager -sctp -test" 0 KiB
[binary  N     ] dev-qt/qtxml-5.15.2:5/5.15::gentoo  USE="-debug -test" 0 KiB
[binary  N     ] x11-libs/gdk-pixbuf-2.42.2:2::gentoo  USE="introspection -gtk-doc -jpeg -tiff" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] dev-qt/qtwebsockets-5.15.2:5/5.15::gentoo  USE="ssl -debug -qml -test" 0 KiB
[binary  N     ] dev-util/gtk-update-icon-cache-3.24.26-1::gentoo  0 KiB
[binary  N     ] dev-libs/libinput-1.17.0-1:0/10::gentoo  USE="-doc -test" INPUT_DEVICES="-wacom" 0 KiB
[binary  N     ] dev-qt/qtdbus-5.15.2:5/5.15::gentoo  USE="-debug -test" 0 KiB
[binary  N     ] dev-python/dbus-python-1.2.16-r1::gentoo  USE="-doc -examples -test" PYTHON_TARGETS="python3_7 python3_8 python3_9" 0 KiB
[binary  N     ] dev-python/numpy-1.19.5::gentoo  USE="-doc -lapack -test" PYTHON_TARGETS="python3_7 python3_8 python3_9" 0 KiB
[ebuild  N     ] x11-libs/libxkbcommon-1.1.0::gentoo  USE="X -doc -static-libs -test" ABI_X86="32 (64) (-x32)" 430 KiB
[binary  N     ] media-libs/fontconfig-2.13.1-r2:1.0::gentoo  USE="-doc -static-libs" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] app-eselect/eselect-fontconfig-1.1-r1::gentoo  0 KiB
[binary  N     ] x11-libs/cairo-1.16.0-r4::gentoo  USE="X glib svg (-aqua) -debug (-gles2-only) -opengl -static-libs -utils -valgrind" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] media-libs/harfbuzz-2.7.4-1:0/0.9.18::gentoo  USE="cairo glib graphite introspection truetype -debug -doc -icu -static-libs -test" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] x11-libs/xcb-util-0.4.0-r2::gentoo  ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] x11-libs/xcb-util-image-0.4.0-r2::gentoo  ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] x11-libs/xcb-util-cursor-0.1.3-r3::gentoo  ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] dev-qt/qtgui-5.15.2-r1:5/5.15.2::gentoo  USE="X dbus gif libinput png udev -accessibility -debug -egl -eglfs -evdev -gles2-only -ibus -jpeg -test -tslib -tuio -vnc -vulkan -wayland" 0 KiB
[binary  N     ] dev-qt/qtwidgets-5.15.2:5/5.15::gentoo  USE="X png -debug -gles2-only -gtk -test" 0 KiB
[binary  N     ] dev-qt/qtsvg-5.15.2:5/5.15::gentoo  USE="-debug -test" 0 KiB
[ebuild  N     ] dev-python/PyQt5-5.15.2::gentoo  USE="dbus gui network ssl svg websockets widgets -bluetooth -debug -declarative -designer -examples -gles2-only -help -location -multimedia -networkauth -opengl -positioning -printsupport -sensors -serialport -sql -testlib -webchannel -webkit -x11extras -xmlpatterns" PYTHON_TARGETS="python3_7 python3_8 python3_9" 0 KiB
[ebuild  N     ] dev-python/QtPy-1.9.0-r2::gentoo  USE="gui -designer -opengl -printsupport -svg -testlib -webengine" PYTHON_TARGETS="python3_7 python3_8 python3_9" 0 KiB
[ebuild  N     ] dev-vcs/git-cola-3.9::gentoo  USE="-doc -test" PYTHON_SINGLE_TARGET="python3_8 -python3_7 -python3_9" 970 KiB

Total: 40 packages (40 new, 36 binaries), Size of downloads: 1399 KiB

>>> Verifying ebuild manifests
>>> Running pre-merge checks for dev-qt/qtcore-5.15.2-r2
>>> Emerging binary (1 of 40) dev-qt/qtchooser-66::gentoo
>>> Emerging binary (2 of 40) media-gfx/graphite2-1.3.14::gentoo
>>> Emerging binary (3 of 40) dev-libs/lzo-2.10::gentoo
>>> Emerging binary (4 of 40) dev-libs/double-conversion-3.1.5::gentoo
>>> Emerging binary (5 of 40) media-fonts/liberation-fonts-2.1.2::gentoo
>>> Emerging binary (6 of 40) media-libs/libpng-1.6.37-r2::gentoo
>>> Emerging binary (7 of 40) sys-libs/binutils-libs-2.35.2::gentoo
>>> Emerging binary (8 of 40) x11-libs/xcb-util-renderutil-0.3.9-r3::gentoo
>>> Installing (1 of 40) dev-qt/qtchooser-66::gentoo
>>> Emerging binary (9 of 40) x11-libs/xcb-util-keysyms-0.4.0-r2::gentoo
>>> Installing (8 of 40) x11-libs/xcb-util-renderutil-0.3.9-r3::gentoo
>>> Emerging binary (10 of 40) x11-libs/xcb-util-wm-0.4.1-r3::gentoo
>>> Installing (5 of 40) media-fonts/liberation-fonts-2.1.2::gentoo
>>> Emerging binary (11 of 40) dev-python/send2trash-1.5.0-r1::gentoo
>>> Installing (6 of 40) media-libs/libpng-1.6.37-r2::gentoo
>>> Emerging binary (12 of 40) dev-python/PyQt5-sip-4.19.24::gentoo
>>> Installing (7 of 40) sys-libs/binutils-libs-2.35.2::gentoo
>>> Emerging binary (13 of 40) virtual/ttf-fonts-1-r1::gentoo
>>> Installing (2 of 40) media-gfx/graphite2-1.3.14::gentoo
>>> Emerging binary (14 of 40) media-libs/freetype-2.10.4::gentoo
>>> Installing (3 of 40) dev-libs/lzo-2.10::gentoo
>>> Emerging binary (15 of 40) dev-python/sip-4.19.25::gentoo
>>> Installing (4 of 40) dev-libs/double-conversion-3.1.5::gentoo
>>> Emerging binary (16 of 40) virtual/opengl-7.0-r2::gentoo
>>> Installing (9 of 40) x11-libs/xcb-util-keysyms-0.4.0-r2::gentoo
>>> Emerging binary (17 of 40) dev-qt/qtcore-5.15.2-r2::gentoo
>>> Installing (10 of 40) x11-libs/xcb-util-wm-0.4.1-r3::gentoo
>>> Emerging binary (18 of 40) x11-libs/gdk-pixbuf-2.42.2::gentoo
>>> Installing (11 of 40) dev-python/send2trash-1.5.0-r1::gentoo
>>> Emerging binary (19 of 40) dev-libs/libinput-1.17.0::gentoo
>>> Installing (12 of 40) dev-python/PyQt5-sip-4.19.24::gentoo
>>> Emerging binary (20 of 40) dev-python/dbus-python-1.2.16-r1::gentoo
>>> Installing (13 of 40) virtual/ttf-fonts-1-r1::gentoo
>>> Emerging binary (21 of 40) dev-python/numpy-1.19.5::gentoo
>>> Installing (14 of 40) media-libs/freetype-2.10.4::gentoo
>>> Emerging (22 of 40) x11-libs/libxkbcommon-1.1.0::gentoo
>>> Installing (15 of 40) dev-python/sip-4.19.25::gentoo
>>> Emerging binary (23 of 40) media-libs/fontconfig-2.13.1-r2::gentoo
>>> Installing (16 of 40) virtual/opengl-7.0-r2::gentoo
>>> Emerging binary (24 of 40) x11-libs/xcb-util-0.4.0-r2::gentoo
>>> Installing (18 of 40) x11-libs/gdk-pixbuf-2.42.2::gentoo
>>> Installing (19 of 40) dev-libs/libinput-1.17.0::gentoo
>>> Installing (17 of 40) dev-qt/qtcore-5.15.2-r2::gentoo
>>> Emerging binary (25 of 40) dev-util/gtk-update-icon-cache-3.24.26::gentoo
>>> Installing (20 of 40) dev-python/dbus-python-1.2.16-r1::gentoo
>>> Installing (23 of 40) media-libs/fontconfig-2.13.1-r2::gentoo
>>> Installing (21 of 40) dev-python/numpy-1.19.5::gentoo
>>> Emerging binary (26 of 40) dev-qt/qtnetwork-5.15.2-r1::gentoo
>>> Emerging binary (27 of 40) dev-qt/qtxml-5.15.2::gentoo
>>> Emerging binary (28 of 40) dev-qt/qtdbus-5.15.2::gentoo
>>> Emerging binary (29 of 40) app-eselect/eselect-fontconfig-1.1-r1::gentoo
>>> Installing (24 of 40) x11-libs/xcb-util-0.4.0-r2::gentoo
>>> Installing (25 of 40) dev-util/gtk-update-icon-cache-3.24.26::gentoo
>>> Emerging binary (30 of 40) x11-libs/xcb-util-image-0.4.0-r2::gentoo
>>> Installing (26 of 40) dev-qt/qtnetwork-5.15.2-r1::gentoo
>>> Installing (29 of 40) app-eselect/eselect-fontconfig-1.1-r1::gentoo
>>> Installing (22 of 40) x11-libs/libxkbcommon-1.1.0::gentoo
>>> Emerging binary (31 of 40) dev-qt/qtwebsockets-5.15.2::gentoo
>>> Installing (28 of 40) dev-qt/qtdbus-5.15.2::gentoo
>>> Installing (27 of 40) dev-qt/qtxml-5.15.2::gentoo
>>> Emerging binary (32 of 40) x11-libs/cairo-1.16.0-r4::gentoo
>>> Installing (30 of 40) x11-libs/xcb-util-image-0.4.0-r2::gentoo
>>> Installing (31 of 40) dev-qt/qtwebsockets-5.15.2::gentoo
>>> Emerging binary (33 of 40) x11-libs/xcb-util-cursor-0.1.3-r3::gentoo
>>> Installing (32 of 40) x11-libs/cairo-1.16.0-r4::gentoo
>>> Emerging binary (34 of 40) media-libs/harfbuzz-2.7.4::gentoo
>>> Installing (33 of 40) x11-libs/xcb-util-cursor-0.1.3-r3::gentoo
>>> Installing (34 of 40) media-libs/harfbuzz-2.7.4::gentoo
>>> Emerging binary (35 of 40) dev-qt/qtgui-5.15.2-r1::gentoo
>>> Installing (35 of 40) dev-qt/qtgui-5.15.2-r1::gentoo
>>> Emerging binary (36 of 40) dev-qt/qtwidgets-5.15.2::gentoo
>>> Installing (36 of 40) dev-qt/qtwidgets-5.15.2::gentoo
>>> Emerging binary (37 of 40) dev-qt/qtsvg-5.15.2::gentoo
>>> Installing (37 of 40) dev-qt/qtsvg-5.15.2::gentoo
>>> Emerging (38 of 40) dev-python/PyQt5-5.15.2::gentoo
>>> Installing (38 of 40) dev-python/PyQt5-5.15.2::gentoo
>>> Emerging (39 of 40) dev-python/QtPy-1.9.0-r2::gentoo
>>> Installing (39 of 40) dev-python/QtPy-1.9.0-r2::gentoo
>>> Emerging (40 of 40) dev-vcs/git-cola-3.9::gentoo
>>> Installing (40 of 40) dev-vcs/git-cola-3.9::gentoo
>>> Recording dev-vcs/git-cola in "world" favorites file...
>>> Jobs: 40 of 40 complete                         Load avg: 4.74, 6.39, 3.82

 * Messages for package media-fonts/liberation-fonts-2.1.2:

 * The following fontconfig configuration files have been installed:
 * 
 *   60-liberation.conf
 * 
 * Use `eselect fontconfig` to enable/disable them.

 * Messages for package dev-qt/qtcore-5.15.2-r2:

 * Generated gentoo-qconfig.h is empty

 * Messages for package media-libs/fontconfig-2.13.1-r2:

 * Please make fontconfig configuration changes using `eselect
 * fontconfig`. Any changes made to /etc/fonts/fonts.conf will be
 * overwritten. If you need to reset your configuration to upstream
 * defaults, delete the directory /etc/fonts/conf.d/ and re-emerge
 * fontconfig.
 * 
 * (Note: Above message is only printed the first time package is
 * installed. Please look at /usr/share/doc/fontconfig-2.13.1-r2/README.gentoo*
 * for future reference)
>>> Auto-cleaning packages...

>>> No outdated packages were found on your system.

 * Regenerating GNU info directory index...
 * Processed 84 info files.

[INFO] >>> Running (2 of 4) =dev-vcs/git-cola-3.9 with USE: -python_single_target_python3_7 -python_single_target_python3_8 python_single_target_python3_9

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R    ] dev-vcs/git-cola-3.9::gentoo  USE="-doc -test" PYTHON_SINGLE_TARGET="python3_9* -python3_7 -python3_8*" 0 KiB

Total: 1 package (1 reinstall), Size of downloads: 0 KiB

>>> Verifying ebuild manifests
>>> Emerging (1 of 1) dev-vcs/git-cola-3.9::gentoo
>>> Installing (1 of 1) dev-vcs/git-cola-3.9::gentoo
>>> Jobs: 1 of 1 complete                           Load avg: 4.16, 6.21, 3.79
>>> Auto-cleaning packages...

>>> No outdated packages were found on your system.

 * GNU info directory index is up-to-date.

[INFO] >>> Running (3 of 4) =dev-vcs/git-cola-3.9 with USE: python_single_target_python3_7 -python_single_target_python3_8 -python_single_target_python3_9

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R    ] dev-vcs/git-cola-3.9::gentoo  USE="-doc -test" PYTHON_SINGLE_TARGET="python3_7* -python3_8 -python3_9*" 0 KiB

Total: 1 package (1 reinstall), Size of downloads: 0 KiB

>>> Verifying ebuild manifests
>>> Emerging (1 of 1) dev-vcs/git-cola-3.9::gentoo
>>> Installing (1 of 1) dev-vcs/git-cola-3.9::gentoo
>>> Jobs: 1 of 1 complete                           Load avg: 3.68, 6.04, 3.76
>>> Auto-cleaning packages...

>>> No outdated packages were found on your system.

 * GNU info directory index is up-to-date.

[INFO] >>> Running (4 of 4) =dev-vcs/git-cola-3.9 with USE: <default flags>, FEATURES: test

These are the packages that would be merged, in order:

Calculating dependencies... done!
[binary  N     ] dev-python/iniconfig-1.1.1::gentoo  USE="-test" PYTHON_TARGETS="pypy3 python3_7 python3_8 python3_9" 0 KiB
[binary  N     ] dev-python/more-itertools-8.7.0::gentoo  USE="-doc" PYTHON_TARGETS="pypy3 python3_7 python3_8 python3_9" 0 KiB
[binary  N     ] dev-python/py-1.10.0::gentoo  USE="-doc -test" PYTHON_TARGETS="pypy3 python3_7 python3_8 python3_9" 0 KiB
[binary  N     ] dev-python/typing-extensions-3.7.4.3::gentoo  PYTHON_TARGETS="pypy3 python3_7 python3_8 python3_9" 0 KiB
[binary  N     ] dev-python/importlib_metadata-3.7.0-1::gentoo  USE="-doc -test" PYTHON_TARGETS="pypy3 python3_7 python3_8" 0 KiB
[binary  N     ] dev-python/mock-4.0.3::gentoo  PYTHON_TARGETS="pypy3 python3_7 python3_8 python3_9" 0 KiB
[binary  N     ] x11-apps/xhost-1.0.8::gentoo  USE="ipv6" 0 KiB
[binary  N     ] dev-python/pluggy-0.13.1-r1::gentoo  USE="-test" PYTHON_TARGETS="pypy3 python3_7 python3_8 python3_9" 0 KiB
[binary  N     ] dev-python/nose-1.3.7-r7-1::gentoo  USE="-coverage -examples -test" PYTHON_TARGETS="pypy3 python3_7 python3_8 python3_9" 0 KiB
[binary  N     ] dev-python/namespace-zope-1-r1::gentoo  PYTHON_TARGETS="pypy3 python3_7 python3_8 python3_9" 0 KiB
[binary  N     ] dev-python/zope-interface-5.2.0::gentoo  USE="-test" PYTHON_TARGETS="pypy3 python3_7 python3_8 python3_9" 0 KiB
[binary  N     ] dev-python/attrs-20.3.0::gentoo  USE="-test" PYTHON_TARGETS="pypy3 python3_7 python3_8 python3_9" 0 KiB
[binary  N     ] dev-python/pytest-6.2.2::gentoo  USE="-test" PYTHON_TARGETS="pypy3 python3_7 python3_8 python3_9" 0 KiB
[ebuild   R    ] dev-vcs/git-cola-3.9::gentoo  USE="test* -doc" PYTHON_SINGLE_TARGET="python3_8* -python3_7* -python3_9" 0 KiB

Total: 14 packages (13 new, 1 reinstall, 13 binaries), Size of downloads: 0 KiB

>>> Verifying ebuild manifests
>>> Emerging binary (1 of 14) dev-python/iniconfig-1.1.1::gentoo
>>> Emerging binary (2 of 14) dev-python/more-itertools-8.7.0::gentoo
>>> Emerging binary (3 of 14) dev-python/py-1.10.0::gentoo
>>> Emerging binary (4 of 14) dev-python/typing-extensions-3.7.4.3::gentoo
>>> Emerging binary (5 of 14) dev-python/mock-4.0.3::gentoo
>>> Emerging binary (6 of 14) x11-apps/xhost-1.0.8::gentoo
>>> Emerging binary (7 of 14) dev-python/nose-1.3.7-r7::gentoo
>>> Emerging binary (8 of 14) dev-python/namespace-zope-1-r1::gentoo
>>> Installing (1 of 14) dev-python/iniconfig-1.1.1::gentoo
>>> Installing (6 of 14) x11-apps/xhost-1.0.8::gentoo
>>> Installing (2 of 14) dev-python/more-itertools-8.7.0::gentoo
>>> Installing (5 of 14) dev-python/mock-4.0.3::gentoo
>>> Installing (3 of 14) dev-python/py-1.10.0::gentoo
>>> Installing (4 of 14) dev-python/typing-extensions-3.7.4.3::gentoo
>>> Emerging binary (9 of 14) dev-python/importlib_metadata-3.7.0::gentoo
>>> Installing (7 of 14) dev-python/nose-1.3.7-r7::gentoo
>>> Installing (8 of 14) dev-python/namespace-zope-1-r1::gentoo
>>> Installing (9 of 14) dev-python/importlib_metadata-3.7.0::gentoo
>>> Emerging binary (10 of 14) dev-python/zope-interface-5.2.0::gentoo
>>> Emerging binary (11 of 14) dev-python/pluggy-0.13.1-r1::gentoo
>>> Installing (11 of 14) dev-python/pluggy-0.13.1-r1::gentoo
>>> Installing (10 of 14) dev-python/zope-interface-5.2.0::gentoo
>>> Emerging binary (12 of 14) dev-python/attrs-20.3.0::gentoo
>>> Installing (12 of 14) dev-python/attrs-20.3.0::gentoo
>>> Emerging binary (13 of 14) dev-python/pytest-6.2.2::gentoo
>>> Installing (13 of 14) dev-python/pytest-6.2.2::gentoo
>>> Emerging (14 of 14) dev-vcs/git-cola-3.9::gentoo
>>> Installing (14 of 14) dev-vcs/git-cola-3.9::gentoo
>>> Jobs: 14 of 14 complete                         Load avg: 1.43, 4.75, 3.50
>>> Auto-cleaning packages...

>>> No outdated packages were found on your system.

 * GNU info directory index is up-to-date.

[INFO] >>> All good.
Grepping through the logs for any errors or QA notices...
Finished grepping.
my-test-container-snap-19743 ~ # 

All looks good. Proceed to merge using pram (or if you share your ::gentoo repository between container/host, just do git push.

Example 3: A PR with multiple commits touching different packages:

user $test-pr.sh 19675
Initializing new test environment... this will take a while.
Applying: games-board/gambit: Switch to cmake.eclass, add missing desktop.eclass
Applying: media-libs/libprojectm: Drop 2.1.0-r2
Applying: media-gfx/openvdb: Drop 4.0.2-r4, 5.2.0-r2, 6.2.1-r1
Applying: dev-libs/uriparser: Fix EAPI-7 bump BDEPENDs, use cmake.eclass
Applying: dev-libs/uriparser: Drop 0.9.1 and 0.9.3
Applying: net-libs/libnetfilter_cthelper: Drop 1.0.0 (r0)
Packages to be tested:
dev-libs/uriparser-0.9.4 games-board/gambit-1.0.4-r1

[INFO] >>> Following testing jobs will be executed:
=games-board/gambit-1.0.4-r1    USE: <default flags>, FEATURES: test
[INFO] >>> Running (1 of 1) =games-board/gambit-1.0.4-r1 with USE: <default flags>, FEATURES: test

These are the packages that would be merged, in order:

Calculating dependencies... done!
[binary  N     ] dev-qt/qtchooser-66::gentoo  USE="-test" 0 KiB
[binary  N     ] media-gfx/graphite2-1.3.14::gentoo  USE="-perl -test" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] dev-libs/lzo-2.10:2::gentoo  USE="(split-usr) -examples -static-libs" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] dev-libs/double-conversion-3.1.5:0/3::gentoo  0 KiB
[binary  N     ] media-fonts/liberation-fonts-2.1.2::gentoo  USE="X -fontforge" 0 KiB
[binary  N     ] media-libs/libpng-1.6.37-r2:0/16::gentoo  USE="-apng -static-libs" ABI_X86="32 (64) (-x32)" CPU_FLAGS_X86="sse" 0 KiB
[binary  N     ] virtual/ttf-fonts-1-r1::gentoo  0 KiB
[binary  N     ] media-libs/freetype-2.10.4:2::gentoo  USE="X adobe-cff bzip2 cleartype_hinting png -bindist -brotli -debug -doc -fontforge -harfbuzz -infinality -static-libs -utils" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] sys-libs/binutils-libs-2.35.2-1:0/2.35.2::gentoo  USE="-64-bit-bfd (-cet) -multitarget -nls -static-libs" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] x11-libs/xcb-util-renderutil-0.3.9-r3::gentoo  ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] x11-libs/xcb-util-keysyms-0.4.0-r2::gentoo  ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] x11-libs/xcb-util-wm-0.4.1-r3::gentoo  ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] x11-libs/libxkbcommon-1.1.0::gentoo  USE="X -doc -static-libs -test" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] virtual/opengl-7.0-r2::gentoo  ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] dev-qt/qtcore-5.15.2-r2:5/5.15.2::gentoo  USE="-debug -icu -old-kernel -systemd -test" 0 KiB
[binary  N     ] dev-qt/qtnetwork-5.15.2-r1:5/5.15::gentoo  USE="ssl -bindist -connman -debug -gssapi -libproxy (-libressl) -networkmanager -sctp -test" 0 KiB
[binary  N     ] x11-libs/gdk-pixbuf-2.42.2:2::gentoo  USE="introspection -gtk-doc -jpeg -tiff" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] dev-util/gtk-update-icon-cache-3.24.26-1::gentoo  0 KiB
[binary  N     ] dev-libs/libinput-1.17.0-1:0/10::gentoo  USE="-doc -test" INPUT_DEVICES="-wacom" 0 KiB
[binary  N     ] dev-qt/qtdbus-5.15.2:5/5.15::gentoo  USE="-debug -test" 0 KiB
[binary  N     ] media-libs/fontconfig-2.13.1-r2:1.0::gentoo  USE="-doc -static-libs" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] app-eselect/eselect-fontconfig-1.1-r1::gentoo  0 KiB
[binary  N     ] x11-libs/cairo-1.16.0-r4::gentoo  USE="X glib svg (-aqua) -debug (-gles2-only) -opengl -static-libs -utils -valgrind" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] media-libs/harfbuzz-2.7.4-1:0/0.9.18::gentoo  USE="cairo glib graphite introspection truetype -debug -doc -icu -static-libs -test" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] x11-libs/xcb-util-0.4.0-r2::gentoo  ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] x11-libs/xcb-util-image-0.4.0-r2::gentoo  ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] x11-libs/xcb-util-cursor-0.1.3-r3::gentoo  ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] dev-qt/qtgui-5.15.2-r1:5/5.15.2::gentoo  USE="X dbus gif libinput png udev -accessibility -debug -egl -eglfs -evdev -gles2-only -ibus -jpeg -test -tslib -tuio -vnc -vulkan -wayland" 0 KiB
[binary  N     ] dev-qt/qtwidgets-5.15.2:5/5.15::gentoo  USE="X png -debug -gles2-only -gtk -test" 0 KiB
[binary  N     ] dev-qt/qtopengl-5.15.2:5/5.15::gentoo  USE="-debug -gles2-only -test" 0 KiB
[ebuild  N     ] games-board/gambit-1.0.4-r1::gentoo  1637 KiB

Total: 31 packages (31 new, 30 binaries), Size of downloads: 1637 KiB

>>> Verifying ebuild manifests
>>> Running pre-merge checks for dev-qt/qtcore-5.15.2-r2
>>> Emerging binary (1 of 31) dev-qt/qtchooser-66::gentoo
>>> Emerging binary (2 of 31) media-gfx/graphite2-1.3.14::gentoo
>>> Emerging binary (3 of 31) dev-libs/lzo-2.10::gentoo
>>> Emerging binary (4 of 31) dev-libs/double-conversion-3.1.5::gentoo
>>> Emerging binary (5 of 31) media-fonts/liberation-fonts-2.1.2::gentoo
>>> Emerging binary (6 of 31) media-libs/libpng-1.6.37-r2::gentoo
>>> Emerging binary (7 of 31) sys-libs/binutils-libs-2.35.2::gentoo
>>> Emerging binary (8 of 31) x11-libs/xcb-util-renderutil-0.3.9-r3::gentoo
>>> Installing (3 of 31) dev-libs/lzo-2.10::gentoo
>>> Emerging binary (9 of 31) x11-libs/xcb-util-keysyms-0.4.0-r2::gentoo
>>> Installing (1 of 31) dev-qt/qtchooser-66::gentoo
>>> Emerging binary (10 of 31) x11-libs/xcb-util-wm-0.4.1-r3::gentoo
>>> Installing (5 of 31) media-fonts/liberation-fonts-2.1.2::gentoo
>>> Emerging binary (11 of 31) x11-libs/libxkbcommon-1.1.0::gentoo
>>> Installing (2 of 31) media-gfx/graphite2-1.3.14::gentoo
>>> Emerging binary (12 of 31) virtual/opengl-7.0-r2::gentoo
>>> Installing (8 of 31) x11-libs/xcb-util-renderutil-0.3.9-r3::gentoo
>>> Emerging binary (13 of 31) virtual/ttf-fonts-1-r1::gentoo
>>> Installing (6 of 31) media-libs/libpng-1.6.37-r2::gentoo
>>> Emerging binary (14 of 31) dev-libs/libinput-1.17.0::gentoo
>>> Installing (7 of 31) sys-libs/binutils-libs-2.35.2::gentoo
>>> Emerging binary (15 of 31) media-libs/freetype-2.10.4::gentoo
>>> Installing (4 of 31) dev-libs/double-conversion-3.1.5::gentoo
>>> Emerging binary (16 of 31) x11-libs/gdk-pixbuf-2.42.2::gentoo
>>> Installing (9 of 31) x11-libs/xcb-util-keysyms-0.4.0-r2::gentoo
>>> Emerging binary (17 of 31) dev-qt/qtcore-5.15.2-r2::gentoo
>>> Installing (10 of 31) x11-libs/xcb-util-wm-0.4.1-r3::gentoo
>>> Emerging binary (18 of 31) x11-libs/xcb-util-0.4.0-r2::gentoo
>>> Installing (11 of 31) x11-libs/libxkbcommon-1.1.0::gentoo
>>> Installing (12 of 31) virtual/opengl-7.0-r2::gentoo
>>> Installing (13 of 31) virtual/ttf-fonts-1-r1::gentoo
>>> Installing (14 of 31) dev-libs/libinput-1.17.0::gentoo
>>> Installing (15 of 31) media-libs/freetype-2.10.4::gentoo
>>> Installing (16 of 31) x11-libs/gdk-pixbuf-2.42.2::gentoo
>>> Emerging binary (19 of 31) media-libs/fontconfig-2.13.1-r2::gentoo
>>> Emerging binary (20 of 31) dev-util/gtk-update-icon-cache-3.24.26::gentoo
>>> Installing (18 of 31) x11-libs/xcb-util-0.4.0-r2::gentoo
>>> Installing (20 of 31) dev-util/gtk-update-icon-cache-3.24.26::gentoo
>>> Installing (17 of 31) dev-qt/qtcore-5.15.2-r2::gentoo
>>> Emerging binary (21 of 31) x11-libs/xcb-util-image-0.4.0-r2::gentoo
>>> Installing (19 of 31) media-libs/fontconfig-2.13.1-r2::gentoo
>>> Emerging binary (22 of 31) dev-qt/qtnetwork-5.15.2-r1::gentoo
>>> Emerging binary (23 of 31) dev-qt/qtdbus-5.15.2::gentoo
>>> Emerging binary (24 of 31) app-eselect/eselect-fontconfig-1.1-r1::gentoo
>>> Installing (21 of 31) x11-libs/xcb-util-image-0.4.0-r2::gentoo
>>> Installing (24 of 31) app-eselect/eselect-fontconfig-1.1-r1::gentoo
>>> Emerging binary (25 of 31) x11-libs/xcb-util-cursor-0.1.3-r3::gentoo
>>> Emerging binary (26 of 31) x11-libs/cairo-1.16.0-r4::gentoo
>>> Installing (22 of 31) dev-qt/qtnetwork-5.15.2-r1::gentoo
>>> Installing (23 of 31) dev-qt/qtdbus-5.15.2::gentoo
>>> Installing (26 of 31) x11-libs/cairo-1.16.0-r4::gentoo
>>> Installing (25 of 31) x11-libs/xcb-util-cursor-0.1.3-r3::gentoo
>>> Emerging binary (27 of 31) media-libs/harfbuzz-2.7.4::gentoo
>>> Installing (27 of 31) media-libs/harfbuzz-2.7.4::gentoo
>>> Emerging binary (28 of 31) dev-qt/qtgui-5.15.2-r1::gentoo
>>> Installing (28 of 31) dev-qt/qtgui-5.15.2-r1::gentoo
>>> Emerging binary (29 of 31) dev-qt/qtwidgets-5.15.2::gentoo
>>> Installing (29 of 31) dev-qt/qtwidgets-5.15.2::gentoo
>>> Emerging binary (30 of 31) dev-qt/qtopengl-5.15.2::gentoo
>>> Installing (30 of 31) dev-qt/qtopengl-5.15.2::gentoo
>>> Emerging (31 of 31) games-board/gambit-1.0.4-r1::gentoo
>>> Installing (31 of 31) games-board/gambit-1.0.4-r1::gentoo
>>> Recording games-board/gambit in "world" favorites file...
>>> Jobs: 31 of 31 complete                         Load avg: 1.74, 0.59, 0.22

 * Messages for package media-fonts/liberation-fonts-2.1.2:

 * The following fontconfig configuration files have been installed:
 * 
 *   60-liberation.conf
 * 
 * Use `eselect fontconfig` to enable/disable them.

 * Messages for package dev-qt/qtcore-5.15.2-r2:

 * Generated gentoo-qconfig.h is empty

 * Messages for package media-libs/fontconfig-2.13.1-r2:

 * Please make fontconfig configuration changes using `eselect
 * fontconfig`. Any changes made to /etc/fonts/fonts.conf will be
 * overwritten. If you need to reset your configuration to upstream
 * defaults, delete the directory /etc/fonts/conf.d/ and re-emerge
 * fontconfig.
 * 
 * (Note: Above message is only printed the first time package is
 * installed. Please look at /usr/share/doc/fontconfig-2.13.1-r2/README.gentoo*
 * for future reference)
>>> Auto-cleaning packages...

>>> No outdated packages were found on your system.

 * Regenerating GNU info directory index...
 * Processed 86 info files.

[INFO] >>> All good.
[INFO] >>> Following testing jobs will be executed:
=dev-libs/uriparser-0.9.4    USE: -qt5 -unicode
=dev-libs/uriparser-0.9.4    USE: qt5 -unicode
=dev-libs/uriparser-0.9.4    USE: -qt5 unicode
=dev-libs/uriparser-0.9.4    USE: qt5 unicode
=dev-libs/uriparser-0.9.4    USE: <default flags>, FEATURES: test
[INFO] >>> Running (1 of 5) =dev-libs/uriparser-0.9.4 with USE: -qt5 -unicode

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild  N     ] dev-libs/uriparser-0.9.4::gentoo  USE="-doc -qt5 -test -unicode" 171 KiB

Total: 1 package (1 new), Size of downloads: 171 KiB

>>> Verifying ebuild manifests
>>> Emerging (1 of 1) dev-libs/uriparser-0.9.4::gentoo
>>> Installing (1 of 1) dev-libs/uriparser-0.9.4::gentoo
>>> Recording dev-libs/uriparser in "world" favorites file...
>>> Jobs: 1 of 1 complete                           Load avg: 1.63, 0.61, 0.23
>>> Auto-cleaning packages...

>>> No outdated packages were found on your system.

 * GNU info directory index is up-to-date.

[INFO] >>> Running (2 of 5) =dev-libs/uriparser-0.9.4 with USE: qt5 -unicode

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R    ] dev-libs/uriparser-0.9.4::gentoo  USE="qt5* -doc -test -unicode" 0 KiB

Total: 1 package (1 reinstall), Size of downloads: 0 KiB

>>> Verifying ebuild manifests
>>> Emerging (1 of 1) dev-libs/uriparser-0.9.4::gentoo
>>> Installing (1 of 1) dev-libs/uriparser-0.9.4::gentoo
>>> Jobs: 1 of 1 complete                           Load avg: 1.58, 0.61, 0.24
>>> Auto-cleaning packages...

>>> No outdated packages were found on your system.

 * GNU info directory index is up-to-date.

[INFO] >>> Running (3 of 5) =dev-libs/uriparser-0.9.4 with USE: -qt5 unicode

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R    ] dev-libs/uriparser-0.9.4::gentoo  USE="unicode* -doc -qt5* -test" 0 KiB

Total: 1 package (1 reinstall), Size of downloads: 0 KiB

>>> Verifying ebuild manifests
>>> Emerging (1 of 1) dev-libs/uriparser-0.9.4::gentoo
>>> Installing (1 of 1) dev-libs/uriparser-0.9.4::gentoo
>>> Jobs: 1 of 1 complete                           Load avg: 1.49, 0.63, 0.25
>>> Auto-cleaning packages...

>>> No outdated packages were found on your system.

 * GNU info directory index is up-to-date.

[INFO] >>> Running (4 of 5) =dev-libs/uriparser-0.9.4 with USE: qt5 unicode

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R    ] dev-libs/uriparser-0.9.4::gentoo  USE="qt5* unicode -doc -test" 0 KiB

Total: 1 package (1 reinstall), Size of downloads: 0 KiB

>>> Verifying ebuild manifests
>>> Emerging (1 of 1) dev-libs/uriparser-0.9.4::gentoo
>>> Installing (1 of 1) dev-libs/uriparser-0.9.4::gentoo
>>> Jobs: 1 of 1 complete                           Load avg: 1.45, 0.63, 0.25
>>> Auto-cleaning packages...

>>> No outdated packages were found on your system.

 * GNU info directory index is up-to-date.

[INFO] >>> Running (5 of 5) =dev-libs/uriparser-0.9.4 with USE: <default flags>, FEATURES: test

These are the packages that would be merged, in order:

Calculating dependencies... done!
[binary  N     ] dev-cpp/gtest-1.10.0_p20200702::gentoo  USE="-doc -examples -test" ABI_X86="32 (64) (-x32)" 0 KiB
[ebuild   R    ] dev-libs/uriparser-0.9.4::gentoo  USE="test* unicode -doc -qt5*" 0 KiB

Total: 2 packages (1 new, 1 reinstall, 1 binary), Size of downloads: 0 KiB

>>> Verifying ebuild manifests
>>> Emerging binary (1 of 2) dev-cpp/gtest-1.10.0_p20200702::gentoo
>>> Installing (1 of 2) dev-cpp/gtest-1.10.0_p20200702::gentoo
>>> Emerging (2 of 2) dev-libs/uriparser-0.9.4::gentoo
>>> Installing (2 of 2) dev-libs/uriparser-0.9.4::gentoo
>>> Jobs: 2 of 2 complete                           Load avg: 1.62, 0.70, 0.27
>>> Auto-cleaning packages...

>>> No outdated packages were found on your system.

 * GNU info directory index is up-to-date.

[INFO] >>> All good.
Grepping through the logs for any errors or QA notices...
Finished grepping.
my-test-container-snap-19675 ~ # 

Example 4: How it looks like when emerging contribution fails.

user $test-pr.sh 20348
Initializing new test environment... this will take a while.
Applying: dev-php/pecl-parallel: New package: v1.1.4
Packages to be tested:
dev-php/pecl-parallel-1.1.4

[INFO] >>> Following testing jobs will be executed:
=dev-php/pecl-parallel-1.1.4    USE: php_targets_php7-3 php_targets_php7-4 php_targets_php8-0
=dev-php/pecl-parallel-1.1.4    USE: -php_targets_php7-3 php_targets_php7-4 -php_targets_php8-0
=dev-php/pecl-parallel-1.1.4    USE: php_targets_php7-3 -php_targets_php7-4 -php_targets_php8-0
=dev-php/pecl-parallel-1.1.4    USE: -php_targets_php7-3 php_targets_php7-4 php_targets_php8-0
=dev-php/pecl-parallel-1.1.4    USE: php_targets_php7-3 -php_targets_php7-4 php_targets_php8-0
=dev-php/pecl-parallel-1.1.4    USE: -php_targets_php7-3 -php_targets_php7-4 php_targets_php8-0
=dev-php/pecl-parallel-1.1.4    USE: <default flags>, FEATURES: test
[INFO] >>> Running (1 of 7) =dev-php/pecl-parallel-1.1.4 with USE: php_targets_php7-3 php_targets_php7-4 php_targets_php8-0

These are the packages that would be merged, in order:

Calculating dependencies \[binary  N     ] dev-libs/oniguruma-6.9.6-r1:0/5::gentoo  USE="-crnl-as-line-terminator -static-libs" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  NS    ] sys-libs/db-5.3.28-r5:5.3::gentoo [6.0.35-r3:6.0::gentoo] USE="-cxx -doc -examples -java -tcl -test" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] app-admin/metalog-20200113-r1::gentoo  USE="(unicode)" 0 KiB
[binary  N     ] virtual/logger-0-r1::gentoo  0 KiB
[binary  N     ] dev-libs/apr-1.7.0-r1:1/1.7::gentoo  USE="urandom -doc -older-kernels-compatibility (-selinux) -static-libs" 0 KiB
[binary  N     ] dev-libs/apr-util-1.6.1-r6:1::gentoo  USE="berkdb gdbm -doc -ldap (-libressl) -mysql -nss -odbc -openssl -postgres -sqlite -static-libs" 0 KiB
[binary  N     ] app-admin/apache-tools-2.4.46::gentoo  USE="ssl (-libressl)" 0 KiB
[binary  N     ] mail-mta/nullmailer-2.2-r1::gentoo  USE="ssl -test" 0 KiB
[binary  N     ] virtual/mta-1-r2::gentoo  0 KiB
[binary  N     ] www-servers/apache-2.4.46-r6:2::gentoo  USE="gdbm (split-usr) ssl suexec-caps threads -debug -doc -ldap (-libressl) (-selinux) -static -suexec -suexec-syslog" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_core authn_dbm authn_file authz_core authz_dbm authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir env expires ext_filter file_cache filter headers http2 include info log_config logio mime mime_magic negotiation rewrite setenvif socache_shmcb speling status unique_id unixd userdir usertrack vhost_alias -access_compat -asis -auth_digest -auth_form -authn_dbd -authn_socache -authz_dbd -brotli -cache_disk -cache_socache -cern_meta -charset_lite -dbd -dumpio -ident -imagemap -lbmethod_bybusyness -lbmethod_byrequests -lbmethod_bytraffic -lbmethod_heartbeat -log_forensic (-lua) -macro -md -proxy -proxy_ajp -proxy_balancer -proxy_connect -proxy_fcgi -proxy_ftp -proxy_html -proxy_http -proxy_http2 -proxy_scgi -proxy_wstunnel -ratelimit -remoteip -reqtimeout -session -session_cookie -session_crypto -session_dbd -slotmem_shm -socache_memcache -substitute -version -watchdog -xml2enc" APACHE2_MPMS="-event -prefork -worker" LUA_SINGLE_TARGET="lua5-1 -lua5-2 -lua5-3 -lua5-4" 0 KiB
[binary  N     ] app-eselect/eselect-php-0.9.7::gentoo  USE="apache2 -fpm" 0 KiB
[ebuild  N     ] dev-lang/php-7.3.27-r1:7.3::gentoo  USE="acl berkdb bzip2 cli ctype fileinfo filter flatfile gdbm hash iconv ipv6 jit json opcache phar posix readline session simplexml ssl threads tokenizer unicode xml zlib -apache2 -argon2 -bcmath -calendar -cdb -cgi -cjk -coverage -curl -debug -embed -enchant -exif -firebird -fpm -ftp -gd -gmp -imap -inifile -intl -iodbc -kerberos -ldap -ldap-sasl -libedit (-libressl) -lmdb -mhash -mssql -mysql -mysqli -nls -oci8-instant-client -odbc -pcntl -pdo -phpdbg -postgres -qdbm -recode (-selinux) -session-mm -sharedmem -snmp -soap -sockets -sodium -spell -sqlite -systemd -sysvipc -test -tidy -tokyocabinet -truetype -wddx -webp -xmlreader -xmlrpc -xmlwriter -xpm -xslt -zip -zip-encryption" 11854 KiB
[ebuild  N     ] dev-lang/php-8.0.3:8.0::gentoo  USE="acl berkdb bzip2 cli ctype fileinfo filter flatfile gdbm iconv ipv6 jit opcache phar posix readline session simplexml ssl threads tokenizer unicode xml zlib -apache2 -argon2 -bcmath -calendar -cdb -cgi -cjk -coverage -curl -debug -embed -enchant -exif -ffi -firebird -fpm -ftp -gd -gmp -imap -inifile -intl -iodbc -kerberos -ldap -ldap-sasl -libedit (-libressl) -lmdb -mhash -mssql -mysql -mysqli -nls -oci8-instant-client -odbc -pcntl -pdo -phpdbg -postgres -qdbm (-selinux) -session-mm -sharedmem -snmp -soap -sockets -sodium -spell -sqlite -systemd -sysvipc -test -tidy -tokyocabinet -truetype -webp -xmlreader -xmlwriter -xpm -xslt -zip" 10504 KiB
[ebuild  N     ] dev-lang/php-7.4.16:7.4::gentoo  USE="acl berkdb bzip2 cli ctype fileinfo filter flatfile gdbm iconv ipv6 jit json opcache phar posix readline session simplexml ssl threads tokenizer unicode xml zlib -apache2 -argon2 -bcmath -calendar -cdb -cgi -cjk -coverage -curl -debug -embed -enchant -exif -ffi -firebird -fpm -ftp -gd -gmp -imap -inifile -intl -iodbc -kerberos -ldap -ldap-sasl -libedit (-libressl) -lmdb -mhash -mssql -mysql -mysqli -nls -oci8-instant-client -odbc -pcntl -pdo -phpdbg -postgres -qdbm (-selinux) -session-mm -sharedmem -snmp -soap -sockets -sodium -spell -sqlite -systemd -sysvipc -test -tidy -tokyocabinet -truetype -webp -xmlreader -xmlrpc -xmlwriter -xpm -xslt -zip" 10093 KiB
[ebuild  N     ] dev-php/pecl-parallel-1.1.4::gentoo  USE="-test" PHP_TARGETS="php7-3 php7-4 php8-0" 58 KiB

Total: 15 packages (14 new, 1 in new slot, 11 binaries), Size of downloads: 32508 KiB

The following USE changes are necessary to proceed:
 (see "package.use" in the portage(5) man page for more details)
# required by dev-php/pecl-parallel-1.1.4::gentoo[php_targets_php7-3,-test]
# required by =dev-php/pecl-parallel-1.1.4 (argument)
>=dev-lang/php-7.3.27-r1:7.3 threads
# required by dev-php/pecl-parallel-1.1.4::gentoo[-test,php_targets_php7-4]
# required by =dev-php/pecl-parallel-1.1.4 (argument)
>=dev-lang/php-7.4.16:7.4 threads
# required by dev-php/pecl-parallel-1.1.4::gentoo[-test,php_targets_php8-0]
# required by =dev-php/pecl-parallel-1.1.4 (argument)
>=dev-lang/php-8.0.3 threads

Autounmask changes successfully written.                                                          ... done!
[binary  N     ] dev-libs/oniguruma-6.9.6-r1:0/5::gentoo  USE="-crnl-as-line-terminator -static-libs" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  NS    ] sys-libs/db-5.3.28-r5:5.3::gentoo [6.0.35-r3:6.0::gentoo] USE="-cxx -doc -examples -java -tcl -test" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] app-admin/metalog-20200113-r1::gentoo  USE="(unicode)" 0 KiB
[binary  N     ] virtual/logger-0-r1::gentoo  0 KiB
[binary  N     ] dev-libs/apr-1.7.0-r1:1/1.7::gentoo  USE="urandom -doc -older-kernels-compatibility (-selinux) -static-libs" 0 KiB
[binary  N     ] dev-libs/apr-util-1.6.1-r6:1::gentoo  USE="berkdb gdbm -doc -ldap (-libressl) -mysql -nss -odbc -openssl -postgres -sqlite -static-libs" 0 KiB
[binary  N     ] app-admin/apache-tools-2.4.46::gentoo  USE="ssl (-libressl)" 0 KiB
[binary  N     ] mail-mta/nullmailer-2.2-r1::gentoo  USE="ssl -test" 0 KiB
[binary  N     ] virtual/mta-1-r2::gentoo  0 KiB
[binary  N     ] www-servers/apache-2.4.46-r6:2::gentoo  USE="gdbm (split-usr) ssl suexec-caps threads -debug -doc -ldap (-libressl) (-selinux) -static -suexec -suexec-syslog" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_core authn_dbm authn_file authz_core authz_dbm authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir env expires ext_filter file_cache filter headers http2 include info log_config logio mime mime_magic negotiation rewrite setenvif socache_shmcb speling status unique_id unixd userdir usertrack vhost_alias -access_compat -asis -auth_digest -auth_form -authn_dbd -authn_socache -authz_dbd -brotli -cache_disk -cache_socache -cern_meta -charset_lite -dbd -dumpio -ident -imagemap -lbmethod_bybusyness -lbmethod_byrequests -lbmethod_bytraffic -lbmethod_heartbeat -log_forensic (-lua) -macro -md -proxy -proxy_ajp -proxy_balancer -proxy_connect -proxy_fcgi -proxy_ftp -proxy_html -proxy_http -proxy_http2 -proxy_scgi -proxy_wstunnel -ratelimit -remoteip -reqtimeout -session -session_cookie -session_crypto -session_dbd -slotmem_shm -socache_memcache -substitute -version -watchdog -xml2enc" APACHE2_MPMS="-event -prefork -worker" LUA_SINGLE_TARGET="lua5-1 -lua5-2 -lua5-3 -lua5-4" 0 KiB
[binary  N     ] app-eselect/eselect-php-0.9.7::gentoo  USE="apache2 -fpm" 0 KiB
[ebuild  N     ] dev-lang/php-7.3.27-r1:7.3::gentoo  USE="acl berkdb bzip2 cli ctype fileinfo filter flatfile gdbm hash iconv ipv6 jit json opcache phar posix readline session simplexml ssl threads tokenizer unicode xml zlib -apache2 -argon2 -bcmath -calendar -cdb -cgi -cjk -coverage -curl -debug -embed -enchant -exif -firebird -fpm -ftp -gd -gmp -imap -inifile -intl -iodbc -kerberos -ldap -ldap-sasl -libedit (-libressl) -lmdb -mhash -mssql -mysql -mysqli -nls -oci8-instant-client -odbc -pcntl -pdo -phpdbg -postgres -qdbm -recode (-selinux) -session-mm -sharedmem -snmp -soap -sockets -sodium -spell -sqlite -systemd -sysvipc -test -tidy -tokyocabinet -truetype -wddx -webp -xmlreader -xmlrpc -xmlwriter -xpm -xslt -zip -zip-encryption" 11854 KiB
[ebuild  N     ] dev-lang/php-8.0.3:8.0::gentoo  USE="acl berkdb bzip2 cli ctype fileinfo filter flatfile gdbm iconv ipv6 jit opcache phar posix readline session simplexml ssl threads tokenizer unicode xml zlib -apache2 -argon2 -bcmath -calendar -cdb -cgi -cjk -coverage -curl -debug -embed -enchant -exif -ffi -firebird -fpm -ftp -gd -gmp -imap -inifile -intl -iodbc -kerberos -ldap -ldap-sasl -libedit (-libressl) -lmdb -mhash -mssql -mysql -mysqli -nls -oci8-instant-client -odbc -pcntl -pdo -phpdbg -postgres -qdbm (-selinux) -session-mm -sharedmem -snmp -soap -sockets -sodium -spell -sqlite -systemd -sysvipc -test -tidy -tokyocabinet -truetype -webp -xmlreader -xmlwriter -xpm -xslt -zip" 10504 KiB
[ebuild  N     ] dev-lang/php-7.4.16:7.4::gentoo  USE="acl berkdb bzip2 cli ctype fileinfo filter flatfile gdbm iconv ipv6 jit json opcache phar posix readline session simplexml ssl threads tokenizer unicode xml zlib -apache2 -argon2 -bcmath -calendar -cdb -cgi -cjk -coverage -curl -debug -embed -enchant -exif -ffi -firebird -fpm -ftp -gd -gmp -imap -inifile -intl -iodbc -kerberos -ldap -ldap-sasl -libedit (-libressl) -lmdb -mhash -mssql -mysql -mysqli -nls -oci8-instant-client -odbc -pcntl -pdo -phpdbg -postgres -qdbm (-selinux) -session-mm -sharedmem -snmp -soap -sockets -sodium -spell -sqlite -systemd -sysvipc -test -tidy -tokyocabinet -truetype -webp -xmlreader -xmlrpc -xmlwriter -xpm -xslt -zip" 10093 KiB
[ebuild  N     ] dev-php/pecl-parallel-1.1.4::gentoo  USE="-test" PHP_TARGETS="php7-3 php7-4 php8-0" 58 KiB

Total: 15 packages (14 new, 1 in new slot, 11 binaries), Size of downloads: 32508 KiB

>>> Verifying ebuild manifests
>>> Emerging binary (1 of 15) dev-libs/oniguruma-6.9.6-r1::gentoo
>>> Emerging binary (2 of 15) sys-libs/db-5.3.28-r5::gentoo
>>> Emerging binary (3 of 15) app-admin/metalog-20200113-r1::gentoo
>>> Emerging binary (4 of 15) dev-libs/apr-1.7.0-r1::gentoo
>>> Installing (2 of 15) sys-libs/db-5.3.28-r5::gentoo
>>> Installing (1 of 15) dev-libs/oniguruma-6.9.6-r1::gentoo
>>> Installing (3 of 15) app-admin/metalog-20200113-r1::gentoo
>>> Installing (4 of 15) dev-libs/apr-1.7.0-r1::gentoo
>>> Emerging binary (5 of 15) virtual/logger-0-r1::gentoo
>>> Installing (5 of 15) virtual/logger-0-r1::gentoo
>>> Emerging binary (6 of 15) mail-mta/nullmailer-2.2-r1::gentoo
>>> Installing (6 of 15) mail-mta/nullmailer-2.2-r1::gentoo
>>> Emerging binary (7 of 15) virtual/mta-1-r2::gentoo
>>> Emerging binary (8 of 15) dev-libs/apr-util-1.6.1-r6::gentoo
>>> Installing (7 of 15) virtual/mta-1-r2::gentoo
>>> Installing (8 of 15) dev-libs/apr-util-1.6.1-r6::gentoo
>>> Emerging binary (9 of 15) app-admin/apache-tools-2.4.46::gentoo
>>> Installing (9 of 15) app-admin/apache-tools-2.4.46::gentoo
>>> Emerging binary (10 of 15) www-servers/apache-2.4.46-r6::gentoo
>>> Installing (10 of 15) www-servers/apache-2.4.46-r6::gentoo
>>> Emerging binary (11 of 15) app-eselect/eselect-php-0.9.7::gentoo
>>> Installing (11 of 15) app-eselect/eselect-php-0.9.7::gentoo
>>> Emerging (12 of 15) dev-lang/php-7.3.27-r1::gentoo
>>> Emerging (13 of 15) dev-lang/php-8.0.3::gentoo
>>> Emerging (14 of 15) dev-lang/php-7.4.16::gentoo
>>> Installing (14 of 15) dev-lang/php-7.4.16::gentoo
>>> Installing (13 of 15) dev-lang/php-8.0.3::gentoo
>>> Installing (12 of 15) dev-lang/php-7.3.27-r1::gentoo
>>> Emerging (15 of 15) dev-php/pecl-parallel-1.1.4::gentoo
>>> Failed to emerge dev-php/pecl-parallel-1.1.4, Log file:
>>>  '/var/tmp/portage/vbslogs/build/dev-php/pecl-parallel-1.1.4:20210414-114543.log'
>>> Jobs: 14 of 15 complete, 1 failed               Load avg: 4.46, 3.44, 1.56
 * Package:    dev-php/pecl-parallel-1.1.4
 * Repository: gentoo
 * Maintainer: jaco@uls.co.za proxy-maint@gentoo.org
 * USE:        abi_x86_64 amd64 elibc_glibc kernel_linux php_targets_php7-3 php_targets_php7-4 php_targets_php8-0 userland_GNU
 * FEATURES:   network-sandbox preserve-libs sandbox userpriv usersandbox

>>> Unpacking source...
>>> Unpacking pecl-parallel-1.1.4.tgz to /var/tmp/portage/dev-php/pecl-parallel-1.1.4/work
>>> Source unpacked in /var/tmp/portage/dev-php/pecl-parallel-1.1.4/work
>>> Preparing source in /var/tmp/portage/dev-php/pecl-parallel-1.1.4/work/parallel-1.1.4 ...
 * Running '/usr/lib64/php7.3/bin/phpize' ...
 [ ok ]
 * Running eautoreconf in '/var/tmp/portage/dev-php/pecl-parallel-1.1.4/work/php7.3' ...
 * Running 'libtoolize --install --copy --force' ...
 [ ok ]
 * Running 'aclocal' ...
 [ ok ]
 * Running 'autoconf --force' ...
 [ ok ]
 * Running 'autoheader' ...
 [ ok ]
 * Running elibtoolize in: php7.3/
 *   Applying portage/1.2.0 patch ...
 *   Applying sed/1.5.6 patch ...
 *   Applying as-needed/2.4.3 patch ...
 * Running '/usr/lib64/php7.4/bin/phpize' ...
 [ ok ]
 * Running 'autoconf --force' ...
 [ ok ]
 * Running 'autoheader' ...
 [ ok ]
 * Running '/usr/lib64/php8.0/bin/phpize' ...
 [ ok ]
 * Running 'autoconf --force' ...
 [ ok ]
 * Running 'autoheader' ...
 [ ok ]
>>> Source prepared.
>>> Configuring source in /var/tmp/portage/dev-php/pecl-parallel-1.1.4/work/parallel-1.1.4 ...
 * econf: updating php7.4/config.guess with /usr/share/gnuconfig/config.guess
 * econf: updating php7.4/build/config.guess with /usr/share/gnuconfig/config.guess
 * econf: updating php7.4/build/config.sub with /usr/share/gnuconfig/config.sub
 * econf: updating php7.4/config.sub with /usr/share/gnuconfig/config.sub
 * econf: updating php8.0/config.guess with /usr/share/gnuconfig/config.guess
 * econf: updating php8.0/build/config.guess with /usr/share/gnuconfig/config.guess
 * econf: updating php8.0/build/config.sub with /usr/share/gnuconfig/config.sub
 * econf: updating php8.0/config.sub with /usr/share/gnuconfig/config.sub
 * econf: updating php7.3/config.guess with /usr/share/gnuconfig/config.guess
 * econf: updating php7.3/config.sub with /usr/share/gnuconfig/config.sub
./configure --prefix=/usr --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --docdir=/usr/share/doc/pecl-parallel-1.1.4 --htmldir=/usr/share/doc/pecl-parallel-1.1.4/html --with-sysroot=/ --libdir=/usr/lib64 --with-php-config=/usr/lib64/php7.3/bin/php-config
...
... it prints the whole build.log ...
...
/var/tmp/portage/dev-php/pecl-parallel-1.1.4/work/php8.0/src/cache.c:276:30: error: incompatible types when assigning to type 'zend_type' from type 'int'
/var/tmp/portage/dev-php/pecl-parallel-1.1.4/work/php8.0/src/check.c:129:85: warning: implicit declaration of function 'ZEND_TYPE_IS_CLASS'; did you mean 'ZEND_TYPE_HAS_CLASS'? [-Wimplicit-function-declaration[https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wimplicit-function-declaration]]
  129 |     if (ZEND_TYPE_IS_SET(it->type) && (ZEND_TYPE_CODE(it->type) == IS_OBJECT || ZEND_TYPE_IS_CLASS(it->type))) {
      |                                                                                 ^~~~~~~~~~~~~~~~~~
      |                                                                                 ZEND_TYPE_HAS_CLASS
/var/tmp/portage/dev-php/pecl-parallel-1.1.4/work/php8.0/src/check.c:139:15: error: 'zend_arg_info' {aka 'struct _zend_arg_info'} has no member named 'pass_by_reference'
  139 |         if (it->pass_by_reference) {
      |               ^~
/var/tmp/portage/dev-php/pecl-parallel-1.1.4/work/php8.0/src/check.c:165:15: error: 'zend_arg_info' {aka 'struct _zend_arg_info'} has no member named 'pass_by_reference'
  165 |         if (it->pass_by_reference) {
      |               ^~
/bin/sh /var/tmp/portage/dev-php/pecl-parallel-1.1.4/work/php8.0/libtool --mode=compile x86_64-pc-linux-gnu-gcc -I. -I/var/tmp/portage/dev-php/pecl-parallel-1.1.4/work/php8.0 -I/var/tmp/portage/dev-php/pecl-parallel-1.1.4/work/php8.0/include -I/var/tmp/portage/dev-php/pecl-parallel-1.1.4/work/php8.0/main -I/var/tmp/portage/dev-php/pecl-parallel-1.1.4/work/php8.0 -I/usr/lib64/php8.0/include/php -I/usr/lib64/php8.0/include/php/main -I/usr/lib64/php8.0/include/php/TSRM -I/usr/lib64/php8.0/include/php/Zend -I/usr/lib64/php8.0/include/php/ext -I/usr/lib64/php8.0/include/php/ext/date/lib -I/var/tmp/portage/dev-php/pecl-parallel-1.1.4/work/php8.0  -DHAVE_CONFIG_H  -march=native -O2 -pipe -frecord-gcc-switches   -Wall -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1  -c /var/tmp/portage/dev-php/pecl-parallel-1.1.4/work/php8.0/src/loop.c -o src/loop.lo 
/var/tmp/portage/dev-php/pecl-parallel-1.1.4/work/php8.0/src/check.c: In function 'php_parallel_check_class_inline':
/var/tmp/portage/dev-php/pecl-parallel-1.1.4/work/php8.0/src/check.c:538:13: warning: implicit declaration of function 'ZEND_TYPE_IS_CE'; did you mean 'ZEND_TYPE_IS_SET'? [-Wimplicit-function-declaration[https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wimplicit-function-declaration]]
  538 |         if (ZEND_TYPE_IS_CE(info->type)) {
      |             ^~~~~~~~~~~~~~~
      |             ZEND_TYPE_IS_SET
make: *** [Makefile:230: src/channel.lo] Error 1
make: *** Waiting for unfinished jobs....
make: *** [Makefile:228: src/cache.lo] Error 1
make: *** [Makefile:224: src/check.lo] Error 1
 x86_64-pc-linux-gnu-gcc -I. -I/var/tmp/portage/dev-php/pecl-parallel-1.1.4/work/php8.0 -I/var/tmp/portage/dev-php/pecl-parallel-1.1.4/work/php8.0/include -I/var/tmp/portage/dev-php/pecl-parallel-1.1.4/work/php8.0/main -I/var/tmp/portage/dev-php/pecl-parallel-1.1.4/work/php8.0 -I/usr/lib64/php8.0/include/php -I/usr/lib64/php8.0/include/php/main -I/usr/lib64/php8.0/include/php/TSRM -I/usr/lib64/php8.0/include/php/Zend -I/usr/lib64/php8.0/include/php/ext -I/usr/lib64/php8.0/include/php/ext/date/lib -I/var/tmp/portage/dev-php/pecl-parallel-1.1.4/work/php8.0 -DHAVE_CONFIG_H -march=native -O2 -pipe -frecord-gcc-switches -Wall -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -c /var/tmp/portage/dev-php/pecl-parallel-1.1.4/work/php8.0/src/loop.c  -fPIC -DPIC -o src/.libs/loop.o
 * ERROR: dev-php/pecl-parallel-1.1.4::gentoo failed (compile phase):
 *   emake failed
 * 
 * If you need support, post the output of `emerge --info '=dev-php/pecl-parallel-1.1.4::gentoo'`,
 * the complete build log and the output of `emerge -pqv '=dev-php/pecl-parallel-1.1.4::gentoo'`.
 * The complete build log is located at '/var/tmp/portage/vbslogs/build/dev-php/pecl-parallel-1.1.4:20210414-114543.log'.
 * For convenience, a symlink to the build log is located at '/var/tmp/portage/dev-php/pecl-parallel-1.1.4/temp/build.log'.
 * The ebuild environment file is located at '/var/tmp/portage/dev-php/pecl-parallel-1.1.4/temp/environment'.
 * Working directory: '/var/tmp/portage/dev-php/pecl-parallel-1.1.4/work/php8.0'
 * S: '/var/tmp/portage/dev-php/pecl-parallel-1.1.4/work/parallel-1.1.4'
...
... continues normally to test other USE flag combinations ...
...
These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R    ] dev-php/pecl-parallel-1.1.4::gentoo  USE="test*" PHP_TARGETS="php7-3 php7-4* -php8-0" 0 KiB

Total: 1 package (1 reinstall), Size of downloads: 0 KiB

>>> Verifying ebuild manifests
>>> Emerging (1 of 1) dev-php/pecl-parallel-1.1.4::gentoo
>>> Installing (1 of 1) dev-php/pecl-parallel-1.1.4::gentoo
>>> Jobs: 1 of 1 complete                           Load avg: 2.51, 3.04, 1.57
>>> Auto-cleaning packages...

>>> No outdated packages were found on your system.

 * GNU info directory index is up-to-date.

 * IMPORTANT: 1 news items need reading for repository 'gentoo'.
 * Use eselect news read to view new items.


[ERROR] >>> Not all runs were successful.
atom: =dev-php/pecl-parallel-1.1.4, USE flags: 'php_targets_php7-3 php_targets_php7-4 php_targets_php8-0'
atom: =dev-php/pecl-parallel-1.1.4, USE flags: '-php_targets_php7-3 php_targets_php7-4 php_targets_php8-0'
atom: =dev-php/pecl-parallel-1.1.4, USE flags: 'php_targets_php7-3 -php_targets_php7-4 php_targets_php8-0'
atom: =dev-php/pecl-parallel-1.1.4, USE flags: '-php_targets_php7-3 -php_targets_php7-4 php_targets_php8-0'
Grepping through the logs for any errors or QA notices...
/var/tmp/portage/vbslogs/build/dev-php/pecl-parallel-1.1.4:20210414-114543.log: * ERROR: dev-php/pecl-parallel-1.1.4::gentoo failed (compile phase):
/var/tmp/portage/vbslogs/build/dev-php/pecl-parallel-1.1.4:20210414-114625.log: * ERROR: dev-php/pecl-parallel-1.1.4::gentoo failed (compile phase):
/var/tmp/portage/vbslogs/build/dev-php/pecl-parallel-1.1.4:20210414-114637.log: * ERROR: dev-php/pecl-parallel-1.1.4::gentoo failed (compile phase):
/var/tmp/portage/vbslogs/build/dev-php/pecl-parallel-1.1.4:20210414-114650.log: * ERROR: dev-php/pecl-parallel-1.1.4::gentoo failed (compile phase):
/var/tmp/portage/vbslogs/elog/dev-php/pecl-parallel-1.1.4:20210414-114647.log:ERROR: dev-php/pecl-parallel-1.1.4::gentoo failed (compile phase):
/var/tmp/portage/vbslogs/elog/dev-php/pecl-parallel-1.1.4:20210414-114558.log:ERROR: dev-php/pecl-parallel-1.1.4::gentoo failed (compile phase):
/var/tmp/portage/vbslogs/elog/dev-php/pecl-parallel-1.1.4:20210414-114655.log:ERROR: dev-php/pecl-parallel-1.1.4::gentoo failed (compile phase):
/var/tmp/portage/vbslogs/elog/dev-php/pecl-parallel-1.1.4:20210414-114634.log:ERROR: dev-php/pecl-parallel-1.1.4::gentoo failed (compile phase):
Finished grepping.

It's easy to spot in here, that a single enabled USE flag causes build failures.


Example 5: QA notices.

user $test-pr.sh 19702
Initializing new test environment... this will take a while.
Applying: app-misc/rox-filer-2.11 libSM dependency
Packages to be tested:
app-misc/rox-filer-2.11

[INFO] >>> Following testing jobs will be executed:
=app-misc/rox-filer-2.11    USE: <default flags>
[INFO] >>> Running (1 of 1) =app-misc/rox-filer-2.11 with USE: <default flags>

These are the packages that would be merged, in order:

Calculating dependencies... done!
[binary  N     ] media-gfx/graphite2-1.3.14::gentoo  USE="-perl -test" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] gnome-base/gsettings-desktop-schemas-3.38.0::gentoo  USE="introspection" 0 KiB
[binary  N     ] x11-themes/hicolor-icon-theme-0.17::gentoo  0 KiB
[binary  N     ] dev-libs/fribidi-1.0.9::gentoo  USE="-static-libs" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] dev-libs/lzo-2.10:2::gentoo  USE="(split-usr) -examples -static-libs" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] media-fonts/liberation-fonts-2.1.2::gentoo  USE="X -fontforge" 0 KiB
[binary  N     ] media-libs/libpng-1.6.37-r2:0/16::gentoo  USE="-apng -static-libs" ABI_X86="32 (64) (-x32)" CPU_FLAGS_X86="sse" 0 KiB
[binary  N     ] virtual/ttf-fonts-1-r1::gentoo  0 KiB
[binary  N     ] x11-themes/gnome-themes-standard-3.28::gentoo  0 KiB
[binary  N     ] media-libs/freetype-2.10.4:2::gentoo  USE="X adobe-cff bzip2 cleartype_hinting png -bindist -brotli -debug -doc -fontforge -harfbuzz -infinality -static-libs -utils" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] sys-libs/binutils-libs-2.35.2-1:0/2.35.2::gentoo  USE="-64-bit-bfd (-cet) -multitarget -nls -static-libs" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] x11-libs/libXcomposite-0.4.5::gentoo  USE="-doc" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] x11-libs/libXcursor-1.2.0::gentoo  USE="-doc" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] x11-libs/libXdamage-1.1.5::gentoo  ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] x11-libs/libXi-1.7.10::gentoo  USE="-doc" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] x11-libs/gdk-pixbuf-2.42.2:2::gentoo  USE="introspection -gtk-doc -jpeg -tiff" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] dev-libs/atk-2.36.0::gentoo  USE="introspection -gtk-doc" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] dev-util/gtk-update-icon-cache-3.24.26-1::gentoo  0 KiB
[binary  N     ] media-libs/fontconfig-2.13.1-r2:1.0::gentoo  USE="-doc -static-libs" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] app-eselect/eselect-fontconfig-1.1-r1::gentoo  0 KiB
[binary  N     ] x11-libs/cairo-1.16.0-r4::gentoo  USE="X glib svg (-aqua) -debug (-gles2-only) -opengl -static-libs -utils -valgrind" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] x11-libs/libXft-2.3.3::gentoo  USE="-doc" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] media-libs/harfbuzz-2.7.4-1:0/0.9.18::gentoo  USE="cairo glib graphite introspection truetype -debug -doc -icu -static-libs -test" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] x11-libs/pango-1.42.4-r2::gentoo  USE="X introspection -test" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] gnome-base/librsvg-2.50.3:2::gentoo  USE="introspection vala" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] x11-themes/adwaita-icon-theme-3.38.0::gentoo  USE="-branding" 0 KiB
[binary  N     ] x11-libs/gtk+-2.24.32-r1:2::gentoo  USE="introspection (-aqua) -cups -examples -test -vim-syntax -xinerama" ABI_X86="32 (64) (-x32)" 0 KiB
[binary  N     ] x11-themes/gtk-engines-adwaita-3.28::gentoo  ABI_X86="32 (64) (-x32)" 0 KiB
[ebuild  N     ] gnome-base/libglade-2.6.4-r3:2.0::gentoo  USE="-static-libs -test" ABI_X86="32 (64) (-x32)" 348 KiB
[ebuild  N     ] app-misc/rox-filer-2.11::gentoo  USE="-test" 1863 KiB

Total: 30 packages (30 new, 28 binaries), Size of downloads: 2211 KiB

>>> Verifying ebuild manifests
>>> Emerging binary (1 of 30) media-gfx/graphite2-1.3.14::gentoo
>>> Emerging binary (2 of 30) gnome-base/gsettings-desktop-schemas-3.38.0::gentoo
>>> Emerging binary (3 of 30) x11-themes/hicolor-icon-theme-0.17::gentoo
>>> Emerging binary (4 of 30) dev-libs/fribidi-1.0.9::gentoo
>>> Emerging binary (5 of 30) dev-libs/lzo-2.10::gentoo
>>> Emerging binary (6 of 30) media-fonts/liberation-fonts-2.1.2::gentoo
>>> Emerging binary (7 of 30) media-libs/libpng-1.6.37-r2::gentoo
>>> Emerging binary (8 of 30) sys-libs/binutils-libs-2.35.2::gentoo
>>> Installing (8 of 30) sys-libs/binutils-libs-2.35.2::gentoo
>>> Emerging binary (9 of 30) x11-libs/libXcomposite-0.4.5::gentoo
>>> Installing (9 of 30) x11-libs/libXcomposite-0.4.5::gentoo
>>> Emerging binary (10 of 30) x11-libs/libXcursor-1.2.0::gentoo
>>> Installing (3 of 30) x11-themes/hicolor-icon-theme-0.17::gentoo
>>> Emerging binary (11 of 30) x11-libs/libXdamage-1.1.5::gentoo
>>> Installing (4 of 30) dev-libs/fribidi-1.0.9::gentoo
>>> Emerging binary (12 of 30) x11-libs/libXi-1.7.10::gentoo
>>> Installing (6 of 30) media-fonts/liberation-fonts-2.1.2::gentoo
>>> Emerging binary (13 of 30) dev-libs/atk-2.36.0::gentoo
>>> Installing (7 of 30) media-libs/libpng-1.6.37-r2::gentoo
>>> Emerging binary (14 of 30) virtual/ttf-fonts-1-r1::gentoo
>>> Installing (2 of 30) gnome-base/gsettings-desktop-schemas-3.38.0::gentoo
>>> Emerging binary (15 of 30) media-libs/freetype-2.10.4::gentoo
>>> Installing (1 of 30) media-gfx/graphite2-1.3.14::gentoo
>>> Emerging binary (16 of 30) x11-themes/gnome-themes-standard-3.28::gentoo
>>> Installing (5 of 30) dev-libs/lzo-2.10::gentoo
>>> Emerging binary (17 of 30) x11-libs/gdk-pixbuf-2.42.2::gentoo
>>> Installing (10 of 30) x11-libs/libXcursor-1.2.0::gentoo
>>> Installing (11 of 30) x11-libs/libXdamage-1.1.5::gentoo
>>> Installing (12 of 30) x11-libs/libXi-1.7.10::gentoo
>>> Installing (13 of 30) dev-libs/atk-2.36.0::gentoo
>>> Installing (14 of 30) virtual/ttf-fonts-1-r1::gentoo
>>> Installing (15 of 30) media-libs/freetype-2.10.4::gentoo
>>> Emerging binary (18 of 30) media-libs/fontconfig-2.13.1-r2::gentoo
>>> Installing (16 of 30) x11-themes/gnome-themes-standard-3.28::gentoo
>>> Installing (17 of 30) x11-libs/gdk-pixbuf-2.42.2::gentoo
>>> Emerging binary (19 of 30) dev-util/gtk-update-icon-cache-3.24.26::gentoo
>>> Installing (18 of 30) media-libs/fontconfig-2.13.1-r2::gentoo
>>> Emerging binary (20 of 30) app-eselect/eselect-fontconfig-1.1-r1::gentoo
>>> Installing (19 of 30) dev-util/gtk-update-icon-cache-3.24.26::gentoo
>>> Installing (20 of 30) app-eselect/eselect-fontconfig-1.1-r1::gentoo
>>> Emerging binary (21 of 30) x11-libs/cairo-1.16.0-r4::gentoo
>>> Emerging binary (22 of 30) x11-libs/libXft-2.3.3::gentoo
>>> Installing (21 of 30) x11-libs/cairo-1.16.0-r4::gentoo
>>> Installing (22 of 30) x11-libs/libXft-2.3.3::gentoo
>>> Emerging binary (23 of 30) media-libs/harfbuzz-2.7.4::gentoo
>>> Installing (23 of 30) media-libs/harfbuzz-2.7.4::gentoo
>>> Emerging binary (24 of 30) x11-libs/pango-1.42.4-r2::gentoo
>>> Installing (24 of 30) x11-libs/pango-1.42.4-r2::gentoo
>>> Emerging binary (25 of 30) gnome-base/librsvg-2.50.3::gentoo
>>> Installing (25 of 30) gnome-base/librsvg-2.50.3::gentoo
>>> Emerging binary (26 of 30) x11-themes/adwaita-icon-theme-3.38.0::gentoo
>>> Installing (26 of 30) x11-themes/adwaita-icon-theme-3.38.0::gentoo
>>> Emerging binary (27 of 30) x11-libs/gtk+-2.24.32-r1::gentoo
>>> Installing (27 of 30) x11-libs/gtk+-2.24.32-r1::gentoo
>>> Emerging binary (28 of 30) x11-themes/gtk-engines-adwaita-3.28::gentoo
>>> Installing (28 of 30) x11-themes/gtk-engines-adwaita-3.28::gentoo
>>> Emerging (29 of 30) gnome-base/libglade-2.6.4-r3::gentoo
>>> Installing (29 of 30) gnome-base/libglade-2.6.4-r3::gentoo
>>> Emerging (30 of 30) app-misc/rox-filer-2.11::gentoo
>>> Installing (30 of 30) app-misc/rox-filer-2.11::gentoo
>>> Recording app-misc/rox-filer in "world" favorites file...
>>> Jobs: 30 of 30 complete                         Load avg: 0.86, 0.39, 0.15

 * Messages for package media-fonts/liberation-fonts-2.1.2:

 * The following fontconfig configuration files have been installed:
 * 
 *   60-liberation.conf
 * 
 * Use `eselect fontconfig` to enable/disable them.

 * Messages for package media-libs/fontconfig-2.13.1-r2:

 * Please make fontconfig configuration changes using `eselect
 * fontconfig`. Any changes made to /etc/fonts/fonts.conf will be
 * overwritten. If you need to reset your configuration to upstream
 * defaults, delete the directory /etc/fonts/conf.d/ and re-emerge
 * fontconfig.
 * 
 * (Note: Above message is only printed the first time package is
 * installed. Please look at /usr/share/doc/fontconfig-2.13.1-r2/README.gentoo*
 * for future reference)

 * Messages for package x11-libs/gtk+-2.24.32-r1:

 * Please install app-text/evince for print preview functionality.
 * Alternatively, check "gtk-print-preview-command" documentation and
 * add it to your gtkrc.
 * To make the gtk2 file chooser use 'current directory' mode by default,
 * edit ~/.config/gtk-2.0/gtkfilechooser.ini to contain the following:
 * [Filechooser Settings]
 * StartupMode=cwd
 * 
 * (Note: Above message is only printed the first time package is
 * installed. Please look at /usr/share/doc/gtk+-2.24.32-r1/README.gentoo*
 * for future reference)

 * Messages for package app-misc/rox-filer-2.11:
 * Log file: /var/tmp/portage/vbslogs/build/app-misc/rox-filer-2.11:20210305-174048.log

 * QA Notice: Files built without respecting LDFLAGS have been detected
 *  Please include the following list of files in your report:
 * /usr/bin/rox
 * QA Notice: Pre-stripped files found:
 * /usr/bin/rox
>>> Auto-cleaning packages...

>>> No outdated packages were found on your system.

 * Regenerating GNU info directory index...
 * Processed 86 info files.

[INFO] >>> All good.
Grepping through the logs for any errors or QA notices...
/var/tmp/portage/vbslogs/build/app-misc/rox-filer-2.11:20210305-174048.log: * QA Notice: Files built without respecting LDFLAGS have been detected
/var/tmp/portage/vbslogs/build/app-misc/rox-filer-2.11:20210305-174048.log: * QA Notice: Pre-stripped files found:
/var/tmp/portage/vbslogs/elog/app-misc/rox-filer-2.11:20210305-174058.log:QA Notice: Files built without respecting LDFLAGS have been detected
/var/tmp/portage/vbslogs/elog/app-misc/rox-filer-2.11:20210305-174058.log:QA Notice: Pre-stripped files found:
Finished grepping.
my-test-container-snap-19702 ~ # emacs /var/tmp/portage/vbslogs/build/app-misc/rox-filer-2.11:20210305-174048.log

Acknowledgements / TODO

  • The scripts are most likely awful, but after I've gotten them to work, I haven't looked back. https://imgs.xkcd.com/comics/is_it_worth_the_time.png
  • The prtester.sh itself can be used to build a tinderbox checking all commits, but an automated bug-reporting system would be needed then. However, it might be good for overlays. You'll need to store the git checkout of a previous run, then compare that to ..HEAD.
  • test-pr.sh could run emerge --sync before applying patches, but it's not needed for my own workflow since I usually do all testing once a day.
  • I need better error handling with errors_and_qa_notices.sh. Take example list from https://github.com/toralf/tinderbox/blob/master/data/CATCH_QA and work with that. Also the rundown could use enhancements.
  • hosts test-pr.sh needs an "input" guard: if no input was given, error out immediately.
  • hosts test-pr.sh could enable giving parameters - like -i for an interactive mode where a shell is spawned before doing any testing, and -1 for doing 1 compile-test only instead of default 6. -n for testing a build time once with native symlinks, and 1 time after disabling native symlinks. Since some simple fixes don't require testing compiling for 6 times.
  • fullget.sh - make it work with any kind of git patch, not just from GH.
  • I'm making this public to hear feedback! Ideally I'd want an infra-hosted service with Github hook that tests PRs on-demand. After a Gentoo developer has reviewed the PR, they could launch a build-test from Github, which would then return PASS or FAIL to the PR with web-browsable logs.
  • Only consecutive duplicate entries gets removed, in other words, if someone makes 4 commits to a, a, b, b, only a and b gets tested. However if someone commits to a, b, a, b, then a and b gets tested twice. First I did go through the array with awk '!seen[$0]++', but the current method works 99 % of time and is much cleaner.
  • TODO: Study possibility to use SquashFS to reduce container image sizes.
  • TODO: Switch to tatt instead, with custom scripts?


See also