blob: 0b79eeb9df094b64ea15d690d96b15073ab898c8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
rootdir=$(pwd -P)
pkglist="$rootdir/acceptable-package-list.txt"
distclean () {
echo "Removing traces of previous builds from $rootdir"
local allpkgs=$(find $rootdir -maxdepth 3 -name APKBUILD -print | sed -e 's/\/APKBUILD//g' | sort)
for p in $allpkgs ; do
cd $p
pwd
abuild clean 2>&1
abuild cleanoldpkg 2>&1
abuild cleanpkg 2>&1
abuild cleancache 2>&1
done
}
pkgcheck () {
local installed
installed=$(apk info)
for q in $installed ; do
if [ -z "$(grep $q $pkglist)" ] ; then
echo "Removing unwanted installed package $q"
sudo apk del $q
fi
done
}
build () {
local pkgs
local maintainer
local pkgno
local failed
pkgs=$($rootdir/aport.lua deplist $rootdir $1)
pktcnt=$(echo $pkgs | wc -w)
pkgno=0
failed=0
for p in $pkgs ; do
if [ ! -d "$rootdir/$1/$p" ] ; then
continue
fi
pkgcheck
pkgno=$(expr "$pkgno" + 1)
echo "Building $p ($pkgno of $pktcnt in $1 - $failed failed)"
cd $rootdir/$1/$p
if [ -n "$debug" ] ; then
apk info | sort > $rootdir/packages.$1.$pkgno.$p.before
fi
abuild -rm > $rootdir/$1_$p.txt 2>&1
if [ "$?" = "0" ] ; then
if [ -z "$debug" ] ; then
rm $rootdir/$1_$p.txt
fi
else
echo "Package $1/$p failed to build (output in $rootdir/$1_$p.txt)"
if [ -n "$mail" ] ; then
maintainer=$(grep Maintainer APKBUILD | cut -d " " -f 3- | sed 's/.*< *//;s/ *>.*//;' )
if [ -n "$maintainer" ] ; then
recipients="$maintainer,alpine-devel@lists.alpinelinux.org"
else
recipients="alpine-devel@lists.alpinelinux.org"
fi
echo "$1/$p: sending mail to [$recipients]" >> $rootdir/mail.lst
if [ $(wc -l $rootdir/$1_$p.txt | cut -f 1 -d ' ') -gt 400 ]; then
TMPFILE="$(mktemp $1_$p.XXXXXX).txt" || exit 1
head -n 200 $rootdir/$1_$p.txt >> $TMPFILE
echo "-------" >> $TMPFILE
echo "snip..." >> $TMPFILE
echo "-------" >> $TMPFILE
tail -n 200 $rootdir/$1_$p.txt >> $TMPFILE
BUILDLOG="$TMPFILE"
else
BUILDLOG="$rootdir/$1_$p.txt"
fi
echo "Package $1/$p failed to build. Build output is attached" | \
email -s "NOT SPAM $p build report" -n "AlpineBuildBot" -f "buildbot@alpinelinux.org" -a "$BUILDLOG" "$recipients"
if [ "$BUILDLOG" = "$TMPFILE" ]; then
rm $BUILDLOG
fi
fi
failed=$(expr "$failed" + 1)
fi
if [ -n "$debug" ] ; then
apk info | sort > $rootdir/packages.$1.$pkgno.$p.after
fi
done
if [ "$failed" = "0" ] ; then
echo "All $pktcnt packages in $1 built successfully" >> aport-build-log.txt
fi
cd $rootdir
}
touch START_OF_BUILD.txt
rm -f mail.lst
unset clean
unset mail
while getopts "cmd" opt; do
case $opt in
'c') clean="--clean";;
'm') mail="--mail";;
'd') debug="--debug";;
esac
done
if [ -n "$clean" ] ; then
echo "Invoked with 'clean' option. This will take a while ..."
tmp=$(distclean)
echo "Done"
fi
echo "Refresh aports tree"
git pull
sudo apk -U upgrade
for s in main testing unstable ; do
echo "Building packages in $s"
pkgcheck
build $s
done
touch END_OF_BUILD.txt
echo "Done"
|