image=registry.gitlab.com/pld-linux/cleanbuild
name=cleanbuild-$package
topdir=$dir/rpm
-home=/home/services/builder
+home=/home/builder
buildsize="4G"
# cleanup first
# start the container
docker run --name=$name -d \
+ -w $home \
-v $topdir:$home/rpm \
-v $dir:$home/cleanbuild \
-v $dir/cache/poldek:/var/cache/poldek \
--tmpfs $home/rpm/BUILD:rw,exec,nosuid,size=$buildsize \
$image
+# set the homedir
+docker exec --user=root -w / $name usermod -d $home builder
+
# these paths need to be accessible for builder
-docker exec --user=root $name chown builder:builder rpm rpm/logs rpm/BUILD .ccache
+docker exec --user=root -w / $name sh -c "cd $home && chown builder:builder rpm rpm/logs rpm/BUILD .ccache"
if [ ! -d $topdir/rpm-build-tools ]; then
docker exec $name builder --init-rpm-dir
# fetch sources and install deps
if [ -d $topdir/packages/$package ]; then
# chown, as it might be different owner (root) modified outside container
- docker exec --user=root $name chown -R builder:builder rpm/packages/$package
+ docker exec --user=root -w / $name chown -R builder:builder $home/rpm/packages/$package
fi
docker exec $name builder -g $package
# prevent network access like pld builders do
-docker exec --user=root $name setfacl -m u:builder:--- /etc/resolv.conf
+docker exec --user=root -w / $name setfacl -m u:builder:--- /etc/resolv.conf
git_tag=$(GIT_DIR=$topdir/packages/$package/.git git describe --tags --always)
buildlog=rpm/logs/${git_tag#auto/*/}.log
# install deps
docker exec $name builder -g -nn -R $package
# remove .la dependencies
- docker exec --user=root $name cleanbuild/cleanup-la
+ docker exec --user=root -w / $name $home/cleanbuild/cleanup-la
# reset findunusedbr state after deps install
- docker exec --user=root $name cleanbuild/findunusedbr -c / rpm/packages/$package/$package.spec
+ docker exec --user=root -w / $name $home/cleanbuild/findunusedbr -c / $home/rpm/packages/$package/$package.spec
# actual build
docker exec $name cleanbuild/teeboth $buildlog builder -nn -bb $package --define '__spec_clean_body %{nil}' && rc=$? || rc=$?
exit 6
fi
# need root to run poldek
- docker exec --user=root $name cleanbuild/findbr $builddir $buildlog > $findbr
+ docker exec --user=root -w / $name sh -c "cd $home && cleanbuild/findbr $builddir $buildlog" > $findbr
installed_something=false
while read pkg msg; do
# go for another try
$installed_something && continue
- docker exec --user=root $name cleanbuild/findunusedbr / rpm/packages/$package/$package.spec
+ docker exec --user=root -w / $name $home/cleanbuild/findunusedbr -c / $home/rpm/packages/$package/$package.spec
if [ $rc -eq 0 ]; then
# finished ok, cleanup