]> git.pld-linux.org Git - projects/cleanbuild.git/blame - docker-builder.sh
use locally build rpms as poldek source
[projects/cleanbuild.git] / docker-builder.sh
CommitLineData
ce96f77c
ER
1#!/bin/sh
2set -e
3
4package=$1
ce96f77c 5
721c1de2 6test -n "$package" || exit 1
ce96f77c 7
ce96f77c 8dir=$(pwd)
721c1de2
ER
9image=pld/cleanbuild
10name=cleanbuild-$package
ce96f77c 11topdir=$dir/rpm
02524fcf 12home=/home/services/builder
73d3710b
ER
13buildsize="4G"
14
15# cleanup first
1a32b5c6
ER
16docker kill $name >/dev/null 2>&1 || :
17docker rm $name >/dev/null 2>&1 || :
73d3710b 18
d7525b86 19install -d $topdir/logs
ce96f77c
ER
20
21# start the container
22docker 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
31docker exec --user root $name chown builder:builder rpm/logs rpm/BUILD .ccache
ce96f77c
ER
32
33# fetch sources
34docker exec $name builder -g $package
35
36git_tag=$(GIT_DIR=$topdir/packages/$package/.git git describe --tags --always)
d7525b86 37buildlog=rpm/logs/${git_tag#auto/*/}.log
ce96f77c
ER
38
39# remove .la dependencies
a6742819 40docker exec $name cleanbuild/cleanup-la
ce96f77c
ER
41
42while 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
71done
This page took 0.446584 seconds and 4 git commands to generate.