Hasher/parallel
< Hasher
Для применения нескольких экземпляров hasher одновременно следует создать дополнительные пары псевдопользователей при помощи hasher-useradd с --number=1 и далее, а также дополнительные префиксы (например, $TMP/hasherN; обратите внимание, что при отсутствии явного указания hsh и компания пытаются определить N по правам на содержимое префиксного каталога).
При желании автоматизировать параллельную сборку можно воспользоваться parallel; например, mike@ делал так:
~/bin/rebuild-hsh-quiet:
#!/bin/sh -e [ $# -ge 1 ] || exit 1 num= case "$1" in -[1-9]) num="${1#-}"; shift;; esac mkdir -p ~/logs-parallel/{DONE,FAILED} for i in "$@"; do f="`basename "$i"`" l=~/logs-parallel/"$f" o=~/hasher/repo/SRPMS.hasher/"$f" # FIXME: looks like ENOFILE provoking bug somewhere while :; do LANG=C hsh ${num:+--number=$num} \ "$TMP/hasher$num" "$i" \ >"$l" 2>&1 \ && d=DONE || d=FAILED if tail "$l" | grep -qs "^E: I wasn't able to locate file"; then echo -n "rebuilding $i ... " chmod +x "$l" else echo "built $i" chmod -x "$l" break fi done mv "$l" ~/logs-parallel/"$d"/ done
~/bin/nightly-rehash-parallel:
#!/bin/sh rm -rf ~/logs-parallel/{DONE,FAILED} cd ~/repo/SRPMS.hasher && ls -rt *.src.rpm | time parallel --jobs 4 --load 3 --delay 5 --eta 'rebuild-hsh-quiet -{%} {}'