aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHeikki Halmet <heikki.halmet@qt.io>2022-11-10 13:21:32 +0000
committerHeikki Halmet <heikki.halmet@qt.io>2022-11-24 21:18:53 +0000
commitfae885e9c16d3d14a1459e9adf782896e1ad3382 (patch)
tree9b8fec799a5a6bea5868535162477074765d4bc4
parent0a49fc9d7dee5c71c5eaaf617e9fa94d3a7d7e48 (diff)
Provisioning: Make bootstrap autostart run without terminal
Terminal in UI might cause issues with Autotest This patch makes bootstrap-agent run in a background shell wrapper. The wrapper waits 20secs for the VM's network to come up and exits with an error if it doesn't. After that it waits for 20secs for the context image to be mounted. If no context image is mounted after that, it waits for one minute and makes one mounting attempt, before launching bootstrap-agent with or without context. Pick-to: 6.4 6.2 Task-number: COIN-966 Change-Id: I9a3e490325d1fd7c0583b6d5db5eb2023e042571 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
-rwxr-xr-xcoin/provisioning/common/linux/bootstrap-autostart.sh126
-rwxr-xr-xcoin/provisioning/qtci-linux-RHEL-8.4-x86_64/90-bootstrap-autostart.sh3
-rwxr-xr-xcoin/provisioning/qtci-linux-RHEL-9.0-x86_64/90-bootstrap-autostart.sh3
-rwxr-xr-xcoin/provisioning/qtci-linux-SLES-15_SP4-x86_64/90-bootstrap-autostart.sh3
-rwxr-xr-xcoin/provisioning/qtci-linux-Ubuntu-20.04-x86_64/90-bootstrap-autostart.sh3
-rwxr-xr-xcoin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/90-bootstrap-autostart.sh3
-rwxr-xr-xcoin/provisioning/qtci-linux-openSUSE-15.4-x86_64/90-bootstrap-autostart.sh3
7 files changed, 144 insertions, 0 deletions
diff --git a/coin/provisioning/common/linux/bootstrap-autostart.sh b/coin/provisioning/common/linux/bootstrap-autostart.sh
new file mode 100755
index 00000000..3e8606ca
--- /dev/null
+++ b/coin/provisioning/common/linux/bootstrap-autostart.sh
@@ -0,0 +1,126 @@
+#!/usr/bin/env bash
+
+#############################################################################
+##
+## Copyright (C) 2022 The Qt Company Ltd.
+## Contact: https://www.qt.io/licensing/
+##
+## This file is part of the provisioning scripts of the Qt Toolkit.
+##
+## $QT_BEGIN_LICENSE:LGPL$
+## Commercial License Usage
+## Licensees holding valid commercial Qt licenses may use this file in
+## accordance with the commercial license agreement provided with the
+## Software or, alternatively, in accordance with the terms contained in
+## a written agreement between you and The Qt Company. For licensing terms
+## and conditions see https://www.qt.io/terms-conditions. For further
+## information use the contact form at https://www.qt.io/contact-us.
+##
+## GNU Lesser General Public License Usage
+## Alternatively, this file may be used under the terms of the GNU Lesser
+## General Public License version 3 as published by the Free Software
+## Foundation and appearing in the file LICENSE.LGPL3 included in the
+## packaging of this file. Please review the following information to
+## ensure the GNU Lesser General Public License version 3 requirements
+## will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+##
+## GNU General Public License Usage
+## Alternatively, this file may be used under the terms of the GNU
+## General Public License version 2.0 or (at your option) the GNU General
+## Public license version 3 or any later version approved by the KDE Free
+## Qt Foundation. The licenses are as published by the Free Software
+## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+## included in the packaging of this file. Please review the following
+## information to ensure the GNU General Public License requirements will
+## be met: https://www.gnu.org/licenses/gpl-2.0.html and
+## https://www.gnu.org/licenses/gpl-3.0.html.
+##
+## $QT_END_LICENSE$
+##
+#############################################################################
+
+set -ex
+
+# Make bootstap agent run in background without terminal view
+# Terminal view can cause issues with Autotests
+
+# Create shell wrapper to pass environment variables
+wrapper="${HOME}/bootstrap-agent.sh"
+autostart_folder="${HOME}/.config/autostart"
+# This directory should exist. Created in base image (tier 1)
+mkdir -p ${autostart_folder}
+
+# Create autostart desktop file and shell wrapper
+sudo tee ${autostart_folder}/coin-bootstrap-agent.desktop <<"EOF"
+[Desktop Entry]
+Type=Application
+Exec=/home/qt/bootstrap-agent.sh
+Hidden=false
+X-GNOME-Autostart-enabled=true
+Name=Coin
+EOF
+
+sudo tee $wrapper <<"EOF"
+#!/bin/sh
+# Wait for network to come up
+x=0
+while ! cat "/etc/resolv.conf" | grep -v "#" | grep "nameserver" > /dev/null ; do
+ echo "(WW) wating for network ($x/20)..." >> /home/qt/bootstrap-agent.txt
+ x=$((x+1))
+ sleep 1
+ if [ "$x" -gt 20 ]; then
+ echo "(EE) netowrk down. Exiting bootstrap." >> /home/qt/bootstrap-agent.txt
+ exit 1
+ fi
+done
+echo "(**) network found." >> /home/qt/bootstrap-agent.txt
+
+# Wait for context to be mounted
+x=0
+while ! ([ -f "/media/qt/CONTEXT/context.sh" ] || [ -f "/media/CONTEXT/context.sh" ] || [ -f "/run/media/qt/CONTEXT/context.sh" ]); do
+ echo "(WW) waiting for context file to be mounted ($x/20)..." >> /home/qt/bootstrap-agent.txt
+ x=$((x+1))
+ sleep 1
+ if [ "$x" -gt 20 ]; then
+ echo "(WW) no context file found. Mounting manually." >> /home/qt/bootstrap-agent.txt
+ break
+ fi
+done
+
+# establish mount path (differs per distro)
+if ! ([ -f "/media/qt/CONTEXT/context.sh" ] || [ -f "/media/CONTEXT/context.sh" ] || [ -f "/run/media/qt/CONTEXT/context.sh" ]); then
+ MOUNTPATH="invalid"
+ if [ -d "/run/media/qt/CONTEXT" ]; then
+ MOUNTPATH="/run/media/qt/CONTEXT"
+ fi
+ if [ -d "/media/qt/CONTEXT" ]; then
+ MOUNTPATH="/media/qt/CONTEXT"
+ fi
+ if [ -d "/media/CONTEXT" ]; then
+ MOUNTPATH="/media/CONTEXT"
+ fi
+
+ # try mounting if unmounted
+ if [ -d "$MOUNTPATH" ]; then
+ if ! mount | grep "$MOUNTPATH" > /dev/null ; then
+ echo "(WW) context file not mounted..." >> /home/qt/bootstrap-agent.txt
+ echo "(WW) waiting 1 minute" >> /home/qt/bootstrap-agent.txt
+ sleep 60
+ echo "(**) mount /dev/sr0 $MOUNTPATH" >> /home/qt/bootstrap-agent.txt
+ sudo mount -r /dev/sr0 $MOUNTPATH
+ fi
+ fi
+fi
+
+if ([ -f "/media/qt/CONTEXT/context.sh" ] || [ -f "/media/CONTEXT/context.sh" ] || [ -f "/run/media/qt/CONTEXT/context.sh" ]); then
+ echo "(**) context found." >> /home/qt/bootstrap-agent.txt
+else
+ echo "(EE) context not found. Starting bootstrap anyway." >> /home/qt/bootstrap-agent.txt
+fi
+
+/home/qt/bootstrap-agent /dev/ttyS0
+EOF
+
+# set owner and permissions
+sudo chown qt:users $wrapper
+sudo chmod 755 $wrapper
diff --git a/coin/provisioning/qtci-linux-RHEL-8.4-x86_64/90-bootstrap-autostart.sh b/coin/provisioning/qtci-linux-RHEL-8.4-x86_64/90-bootstrap-autostart.sh
new file mode 100755
index 00000000..1ff43850
--- /dev/null
+++ b/coin/provisioning/qtci-linux-RHEL-8.4-x86_64/90-bootstrap-autostart.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+
+source "${BASH_SOURCE%/*}/../common/linux/bootstrap-autostart.sh"
diff --git a/coin/provisioning/qtci-linux-RHEL-9.0-x86_64/90-bootstrap-autostart.sh b/coin/provisioning/qtci-linux-RHEL-9.0-x86_64/90-bootstrap-autostart.sh
new file mode 100755
index 00000000..1ff43850
--- /dev/null
+++ b/coin/provisioning/qtci-linux-RHEL-9.0-x86_64/90-bootstrap-autostart.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+
+source "${BASH_SOURCE%/*}/../common/linux/bootstrap-autostart.sh"
diff --git a/coin/provisioning/qtci-linux-SLES-15_SP4-x86_64/90-bootstrap-autostart.sh b/coin/provisioning/qtci-linux-SLES-15_SP4-x86_64/90-bootstrap-autostart.sh
new file mode 100755
index 00000000..1ff43850
--- /dev/null
+++ b/coin/provisioning/qtci-linux-SLES-15_SP4-x86_64/90-bootstrap-autostart.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+
+source "${BASH_SOURCE%/*}/../common/linux/bootstrap-autostart.sh"
diff --git a/coin/provisioning/qtci-linux-Ubuntu-20.04-x86_64/90-bootstrap-autostart.sh b/coin/provisioning/qtci-linux-Ubuntu-20.04-x86_64/90-bootstrap-autostart.sh
new file mode 100755
index 00000000..1ff43850
--- /dev/null
+++ b/coin/provisioning/qtci-linux-Ubuntu-20.04-x86_64/90-bootstrap-autostart.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+
+source "${BASH_SOURCE%/*}/../common/linux/bootstrap-autostart.sh"
diff --git a/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/90-bootstrap-autostart.sh b/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/90-bootstrap-autostart.sh
new file mode 100755
index 00000000..1ff43850
--- /dev/null
+++ b/coin/provisioning/qtci-linux-Ubuntu-22.04-x86_64/90-bootstrap-autostart.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+
+source "${BASH_SOURCE%/*}/../common/linux/bootstrap-autostart.sh"
diff --git a/coin/provisioning/qtci-linux-openSUSE-15.4-x86_64/90-bootstrap-autostart.sh b/coin/provisioning/qtci-linux-openSUSE-15.4-x86_64/90-bootstrap-autostart.sh
new file mode 100755
index 00000000..1ff43850
--- /dev/null
+++ b/coin/provisioning/qtci-linux-openSUSE-15.4-x86_64/90-bootstrap-autostart.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+
+source "${BASH_SOURCE%/*}/../common/linux/bootstrap-autostart.sh"