README: +mockfail* mv
[massrebuild.git] / runone
1 #! /bin/bash
2 set -ex
3 repos=$1
4 shift
5 mock="mock -v -r fedora-rawhide-x86_64 --uniqueext=mass$$ --no-bootstrap-chroot --disable-plugin=yum_cache"
6 # https://bugzilla.redhat.com/show_bug.cgi?id=1869030 glibc 2.32.9000-1 snapshot build in rawhide breaks systemd-nspawn based chroots
7 mock="$mock --isolation=simple"
8 # (1) inaccessible plugin file plugin/annobin.so expanded from short plugin name annobin
9 # (2) -a gets ignored.
10 mock="$mock --disable-plugin=root_cache"
11 mkdir -p build
12 cd build
13 for pkg in "$@";do
14   #dnf --disablerepo='*' --enablerepo=$repos repoquery --requires "$pkg"|egrep '^(gcc|clang)' || continue
15   srcrpm="$pkg.src.rpm"
16   if [ -e "$srcrpm" ];then
17     continue
18   fi
19   rm -rf $srcrpm*
20   exec >>$srcrpm.log 2>&1
21   dnf --disablerepo='*' --enablerepo=$repos download --source "$pkg"
22   if [ ! -e $srcrpm ];then
23     touch $srcrpm.downloadfail
24     continue
25   fi
26   #rpm -q --requires -p $srcrpm|egrep '^(gcc|clang)' || continue
27 if true;then
28   rpm2archive $srcrpm
29   rm -rf $srcrpm.d
30   mkdir $srcrpm.d
31   cd $srcrpm.d
32    tar xzf ../$srcrpm.tgz
33    rm -f ../$srcrpm.tgz
34    name=$(echo "$pkg"|sed 's/-[^-]*-[^-]*$//')
35    if [ ! -e $name.spec ];then
36      touch ../$srcrpm.specfail
37      continue
38    fi
39    (echo '%global _find_debuginfo_dwz_opts %{nil}'
40 # It removes -fcommon, use redhat-rpm-config.patch instead.
41 #    echo '%global optflags %(echo %{optflags}|sed "s/ -g / -g -fdebug-types-section /")'
42     sed 's/^%\(\(define\|global\) *_find_debuginfo_dwz_opts\)/\1/'
43    ) <$name.spec >$name.spec.new
44    cp -p $name.spec     ../$srcrpm.spec
45    cp -p $name.spec.new ../$srcrpm.spec.new
46    diff -u $name.spec $name.spec.new || :
47    mv -f $name.spec.new $name.spec
48    if ! $mock --resultdir=$PWD/resultdir --buildsrpm --spec $name.spec --sources $PWD;then
49      touch ../$srcrpm.bsmockfail
50      continue
51    fi
52    if [ $[$(find resultdir -name "*.src.rpm"|wc -l)] -ne 1 ];then
53      touch ../$srcrpm.bsmockefail
54      continue
55    fi
56    # if not pkg.endswith('.rpm'): log.error("%s doesn't appear to be an rpm - skipping", pkg)
57    mv -f resultdir/*.src.rpm ../$srcrpm.no.rpm
58    cd ..
59   test -e $srcrpm.no.rpm
60   rm -rf $srcrpm.d
61 else
62   ln $srcrpm $srcrpm.nc.rpm
63 fi
64   for ext in "" ".no.rpm";do
65     resultdir=$PWD/$srcrpm$ext.resultdir
66     test ! -e $resultdir
67     set +e
68     $mock --resultdir=$resultdir --nocheck $(
69       if [ "$ext" = ".nc.rpm"  ];then echo -a https://www.jankratochvil.net/t/nocommon/;fi
70       if [ "$ext" = ".dt.rpm"  ];then echo -a https://www.jankratochvil.net/t/rpmdts/  ;fi
71       if [ "$ext" = ".dt5.rpm" ];then echo -a https://www.jankratochvil.net/t/rpmdts5/ ;fi
72       ) --rebuild $srcrpm$ext &>$srcrpm$ext.mocklog
73     mockrc=$?
74     set -e
75     test -e $resultdir
76     if [ $mockrc -ne 0 ];then
77       touch $srcrpm$ext.mockfail
78       break
79     fi
80     echo >$srcrpm$ext.rpmsize $(du -sbc /dev/null $resultdir/*-debuginfo*.rpm|tail -n1|awk '{print $1}')
81     size=0
82     for i in $resultdir/*-debuginfo*.rpm;do
83       if [ -e "$i" ];then
84         sizethis="$(rpm -q --qf '%{longsize}' -p $i)"
85         [[ "$sizethis" =~ ^[0-9]+$ ]]
86         size=$[$size+$sizethis]
87       fi
88     done
89     echo >$srcrpm$ext.filesize $size
90     mkdir $srcrpm$ext.rpms
91     mv -f $resultdir/*-debuginfo*.rpm $srcrpm$ext.rpms || :
92 #    rm -rf $resultdir
93     rm -f $resultdir/*.rpm
94   done
95   touch $srcrpm.done
96 done