blob: 4e4a85169b8d226de59d676cf3e8a93b33b2c1f1 (
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
130
131
|
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 -cc alpine-devel@lists.alpinelinux.org"
else
recipients="alpine-devel@lists.alpinelinux.org"
fi
if [ -n "$mail" ] ; then
echo "sending mail to [$recipients]"
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" -a $BUILDLOG \
-n AlpineBuildBot -f buildbot@alpinelinux.org $recipients
if [ "$BUILDLOG" = "$TMPFILE" ]; then
rm $BUILDLOG
fi
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
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"
|