]> git.pld-linux.org Git - projects/cleanbuild.git/commitdiff
exec --user=root fails on docker for mac somewhy
authorElan Ruusamäe <glen@delfi.ee>
Wed, 26 Sep 2018 12:17:48 +0000 (15:17 +0300)
committerElan Ruusamäe <glen@delfi.ee>
Wed, 26 Sep 2018 12:17:48 +0000 (15:17 +0300)
cleanbuild-docker.sh

index 43e550ce08b35a8381cd098061164a2434ab7bf4..8183ab83aea6eec07a74a353d2a2e74a9a4dd011 100755 (executable)
@@ -9,7 +9,7 @@ dir=$(pwd)
 image=registry.gitlab.com/pld-linux/cleanbuild
 name=cleanbuild-$package
 topdir=$dir/rpm
-home=/home/services/builder
+home=/home/builder
 buildsize="4G"
 
 # cleanup first
@@ -20,6 +20,7 @@ install -d $topdir/logs
 
 # 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 \
@@ -27,8 +28,11 @@ docker run --name=$name -d \
        --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
@@ -37,12 +41,12 @@ fi
 # 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
@@ -52,9 +56,9 @@ while true; do
        # 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=$?
@@ -66,7 +70,7 @@ while true; do
                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
@@ -78,7 +82,7 @@ while true; 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
This page took 0.079234 seconds and 4 git commands to generate.