Fix $HOME.
[nethome.git] / bin / mockupdate
1 #! /bin/bash
2 set -x
3
4 opts=
5 if [ "$1" = "-v" ];then
6         opts="-v"
7         shift
8 fi
9
10 quick=false
11 if [ "$1" = "-q" ];then
12         quick=true
13         shift
14 fi
15
16 if [ -z "$HOME" -o "$HOME" = "/" ];then
17         export HOME=/root
18 fi
19
20 for i in "$@";do
21         if [ "$i" = "${i#/var/lib/mock/}" ];then
22                 echo >&2 "$i not /var/lib/mock/*"
23                 exit 1
24         fi
25         if [ "$i" != "${i#*/root}" ];then
26                 echo >&2 "$i contains /root"
27                 exit 1
28         fi
29         if [ "$i" != "${i%-intel}" ];then
30                 continue
31         fi
32         set +x
33         l=""
34         b=""
35         for p in /proc/*/root;do
36                 l="`readlink $p`"
37                 if [ "${l#$i/}" != "$l" ];then
38                         p="${p#/proc/}"
39                         p="${p%/root}"
40                         b="$b $p"
41                 fi
42         done
43         set -x
44         if [ -n "$b" ];then
45                 echo >&2 "$i has existing processes: $b"
46                 continue
47         fi
48
49         r="$(basename $i|sed 's/\(-x86_64\|-i.86\)-.*$/\1/')"
50         r="$r$(basename $i|sed -n 's/^.*\(-x86_64\|-i.86\)-\(.*\)$/ --uniqueext=\2/p')"
51         /usr/local/sbin/mocksetup -u `basename $i`
52         rm -f $i/root/var/lib/rpm/__db.*
53         if ! $quick;then
54                 mock $opts -r $r --update
55                 mock $opts -r $r --install `cat $HOME/src/INSTALL`
56         fi
57         # Run: yum groupinstall buildsys-build
58         # Cleaning would undo the changes above.
59         # 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
60         # rpmdb: Build signature doesn't match environment
61         # on: fedora-{11,12}-i386
62         #if [ "$i" = "${i#*/fedora-rawhide-}" ];then
63         #       mock $opts -r `basename $i` --no-clean --no-cleanup-after --rebuild /usr/local/share/empty-0.1-1.src.rpm
64         #fi
65         # Just rpmbuild would error with:
66         # error: cannot open Packages index using db3 - Invalid argument (22)
67         rpm -r $i/root --rebuilddb
68         # Leftover usually just removing vital system packages:
69         rm -f $i/root/var/lib/yum/transaction-*
70         # Print duplicates:
71         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/'
72 done
73
74 echo done mockupdate "$*"