Через дибілкуватість із сортуванням числових версій арчевський 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.