Через дибілкуватість із сортуванням числових версій арчевський repo-add вважає, що 3.9 новіше за 3.10. Лікується це так:

repo-add pf-repo.db.tar.gz `find . -name "*.pkg.tar.xz" | sort -V`

З деб-пакетами все простіше:

dpkg-scanpackages -m pf /dev/null | gzip -9c > pf/Packages.gz

Довготривалі команди, які треба виконувати у screen через ssh, запускаються отак:

screen -U -d -m -S build-helper ./build-helper-worker.sh

Тут скрипт build-helper-worker.sh якраз і містить виклики через ssh. Наприклад:

#!/usr/bin/env bash

ver="pf-3.10"
ssh arch /home/pf/build-helper-chrooter.sh $ver
ssh debian /home/pf/build-helper-chrooter.sh $ver
ssh ubuntu /home/pf/build-helper-chrooter.sh $ver

Скрипт build-helper-chrooter.sh — це вже штука, яка запускає компіляцію в chroot’і:

#!/usr/bin/env bash

sudo chroot /home/pf/chroots/amd64 su pf -c "TERM=xterm /home/pf/build-helper-1.sh $1"
sudo chroot /home/pf/chroots/i686 su pf -c "TERM=xterm /home/pf/build-helper-1.sh $1"

А build-helper-1.sh — скрипт, специфічний для кожного chroot’а. Наприклад:

#!/usr/bin/env bash

cd /home/pf/kernel/pf-kernel
rm *.xz
git pull
echo $1
git checkout $1
scripts/build-pf.sh arch

Це все маленькі трюки із власноруч склепаної білд-ферми для pf-kernel.