]>
Commit | Line | Data |
---|---|---|
ce96f77c ER |
1 | #!/bin/sh |
2 | set -e | |
3 | ||
4 | package=$1 | |
ce96f77c | 5 | |
721c1de2 | 6 | test -n "$package" || exit 1 |
ce96f77c | 7 | |
ce96f77c | 8 | dir=$(pwd) |
721c1de2 ER |
9 | image=pld/cleanbuild |
10 | name=cleanbuild-$package | |
ce96f77c | 11 | topdir=$dir/rpm |
02524fcf | 12 | home=/home/services/builder |
73d3710b ER |
13 | buildsize="4G" |
14 | ||
15 | # cleanup first | |
1a32b5c6 ER |
16 | docker kill $name >/dev/null 2>&1 || : |
17 | docker rm $name >/dev/null 2>&1 || : | |
73d3710b | 18 | |
d7525b86 | 19 | install -d $topdir/logs |
ce96f77c ER |
20 | |
21 | # start the container | |
22 | docker run --name=$name -d \ | |
02524fcf ER |
23 | -v $topdir:$home/rpm \ |
24 | -v $dir:$home/cleanbuild \ | |
d7525b86 ER |
25 | -v $dir/cache/poldek:/var/cache/poldek \ |
26 | -v $dir/cache/ccache/$package:/home/services/builder/.ccache \ | |
73d3710b | 27 | --tmpfs $home/rpm/BUILD:rw,exec,nosuid,size=$buildsize \ |
ce96f77c ER |
28 | $image |
29 | ||
d7525b86 ER |
30 | # these paths need to be accessible for builder |
31 | docker exec --user root $name chown builder:builder rpm/logs rpm/BUILD .ccache | |
ce96f77c ER |
32 | |
33 | # fetch sources | |
34 | docker exec $name builder -g $package | |
35 | ||
36 | git_tag=$(GIT_DIR=$topdir/packages/$package/.git git describe --tags --always) | |
d7525b86 | 37 | buildlog=rpm/logs/${git_tag#auto/*/}.log |
ce96f77c ER |
38 | |
39 | # remove .la dependencies | |
a6742819 | 40 | docker exec $name cleanbuild/cleanup-la |
ce96f77c ER |
41 | |
42 | while true; do | |
d7525b86 | 43 | docker exec $name cleanbuild/teeboth $buildlog builder -nn -bb -R $package --define 'clean exit 0' && rc=$? || rc=$? |
ce96f77c ER |
44 | |
45 | findbr=$package.findbr.log | |
ded7b68b ER |
46 | builddir=$(docker exec $name sh -c 'test ! -d rpm/BUILD/* || echo rpm/BUILD/*') |
47 | if [ -z "$builddir" ]; then | |
48 | echo >&2 "No build dir. Build failed?" | |
49 | exit 6 | |
50 | fi | |
110507d2 ER |
51 | # need root to run poldek |
52 | docker exec --user=root $name cleanbuild/findbr $builddir $buildlog > $findbr | |
ce96f77c ER |
53 | |
54 | installed_something=false | |
55 | while read pkg msg; do | |
1a32b5c6 | 56 | ./addbr rpm/packages/$package/$package.spec "$pkg" "$msg" || continue |
ce96f77c ER |
57 | installed_something=true |
58 | done < $findbr | |
59 | rm -f $findbr | |
60 | ||
61 | # go for another try | |
62 | $installed_something && continue | |
63 | ||
ce96f77c | 64 | if [ $rc -eq 0 ]; then |
69f15f52 ER |
65 | # finished ok, cleanup |
66 | docker kill $name && docker rm $name || : | |
ce96f77c | 67 | fi |
ce96f77c | 68 | |
69f15f52 ER |
69 | # propagate error |
70 | exit $rc | |
71 | done |