]> git.pld-linux.org Git - projects/cleanbuild.git/blob - docker-builder.sh
require package argument
[projects/cleanbuild.git] / docker-builder.sh
1 #!/bin/sh
2 set -e
3
4 package=$1
5
6 test -n "$package" || exit 1
7
8 dir=$(pwd)
9 image=pld/cleanbuild
10 name=cleanbuild-$package
11 topdir=$dir/rpm
12 cache=$dir/cache
13 home=/home/services/builder
14 buildsize="4G"
15
16 # cleanup first
17 docker kill $name || :
18 docker rm $name || :
19
20 install -d $topdir/bin $cache/poldek
21
22 # start the container
23 docker run --name=$name -d \
24         -v $topdir:$home/rpm \
25         -v $dir:$home/cleanbuild \
26         -v $cache/poldek:/var/cache/poldek \
27         -v $dir/ccache/$package:/home/services/builder/.ccache \
28         --tmpfs $home/rpm/BUILD:rw,exec,nosuid,size=$buildsize \
29         $image
30
31 if [ ! -d $topdir/packages ]; then
32         uid=$(docker exec $name id -u builder)
33         gid=$(docker exec $name getgid builder)
34         sudo chown $uid:$gid $topdir
35         docker exec $name builder --init-rpm-dir
36 fi
37
38 # fetch sources
39 docker exec $name builder -g $package
40
41 git_tag=$(GIT_DIR=$topdir/packages/$package/.git git describe --tags --always)
42 buildlog=${git_tag#auto/*/}.log
43
44 # remove .la dependencies
45 cat > $topdir/bin/cleanup-la <<'EOF'
46 #!/bin/sh
47 find /usr/lib{,64} -name "*.la" -print0 | xargs -0 grep -El "dependency_libs='.+'"
48 exit 0
49 EOF
50 chmod +x $topdir/bin/cleanup-la
51 docker exec $name sh -xc '~/rpm/bin/cleanup-la'
52
53 while true; do
54         docker exec $name cleanbuild/teeboth cleanbuild/$buildlog builder -nn -bb -R $package && rc=$? || rc=$?
55
56         findbr=$package.findbr.log
57
58         docker exec $name cleanbuild/findbr rpm/BUILD/* cleanbuild/$buildlog > $findbr
59
60         installed_something=false
61         while read pkg msg; do
62                 ./addbr $package "$pkg" "$msg"
63                 installed_something=true
64         done < $findbr
65         rm -f $findbr
66
67         # go for another try
68         $installed_something && continue
69
70         if [ $rc -eq 0 ]; then
71                 # finished ok, cleanup
72                 docker kill $name && docker rm $name || :
73         fi
74
75         # propagate error
76         exit $rc
77 done
This page took 0.064486 seconds and 3 git commands to generate.