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