4 if [ "$1" = "-u" ];then
10 # Do not rebuild the tree if it looks as already setup.
11 if [ "$1" = "-s" ];then
17 if [ "$1" = "-h" ];then
18 echo >&2 "$0 [/var/lib/mock/]<ROOTNAME>..."
22 l="`echo /var/lib/mock/*`"
27 trap 'echo >&2 FATAL ERROR' EXIT
30 r="`echo "$r"|tr -s /`"
31 r="${r#/var/lib/mock/}"
33 rpath="/var/lib/mock/$r/root"
34 if [ ! -d "$rpath" ];then
35 echo >&2 "$rpath does not exist"
39 echo >&2 -n "Locking $rpath/MOCK.mocksetup-lock ..."
40 if ! lockfile -1 -r 1 -s 1 $rpath/MOCK.mocksetup-lock;then
41 rm -f $rpath/MOCK.mocksetup-lock
42 lockfile -1 -r 1 -s 1 $rpath/MOCK.mocksetup-lock
46 if $soft && [ -f $rpath/MOCK ];then
47 rm -f $rpath/MOCK.mocksetup-lock
48 echo >&2 "Unlocked $rpath/MOCK.mocksetup-lock ."
54 for p in /proc/*/root;do
55 l="`readlink $p || :`"
56 if [ "${l#/var/lib/mock/$r/}" != "$l" ];then
63 echo >&2 "$rpath has existing processes: $b"
65 rm -f $rpath/MOCK.mocksetup-lock
66 echo >&2 "Unlocked $rpath/MOCK.mocksetup-lock ."
72 # It fails on already mounted /proc. But we do not need it.
73 # mock -q -r $r chroot true echo "$rpath lock check"
75 for n in passwd group;do
76 cat /etc/$n $rpath/etc/$n|perl -ne 'print if /^(?:[^:]*:){2}(10\d\d):/'|sort|uniq -u|tee -a $rpath/etc/$n
78 if [ ! -f $rpath/etc/mtab-orig ];then
79 c="mv -f $rpath/etc/mtab $rpath/etc/mtab-orig"
81 c="ln -s /proc/mounts $rpath/etc/mtab"
85 cp -p /etc/resolv.conf $rpath/etc/resolv.conf
89 if $c 2>&1|grep -v ': not \(mounted\|found\)$';then
95 if $c 2>&1|grep -v ': not \(mounted\|found\)$';then
99 test -e $rpath/dev/pts && rmdir $rpath/dev/pts
101 mkdir -p $rpath/dev/pts
103 test -e $rpath/dev/shm && rmdir $rpath/dev/shm
105 mkdir -p $rpath/dev/shm
107 rm -f $rpath/dev/null
109 mknod -m 666 $rpath/dev/null c 1 3
111 rm -f $rpath/dev/full
113 mknod -m 666 $rpath/dev/full c 1 7
115 rm -f $rpath/dev/zero
117 mknod -m 666 $rpath/dev/zero c 1 5
119 rm -f $rpath/dev/random
121 mknod -m 666 $rpath/dev/random c 1 8
123 rm -f $rpath/dev/urandom
125 mknod -m 444 $rpath/dev/urandom c 1 9
129 mknod -m 666 $rpath/dev/tty c 5 0
131 rm -f $rpath/dev/console
133 mknod -m 600 $rpath/dev/console c 5 1
135 rm -f $rpath/dev/ptmx
137 mknod -m 666 $rpath/dev/ptmx c 5 2
139 rm -f $rpath/dev/stdin
141 ln -s /proc/self/fd/0 $rpath/dev/stdin
143 rm -f $rpath/dev/stdout
145 ln -s /proc/self/fd/1 $rpath/dev/stdout
147 rm -f $rpath/dev/stderr
149 ln -s /proc/self/fd/2 $rpath/dev/stderr
153 ln -s /proc/self/fd $rpath/dev/fd
156 mkdir -p $rpath/unsafe
157 for dir in /home /usr/local/bin /proc /sys /root /unsafe;do
158 c="umount $rpath$dir"
159 if $c 2>&1|grep -v ': not mounted$';then
163 c="mount --bind $dir $rpath$dir"
169 c="mount -t tmpfs mock_shmfs $rpath/dev/shm"
171 c="mount -t devpts -o mode=620,gid=5 mock_devpts $rpath/dev/pts"
175 c="umount $rpath/var/cache/yum"
176 if $c 2>&1|grep -v ': not mounted$';then
180 if [ -d /var/cache/mock/$r/yum_cache ];then
183 cr=`echo $r|sed 's/-[^-]*$//'`
185 c="mount --bind /var/cache/mock/$cr/yum_cache $rpath/var/cache/yum"
189 rm -f $rpath/usr/local/lib/debug
191 ln -s ../../lib/debug $rpath/usr/local/lib/debug
194 rm -f $rpath/usr/local/src/debug
196 ln -s ../../src/debug $rpath/usr/local/src/debug
199 rm -f $rpath/usr/local/share/gdb
201 mkdir -p $rpath/usr/local/share
202 ln -s ../../share/gdb $rpath/usr/local/share/gdb
205 # Old systems incl. RHEL-6 do not feature it.
206 if [ -d $rpath/etc/sudoers.d ];then
207 rm -f $rpath/etc/sudoers.d/inteltest
209 # ln /etc/sudoers.d/inteltest $rpath/etc/sudoers.d/inteltest
217 rm -f $rpath/MOCK.mocksetup-lock
218 echo >&2 "Unlocked $rpath/MOCK.mocksetup-lock ."
220 trap 'echo >&2 done' EXIT