summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xscripts/xds-docker-create-container.sh40
1 files changed, 18 insertions, 22 deletions
diff --git a/scripts/xds-docker-create-container.sh b/scripts/xds-docker-create-container.sh
index 706a6a4..71f4b03 100755
--- a/scripts/xds-docker-create-container.sh
+++ b/scripts/xds-docker-create-container.sh
@@ -1,4 +1,5 @@
#!/bin/bash
+# shellcheck disable=SC2086
##########################################
# WARNING WARNING WARNING WARNING
@@ -8,12 +9,6 @@
# You should customize it to fit your environment and in particular
# adjust the paths and permissions where needed.
#
-# Note that sharing volumes with host system is not mandatory: it
-# was just added for performances reasons: building from a SSD is
-# just faster than using the container filesystem: that's why /xdt is
-# mounted from there. Same applies to ~/mirror and ~/share, which are
-# just 2 convenient folders to store reference build caches (used in prepare_meta script)
-#
##########################################
REGISTRY=docker.automotivelinux.org
@@ -95,12 +90,12 @@ if [ "$IMAGE" = "" ]; then
VERSION_LIST=$(docker images $REGISTRY/$REPO/$NAME-$FLAVOUR --format '{{.Tag}}')
VER_NUM=$(echo "$VERSION_LIST" | wc -l)
- if [ $VER_NUM -gt 1 ]; then
+ if [ "$VER_NUM" -gt 1 ]; then
echo "ERROR: more than one xds image found, please set explicitly the image to use !"
echo "List of found images:"
echo "$VERSION_LIST"
exit 1
- elif [ $VER_NUM -lt 1 ]; then
+ elif [ "$VER_NUM" -lt 1 ]; then
echo "ERROR: cannot automatically retrieve image tag for $REGISTRY/$REPO/$NAME-$FLAVOUR"
exit 1
fi
@@ -118,8 +113,10 @@ echo "Using instance ID #$ID (user $(id -un))"
NAME=agl-xds-$(hostname|cut -f1 -d'.')-$ID-$USER
-docker ps -a |grep "$NAME" > /dev/null
-[ "$?" = "0" ] && { echo "Image name already exist ! (use -h option to read help)"; exit 1; }
+if docker ps -a |grep "$NAME" > /dev/null; then
+ echo "Image name already exist ! (use -h option to read help)"
+ exit 1
+fi
XDS_WKS=$HOME/xds-workspace
XDTDIR=$XDS_WKS/.xdt_$ID
@@ -134,14 +131,15 @@ creation_done=false
trap "cleanExit" 0 1 2 15
cleanExit ()
{
- if [ "$creation_done" != "true" -a "$NO_CLEANUP" != "true" ]; then
+ if [ "$creation_done" != "true" ] && [ "$NO_CLEANUP" != "true" ]; then
+ echo "Error detected, remove unusable docker image ${NAME}"
docker rm -f "${NAME}" > /dev/null 2>&1
fi
}
### Create the new container
mkdir -p $XDS_WKS $XDTDIR || exit 1
-docker run \
+if ! docker run \
--publish=${SSH_PORT}:22 \
--publish=${WWW_PORT}:8000 \
--publish=${BOOT_PORT}:69/udp \
@@ -152,8 +150,8 @@ docker run \
-v $XDS_WKS:/home/$DOCKER_USER/xds-workspace \
-v $XDTDIR:/xdt \
$USER_VOLUME_OPTION \
- -it $IMAGE
-if [ "$?" != "0" ]; then
+ -it $IMAGE;
+then
echo "An error was encountered while creating docker container."
exit 1
fi
@@ -169,11 +167,11 @@ while [ $res -ne 0 ] && [ $count -le $max ]; do
docker exec ${NAME} bash -c "systemctl status ssh" 2>/dev/null 1>&2
res=$?
echo -n "."
- count=$(expr $count + 1);
+ count=$((count + 1));
done
echo
-ssh-keygen -R [localhost]:$SSH_PORT -f ~/.ssh/known_hosts
+ssh-keygen -R "[localhost]:$SSH_PORT" -f ~/.ssh/known_hosts
docker exec ${NAME} bash -c "mkdir -p /home/$DOCKER_USER/.ssh"
docker cp ~/.ssh/id_rsa.pub ${NAME}:/home/$DOCKER_USER/.ssh/authorized_keys
docker exec ${NAME} bash -c "chown $DOCKER_USER:$DOCKER_USER -R /home/$DOCKER_USER/.ssh ;chmod 0700 /home/$DOCKER_USER/.ssh; chmod 0600 /home/$DOCKER_USER/.ssh/*"
@@ -196,14 +194,13 @@ if ($UPDATE_UID); then
docker exec ${NAME} bash -c "loginctl user-status devel |grep sd-pam" 2>/dev/null 1>&2
res=$?
echo -n "."
- count=$(expr $count + 1);
+ count=$((count + 1));
done
echo -n " ."
# Set uid
- docker exec -t ${NAME} bash -c "id $(id -u)" > /dev/null 2>&1
- if [ "$?" = "0" -a "$(id -u)" != "1664" ]; then
+ if docker exec -t ${NAME} bash -c "id $(id -u)" > /dev/null 2>&1 && [ "$(id -u)" != "1664" ]; then
echo "Cannot set docker devel user id to your id: conflict id $(id -u) !"
exit 1
fi
@@ -211,8 +208,7 @@ if ($UPDATE_UID); then
echo -n "."
# Set gid
- docker exec -t ${NAME} bash -c "grep $(id -g) /etc/group" > /dev/null 2>&1
- if [ "$?" = "0" ]; then
+ if docker exec -t ${NAME} bash -c "grep $(id -g) /etc/group" > /dev/null 2>&1; then
docker exec -t ${NAME} bash -c "usermod -g $(id -g) $DOCKER_USER" || exit 1
else
docker exec -t ${NAME} bash -c "groupmod -g $(id -g) $DOCKER_USER" || exit 1
@@ -235,7 +231,7 @@ creation_done=true
### Force xds-server restart
if ($FORCE_RESTART); then
echo "Restart xds-server..."
- ssh -p $SSH_PORT $DOCKER_USER@localhost -- "systemctl --user restart xds-server" || exit 1
+ ssh -p $SSH_PORT $DOCKER_USER@localhost "systemctl --user restart xds-server" || exit 1
fi
echo "Done, docker container $NAME is ready to be used."