aboutsummaryrefslogtreecommitdiffstats
path: root/rebuild-alpine.sh
diff options
context:
space:
mode:
Diffstat (limited to 'rebuild-alpine.sh')
-rwxr-xr-xrebuild-alpine.sh94
1 files changed, 94 insertions, 0 deletions
diff --git a/rebuild-alpine.sh b/rebuild-alpine.sh
new file mode 100755
index 0000000000..24ce9d47b5
--- /dev/null
+++ b/rebuild-alpine.sh
@@ -0,0 +1,94 @@
+rootdir=$(pwd -P)
+
+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
+}
+
+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
+ 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-)
+ if [ -n "$maintainer" ] ; then
+ recipients="$maintainer -cc dev@lists.alpinelinux.org"
+ else
+ recipients="dev@lists.alpinelinux.org"
+ fi
+ if [ -n "$mail" ] ; then
+ echo "Package $1/$p failed to build. Build output is attached" | \
+ email -s "NOT SPAM $p build report" -a $rootdir/$1_$p.txt \
+ -n AlpineBuildBot -f buildbot@alpinelinux.org $recipients
+ fi
+ fi
+ failed=$(expr "$failed" + 1)
+ fi
+ if [ -n "$debug" ] ; then
+ apk info | sort > $rootdir/packages.$1.$pkgno.$p.after
+ fi
+ done
+ 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
+
+#cd main/build-base
+#abuild -Ru
+#cd $rootdir
+
+for s in main testing unstable ; do
+ echo "Building packages in $s"
+ build $s
+done
+
+touch END_OF_BUILD.txt
+
+echo "Done"
+