X-Git-Url: https://git.jankratochvil.net/?p=nethome.git;a=blobdiff_plain;f=bin%2Fmocksetup;h=b24afbc0d44ce17d7bf4e1bc743dd1420b7bf97a;hp=f4cf2fb13a77fbfaba17f57d8d8b09dc7069afb3;hb=b8be1b96db19decef6b6b1de6115aa7c5b50bb18;hpb=bf3fee7eee26bd1ddfcb66c1b1b2cc0be83af0bf diff --git a/bin/mocksetup b/bin/mocksetup index f4cf2fb..b24afbc 100755 --- a/bin/mocksetup +++ b/bin/mocksetup @@ -37,7 +37,10 @@ for r in $l;do fi echo >&2 -n "Locking $rpath/MOCK.mocksetup-lock ..." - lockfile -l 10 $rpath/MOCK.mocksetup-lock + if ! lockfile -1 -r 1 -s 1 $rpath/MOCK.mocksetup-lock;then + rm -f $rpath/MOCK.mocksetup-lock + lockfile -1 -r 1 -s 1 $rpath/MOCK.mocksetup-lock + fi echo >&2 " done" if $soft && [ -f $rpath/MOCK ];then @@ -70,7 +73,7 @@ for r in $l;do # mock -q -r $r chroot true echo "$rpath lock check" for n in passwd group;do - cat /etc/$n $rpath/etc/$n|perl -ne 'print if /^(?:[^:]*:){2}(5\d\d):/'|sort|uniq -u|tee -a $rpath/etc/$n + cat /etc/$n $rpath/etc/$n|perl -ne 'print if /^(?:[^:]*:){2}(10\d\d):/'|sort|uniq -u|tee -a $rpath/etc/$n done if [ ! -f $rpath/etc/mtab-orig ];then c="mv -f $rpath/etc/mtab $rpath/etc/mtab-orig" @@ -79,40 +82,113 @@ for r in $l;do echo $c; $c fi + cmp -s /etc/resolv.conf $rpath/etc/resolv.conf \ + || cp -p /etc/resolv.conf $rpath/etc/resolv.conf + dir="/dev/pts" c="umount $rpath$dir" - while $c 2>&1|grep -v ': not mounted$';do + if $c 2>&1|grep -v ': not \(mounted\|found\)$';then echo $c + fi + + dir="/dev/shm" + c="umount $rpath$dir" + if $c 2>&1|grep -v ': not \(mounted\|found\)$';then + echo $c + fi + + test -e $rpath/dev/pts && (rmdir $rpath/dev/pts || :) + if ! $u;then + mkdir -p $rpath/dev/pts + fi + test -e $rpath/dev/shm && (rmdir $rpath/dev/shm || :) + if ! $u;then + mkdir -p $rpath/dev/shm + fi + rm -f $rpath/dev/null + if ! $u;then + mknod -m 666 $rpath/dev/null c 1 3 + fi + rm -f $rpath/dev/full + if ! $u;then + mknod -m 666 $rpath/dev/full c 1 7 + fi + rm -f $rpath/dev/zero + if ! $u;then + mknod -m 666 $rpath/dev/zero c 1 5 + fi + rm -f $rpath/dev/random + if ! $u;then + mknod -m 666 $rpath/dev/random c 1 8 + fi + rm -f $rpath/dev/urandom + if ! $u;then + mknod -m 444 $rpath/dev/urandom c 1 9 + fi + rm -f $rpath/dev/tty + if ! $u;then + mknod -m 666 $rpath/dev/tty c 5 0 + fi + rm -f $rpath/dev/console + if ! $u;then + mknod -m 600 $rpath/dev/console c 5 1 + fi + rm -f $rpath/dev/ptmx + if ! $u;then + mknod -m 666 $rpath/dev/ptmx c 5 2 + fi + rm -f $rpath/dev/stdin + if ! $u;then + ln -s /proc/self/fd/0 $rpath/dev/stdin + fi + rm -f $rpath/dev/stdout + if ! $u;then + ln -s /proc/self/fd/1 $rpath/dev/stdout + fi + rm -f $rpath/dev/stderr + if ! $u;then + ln -s /proc/self/fd/2 $rpath/dev/stderr + fi + rm -f $rpath/dev/fd + if ! $u;then + ln -s /proc/self/fd $rpath/dev/fd + fi + + # Must be before umount of /quad + for cache in yum dnf;do + c="umount $rpath/var/cache/$cache" + if $c 2>&1|grep -v ': not \(mounted\|found\)$';then + echo $c + fi + if ! $u;then + if [ -d /var/cache/mock/$r/${cache}_cache ];then + cr=$r + else + cr=`echo $r|sed 's/-[^-]*$//'` + fi + if [ -d /var/cache/mock/$cr/${cache}_cache ];then + c="mount --bind /var/cache/mock/$cr/${cache}_cache $rpath/var/cache/${cache}" + echo $c; $c + fi + fi done - for dir in /home /usr/local/bin /dev /proc /sys /root;do + mkdir -p $rpath/quad + for dir in /home /usr/local/bin /proc /sys /root /quad;do c="umount $rpath$dir" - while $c 2>&1|grep -v ': not mounted$';do + if $c 2>&1|grep -v ': not \(mounted\|found\)$';then echo $c - done + fi if ! $u;then c="mount --bind $dir $rpath$dir" echo $c; $c fi done - dir="/dev/pts" if ! $u;then - c="mount --bind $dir $rpath$dir" + c="mount -t tmpfs mock_shmfs $rpath/dev/shm" echo $c; $c - fi - - c="umount $rpath/var/cache/yum" - while $c 2>&1|grep -v ': not mounted$';do - echo $c - done - if ! $u;then - if [ -d /var/cache/mock/$r/yum_cache ];then - cr=$r - else - cr=`echo $r|sed 's/-[^-]*$//'` - fi - c="mount --bind /var/cache/mock/$cr/yum_cache $rpath/var/cache/yum" + c="mount -t devpts -o mode=620,gid=5 mock_devpts $rpath/dev/pts" echo $c; $c fi @@ -126,17 +202,17 @@ for r in $l;do ln -s ../../src/debug $rpath/usr/local/src/debug fi - rm -f $rpath/usr/local/share/gdb/auto-load + rm -f $rpath/usr/local/share/gdb if ! $u;then - mkdir -p $rpath/usr/local/share/gdb - ln -s ../../../share/gdb/auto-load $rpath/usr/local/share/gdb/auto-load + mkdir -p $rpath/usr/local/share + ln -s ../../share/gdb $rpath/usr/local/share/gdb fi # Old systems incl. RHEL-6 do not feature it. if [ -d $rpath/etc/sudoers.d ];then rm -f $rpath/etc/sudoers.d/inteltest - if ! $u;then - ln /etc/sudoers.d/inteltest $rpath/etc/sudoers.d/inteltest + if ! $u;then : +# ln /etc/sudoers.d/inteltest $rpath/etc/sudoers.d/inteltest fi fi