build: Use $HOME/ path for errs12.
[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         if ! $quick;then
53                 rm -f $i/root/var/lib/rpm/__db.*
54                 mock $opts -r $r --update
55                 mock $opts -r $r --install `cat $HOME/src/INSTALL`
56                 # Otherwise: error: cannot open Packages index using db3 - Invalid argument (22)
57                 if [ "${i#*/epel-[45]-}" = "$i" ];then
58                         rm -f $i/root/var/lib/rpm/__db.*
59                         mock $opts -r $r --shell 'package-cleanup --cleandupes'
60                         rm -f $i/root/var/lib/rpm/__db.*
61                         mock $opts -r $r --update
62                         mock $opts -r $r --install `cat $HOME/src/INSTALL`
63                 fi
64         fi
65         # Otherwise: error: cannot open Packages index using db3 - Invalid argument (22)
66         if [ "${i#*/epel-[45]-}" = "$i" ];then
67                 rm -f $i/root/var/lib/rpm/__db.*
68                 mock $opts -r $r --shell 'package-cleanup --cleandupes'
69         fi
70         rm -f $i/root/var/lib/rpm/__db.*
71         # Run: yum groupinstall buildsys-build
72         # Cleaning would undo the changes above.
73         # 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
74         # rpmdb: Build signature doesn't match environment
75         # on: fedora-{11,12}-i386
76         #if [ "$i" = "${i#*/fedora-rawhide-}" ];then
77         #       mock $opts -r `basename $i` --no-clean --no-cleanup-after --rebuild /usr/local/share/empty-0.1-1.src.rpm
78         #fi
79         # Just rpmbuild would error with:
80         # error: cannot open Packages index using db3 - Invalid argument (22)
81         rpm -r $i/root --rebuilddb
82         # Leftover usually just removing vital system packages:
83         rm -f $i/root/var/lib/yum/transaction-*
84         # Print duplicates:
85         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/'
86 done
87
88 echo done mockupdate "$*"