runone: nocommon: Do not disable DWZ.
[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 mkdir -p build
9 cd build
10 for pkg in "$@";do
11   #dnf --disablerepo='*' --enablerepo=$repos repoquery --requires "$pkg"|egrep '^(gcc|clang)' || continue
12   srcrpm="$pkg.src.rpm"
13   if [ -e "$srcrpm" ];then
14     continue
15   fi
16   rm -rf $srcrpm*
17   exec >>$srcrpm.log 2>&1
18   dnf --disablerepo='*' --enablerepo=$repos download --source "$pkg"
19   if [ ! -e $srcrpm ];then
20     touch $srcrpm.downloadfail
21     continue
22   fi
23   #rpm -q --requires -p $srcrpm|egrep '^(gcc|clang)' || continue
24 if false;then
25   rpm2archive $srcrpm
26   rm -rf $srcrpm.d
27   mkdir $srcrpm.d
28   cd $srcrpm.d
29    tar xzf ../$srcrpm.tgz
30    rm -f ../$srcrpm.tgz
31    name=$(echo "$pkg"|sed 's/-[^-]*-[^-]*$//')
32    if [ ! -e $name.spec ];then
33      touch ../$srcrpm.specfail
34      continue
35    fi
36    (echo '%global _find_debuginfo_dwz_opts %{nil}'
37 # It removes -fcommon, use redhat-rpm-config.patch instead.
38 #    echo '%global optflags %(echo %{optflags}|sed "s/ -g / -g -fdebug-types-section /")'
39     sed 's/^%\(\(define\|global\) *_find_debuginfo_dwz_opts\)/\1/'
40    ) <$name.spec >$name.spec.new
41    cp -p $name.spec     ../$srcrpm.spec
42    cp -p $name.spec.new ../$srcrpm.spec.new
43    diff -u $name.spec $name.spec.new || :
44    mv -f $name.spec.new $name.spec
45    if ! $mock --resultdir=$PWD/resultdir --buildsrpm --spec $name.spec --sources $PWD;then
46      touch ../$srcrpm.bsmockfail
47      continue
48    fi
49    if [ $[$(find resultdir -name "*.src.rpm"|wc -l)] -ne 1 ];then
50      touch ../$srcrpm.bsmockefail
51      continue
52    fi
53    # if not pkg.endswith('.rpm'): log.error("%s doesn't appear to be an rpm - skipping", pkg)
54    mv -f resultdir/*.src.rpm ../$srcrpm.nc.rpm
55    cd ..
56   test -e $srcrpm.nc.rpm
57   rm -rf $srcrpm.d
58 else
59   ln $srcrpm $srcrpm.nc.rpm
60 fi
61   for ext in "" ".nc.rpm";do
62     resultdir=$PWD/$srcrpm$ext.resultdir
63     test ! -e $resultdir
64     set +e
65     # --chain instead of --rebuild as otherwise -a does not work
66     $mock --resultdir=$resultdir --nocheck $(
67       if [ "$ext" = ".nc.rpm"  ];then echo -a https://www.jankratochvil.net/t/nocommon/;fi
68       if [ "$ext" = ".dt.rpm"  ];then echo -a https://www.jankratochvil.net/t/rpmdts/  ;fi
69       if [ "$ext" = ".dt5.rpm" ];then echo -a https://www.jankratochvil.net/t/rpmdts5/ ;fi
70       ) --chain $srcrpm$ext &>$srcrpm$ext.mocklog
71     mockrc=$?
72     set -e
73     test -e $resultdir
74     #rm -f $srcrpm$ext
75     # --chain ignores --resultdir
76     resultdirsrc="$(sed -n 's/^INFO: Results out to: //p' $srcrpm$ext.mocklog)"
77     if [ ! -e $resultdirsrc/*/root.log ];then
78       touch $srcrpm$ext.mockfail
79       break
80     fi
81     # With --chain $resultdir contains just some small *.log files.
82     rm -rf $resultdir
83     mv `dirname $resultdirsrc/*/root.log` $resultdir
84     if [ $mockrc -ne 0 ];then
85       touch $srcrpm$ext.mockfail
86       break
87     fi
88     echo >$srcrpm$ext.rpmsize $(du -sbc /dev/null $resultdir/*-debuginfo*.rpm|tail -n1|awk '{print $1}')
89     size=0
90     for i in $resultdir/*-debuginfo*.rpm;do
91       if [ -e "$i" ];then
92         sizethis="$(rpm -q --qf '%{longsize}' -p $i)"
93         [[ "$sizethis" =~ ^[0-9]+$ ]]
94         size=$[$size+$sizethis]
95       fi
96     done
97     echo >$srcrpm$ext.filesize $size
98     mkdir $srcrpm$ext.rpms
99     mv -f $resultdir/*-debuginfo*.rpm $srcrpm$ext.rpms || :
100     rm -rf $resultdir
101   done
102   touch $srcrpm.done
103 done