Use dockerfiles for supervisor

This commit is contained in:
Pascal Vizeli 2017-03-15 01:32:13 +01:00
parent 23ac642206
commit a3b0bf7e91
8 changed files with 70 additions and 27 deletions

11
.gitmodules vendored
View File

@ -1,11 +0,0 @@
[submodule "supervisor-base/openembedded-core"]
path = supervisor-base/openembedded-core
url = git://git.openembedded.org/openembedded-core
branch = morty
[submodule "supervisor-base/bitbake"]
path = supervisor-base/bitbake
url = git://git.openembedded.org/bitbake
[submodule "supervisor-base/meta-openembedded"]
path = supervisor-base/meta-openembedded
url = git://git.openembedded.org/meta-openembedded
branch = morty

View File

@ -25,6 +25,6 @@ RUN add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubunt
RUN apt-get update && apt-get install -y docker-ce && rm -rf /var/lib/apt/lists/*
COPY src/run-resinos.sh /
COPY src/run-supervisor-base.sh /
COPY src/run-supervisor.sh /
WORKDIR /yocto/image

View File

@ -1,12 +0,0 @@
#!/bin/bash
set -o errexit
groupadd -g $BUILDER_GID builder
useradd -m -u $BUILDER_UID -g $BUILDER_GID builder
sudo -H -u builder /bin/bash -c "cd /yocto/image \
&& source oe-core/oe-init-build-env build bitbake \
&& DL_DIR=/yocto/shared-downloads SSTATE_DIR=/yocto/shared-sstate MACHINE=$TARGET_MACHINE /yocto/image/bitbake/bin/bitbake core-image-minimal"
cp --dereference /yocto/image/build/tmp-glibc/deploy/images/$TARGET_MACHINE/core-image-minimal-$TARGET_MACHINE.tar.gz /yocto/image/rootfs.tar.gz

View File

@ -0,0 +1,68 @@
#!/bin/bash
set -e
DOCKER_TIMEOUT=20 # Wait 20 seconds for docker to start
cleanup() {
echo "[INFO] Running cleanup..."
# Stop docker gracefully
echo "[INFO] Stopping in container docker..."
DOCKERPIDFILE=/var/run/docker.pid
if [ -f $DOCKERPIDFILE ] && [ -s $DOCKERPIDFILE ] && ps $(cat $DOCKERPIDFILE) | grep -q docker; then
kill $(cat $DOCKERPIDFILE)
# Now wait for it to die
STARTTIME=$(date +%s)
ENDTIME=$(date +%s)
while [ -f $DOCKERPIDFILE ] && [ -s $DOCKERPIDFILE ] && ps $(cat $DOCKERPIDFILE) | grep -q docker; do
if [ $(($ENDTIME - $STARTTIME)) -le $DOCKER_TIMEOUT ]; then
sleep 1
ENDTIME=$(date +%s)
else
echo "[ERROR] Timeout while waiting for in container docker to die."
exit 1
fi
done
else
echo "[WARN] Can't stop docker container."
echo "[WARN] Your host might have been left with unreleased resources (ex. loop devices)."
fi
if [ "$1" == "fail" ]; then
exit 1
fi
}
trap 'cleanup fail' SIGINT SIGTERM
# Create the normal user to be used for bitbake (barys)
echo "[INFO] Creating and setting builder user $BUILDER_UID:$BUILDER_GID."
groupadd -g $BUILDER_GID builder
groupadd docker || true
useradd -m -u $BUILDER_UID -g $BUILDER_GID -G docker builder
# Start docker
echo "[INFO] Starting docker."
dockerd 2> /dev/null &
echo "[INFO] Waiting for docker to initialize..."
STARTTIME=$(date +%s)
ENDTIME=$(date +%s)
until docker info >/dev/null 2>&1; do
if [ $(($ENDTIME - $STARTTIME)) -le $DOCKER_TIMEOUT ]; then
sleep 1
ENDTIME=$(date +%s)
else
echo "[ERROR] Timeout while waiting for docker to come up."
exit 1
fi
done
echo "[INFO] Docker was initialized."
# Start barys with all the arguments requested
echo "[INFO] Running build as builder user..."
sudo -H -u builder /yocto/image/resin-yocto-scripts/build/barys $@ &
barys_pid=$!
wait $barys_pid || true
cleanup
exit 0

@ -1 +0,0 @@
Subproject commit acd2fd74ed467dc85ec75d5d0815f43e493f29bf

@ -1 +0,0 @@
Subproject commit 1dff2351aa6cdafa5a501e8956cb853ab17ed9ae

@ -1 +0,0 @@
Subproject commit 477805b913a6c4b4b630e42f08cd9e59f1e4e254

1
supervisor/Dockerfile Normal file
View File

@ -0,0 +1 @@
FROM %%BASE_IMAGE%%