#! /bin/bash set -x opts= if [ "$1" = "-v" ];then opts="-v" shift fi quick=false if [ "$1" = "-q" ];then quick=true shift fi if [ -z "$HOME" -o "$HOME" = "/" ];then export HOME=/root fi for i in "$@";do if [ "$i" = "${i#/var/lib/mock/}" ];then echo >&2 "$i not /var/lib/mock/*" exit 1 fi if [ "$i" != "${i#*/root}" ];then echo >&2 "$i contains /root" exit 1 fi if [ "$i" != "${i%-intel}" ];then continue fi set +x l="" b="" for p in /proc/*/root;do l="`readlink $p`" if [ "${l#$i/}" != "$l" ];then p="${p#/proc/}" p="${p%/root}" b="$b $p" fi done set -x if [ -n "$b" ];then echo >&2 "$i has existing processes: $b" continue fi r="$(basename $i|sed 's/\(-x86_64\|-i.86\)-.*$/\1/')" r="$r$(basename $i|sed -n 's/^.*\(-x86_64\|-i.86\)-\(.*\)$/ --uniqueext=\2/p')" /usr/local/sbin/mocksetup -u `basename $i` if ! $quick;then rm -f $i/root/var/lib/rpm/__db.* mock $opts -r $r --update mock $opts -r $r --install `cat $HOME/src/INSTALL` # Otherwise: error: cannot open Packages index using db3 - Invalid argument (22) if [ "${i#*/epel-[45]-}" = "$i" ];then rm -f $i/root/var/lib/rpm/__db.* mock $opts -r $r --shell 'package-cleanup --cleandupes' rm -f $i/root/var/lib/rpm/__db.* mock $opts -r $r --update mock $opts -r $r --install `cat $HOME/src/INSTALL` fi fi # Otherwise: error: cannot open Packages index using db3 - Invalid argument (22) if [ "${i#*/epel-[45]-}" = "$i" ];then rm -f $i/root/var/lib/rpm/__db.* mock $opts -r $r --shell 'package-cleanup --cleandupes' fi rm -f $i/root/var/lib/rpm/__db.* # Run: yum groupinstall buildsys-build # Cleaning would undo the changes above. # file /lib/libnssutil3.so conflicts between attempted installs of nss-3.12.3.99.3-10.fc12.i686 and nss-util-3.12.3.99.3-9.fc12.i686 # rpmdb: Build signature doesn't match environment # on: fedora-{11,12}-i386 #if [ "$i" = "${i#*/fedora-rawhide-}" ];then # mock $opts -r `basename $i` --no-clean --no-cleanup-after --rebuild /usr/local/share/empty-0.1-1.src.rpm #fi # Just rpmbuild would error with: # error: cannot open Packages index using db3 - Invalid argument (22) rpm -r $i/root --rebuilddb # Leftover usually just removing vital system packages: rm -f $i/root/var/lib/yum/transaction-* # Print duplicates: rpm -r $i/root --qf '%{name}.%{arch}\n' -qa|sort|uniq -d|grep -v '^kernel\.'|sed -e '1s/^/ror duplicity:\n/' -e '1s/^/mockupdate er/' done echo done mockupdate "$*"