summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--recipes-config/qemu-config/files/agl-cluster-demo-platform-flutter.conf4
-rw-r--r--recipes-config/qemu-config/files/agl-cluster-demo-platform.conf4
-rw-r--r--recipes-config/qemu-config/files/agl-demo-platform.conf6
-rw-r--r--recipes-config/qemu-config/files/agl-ivi-demo-platform-flutter.conf6
-rw-r--r--recipes-config/qemu-config/qemu-config-agl-cluster-demo-platform-flutter.bb29
-rw-r--r--recipes-config/qemu-config/qemu-config-agl-cluster-demo-platform.bb29
-rw-r--r--recipes-config/qemu-config/qemu-config-agl-demo-platform.bb29
-rw-r--r--recipes-config/qemu-config/qemu-config-agl-ivi-demo-platform-flutter.bb29
-rw-r--r--recipes-extended/agl-qemu-runner/agl-qemu-runner.bb25
-rwxr-xr-xrecipes-extended/agl-qemu-runner/files/agl-qemu-runner.sh71
-rw-r--r--recipes-extended/agl-qemu-runner/files/agl-qemu-runner@.service11
11 files changed, 243 insertions, 0 deletions
diff --git a/recipes-config/qemu-config/files/agl-cluster-demo-platform-flutter.conf b/recipes-config/qemu-config/files/agl-cluster-demo-platform-flutter.conf
new file mode 100644
index 00000000..262f3c2d
--- /dev/null
+++ b/recipes-config/qemu-config/files/agl-cluster-demo-platform-flutter.conf
@@ -0,0 +1,4 @@
+QEMU_TASKSET_CPUS="4-7"
+QEMU_SMP_OPT="-smp 4"
+QEMU_MEM_OPT="-m 2G"
+QEMU_KERNEL_CMDLINE_APPEND="root=/dev/vda rw mem=2048M video=Virtual-1:1920x1080"
diff --git a/recipes-config/qemu-config/files/agl-cluster-demo-platform.conf b/recipes-config/qemu-config/files/agl-cluster-demo-platform.conf
new file mode 100644
index 00000000..262f3c2d
--- /dev/null
+++ b/recipes-config/qemu-config/files/agl-cluster-demo-platform.conf
@@ -0,0 +1,4 @@
+QEMU_TASKSET_CPUS="4-7"
+QEMU_SMP_OPT="-smp 4"
+QEMU_MEM_OPT="-m 2G"
+QEMU_KERNEL_CMDLINE_APPEND="root=/dev/vda rw mem=2048M video=Virtual-1:1920x1080"
diff --git a/recipes-config/qemu-config/files/agl-demo-platform.conf b/recipes-config/qemu-config/files/agl-demo-platform.conf
new file mode 100644
index 00000000..e7238678
--- /dev/null
+++ b/recipes-config/qemu-config/files/agl-demo-platform.conf
@@ -0,0 +1,6 @@
+QEMU_TASKSET_CPUS="0-3"
+QEMU_SMP_OPT="-smp 4"
+QEMU_MEM_OPT="-m 4G"
+QEMU_INPUT_OPT="-device virtio-tablet-device"
+QEMU_AUDIO_OPT="-audiodev alsa,id=agl -device intel-hda -device hda-duplex,audiodev=agl"
+QEMU_KERNEL_CMDLINE_APPEND="root=/dev/vda rw mem=4196M video=Virtual-1:1920x1080"
diff --git a/recipes-config/qemu-config/files/agl-ivi-demo-platform-flutter.conf b/recipes-config/qemu-config/files/agl-ivi-demo-platform-flutter.conf
new file mode 100644
index 00000000..e7238678
--- /dev/null
+++ b/recipes-config/qemu-config/files/agl-ivi-demo-platform-flutter.conf
@@ -0,0 +1,6 @@
+QEMU_TASKSET_CPUS="0-3"
+QEMU_SMP_OPT="-smp 4"
+QEMU_MEM_OPT="-m 4G"
+QEMU_INPUT_OPT="-device virtio-tablet-device"
+QEMU_AUDIO_OPT="-audiodev alsa,id=agl -device intel-hda -device hda-duplex,audiodev=agl"
+QEMU_KERNEL_CMDLINE_APPEND="root=/dev/vda rw mem=4196M video=Virtual-1:1920x1080"
diff --git a/recipes-config/qemu-config/qemu-config-agl-cluster-demo-platform-flutter.bb b/recipes-config/qemu-config/qemu-config-agl-cluster-demo-platform-flutter.bb
new file mode 100644
index 00000000..c15528a6
--- /dev/null
+++ b/recipes-config/qemu-config/qemu-config-agl-cluster-demo-platform-flutter.bb
@@ -0,0 +1,29 @@
+SUMMARY = "Setting files for agl-cluster-demo-plaform-flutter guest VM"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+inherit systemd allarch
+
+SRC_URI = "file://${QEMU_IMAGE}.conf"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+QEMU_IMAGE = "agl-cluster-demo-platform-flutter"
+QEMU_UNIT = "agl-qemu-runner@${QEMU_IMAGE}.service"
+
+do_install() {
+ # Install template unit links
+ install -d ${D}${systemd_system_unitdir}
+ ln -sf agl-qemu-runner@.service ${D}${systemd_system_unitdir}/${QEMU_UNIT}
+ install -d ${D}${systemd_system_unitdir}/multi-user.target.wants
+ ln -sf ${systemd_system_unitdir}/${QEMU_UNIT} ${D}${systemd_system_unitdir}/multi-user.target.wants/${QEMU_UNIT}
+
+ # Install conf file
+ install -d ${D}${sysconfdir}/agl-qemu-runner
+ install -m 0644 ${WORKDIR}/${QEMU_IMAGE}.conf ${D}${sysconfdir}/agl-qemu-runner/
+}
+
+FILES:${PN} += "${systemd_system_unitdir}"
+
+RDEPENDS:${PN} += "agl-qemu-runner"
diff --git a/recipes-config/qemu-config/qemu-config-agl-cluster-demo-platform.bb b/recipes-config/qemu-config/qemu-config-agl-cluster-demo-platform.bb
new file mode 100644
index 00000000..4f9c5a92
--- /dev/null
+++ b/recipes-config/qemu-config/qemu-config-agl-cluster-demo-platform.bb
@@ -0,0 +1,29 @@
+SUMMARY = "Setting files for agl-cluster-demo-plaform guest VM"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+inherit systemd allarch
+
+SRC_URI = "file://${QEMU_IMAGE}.conf"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+QEMU_IMAGE = "agl-cluster-demo-platform"
+QEMU_UNIT = "agl-qemu-runner@${QEMU_IMAGE}.service"
+
+do_install() {
+ # Install template unit links
+ install -d ${D}${systemd_system_unitdir}
+ ln -sf agl-qemu-runner@.service ${D}${systemd_system_unitdir}/${QEMU_UNIT}
+ install -d ${D}${systemd_system_unitdir}/multi-user.target.wants
+ ln -sf ${systemd_system_unitdir}/${QEMU_UNIT} ${D}${systemd_system_unitdir}/multi-user.target.wants/${QEMU_UNIT}
+
+ # Install conf file
+ install -d ${D}${sysconfdir}/agl-qemu-runner
+ install -m 0644 ${WORKDIR}/${QEMU_IMAGE}.conf ${D}${sysconfdir}/agl-qemu-runner/
+}
+
+FILES:${PN} += "${systemd_system_unitdir}"
+
+RDEPENDS:${PN} += "agl-qemu-runner"
diff --git a/recipes-config/qemu-config/qemu-config-agl-demo-platform.bb b/recipes-config/qemu-config/qemu-config-agl-demo-platform.bb
new file mode 100644
index 00000000..1d5e0df2
--- /dev/null
+++ b/recipes-config/qemu-config/qemu-config-agl-demo-platform.bb
@@ -0,0 +1,29 @@
+SUMMARY = "Setting files for agl-demo-plaform guest VM"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+inherit systemd allarch
+
+SRC_URI = "file://${QEMU_IMAGE}.conf"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+QEMU_IMAGE = "agl-demo-platform"
+QEMU_UNIT = "agl-qemu-runner@${QEMU_IMAGE}.service"
+
+do_install() {
+ # Install template unit links
+ install -d ${D}${systemd_system_unitdir}
+ ln -sf agl-qemu-runner@.service ${D}${systemd_system_unitdir}/${QEMU_UNIT}
+ install -d ${D}${systemd_system_unitdir}/multi-user.target.wants
+ ln -sf ${systemd_system_unitdir}/${QEMU_UNIT} ${D}${systemd_system_unitdir}/multi-user.target.wants/${QEMU_UNIT}
+
+ # Install conf file
+ install -d ${D}${sysconfdir}/agl-qemu-runner
+ install -m 0644 ${WORKDIR}/${QEMU_IMAGE}.conf ${D}${sysconfdir}/agl-qemu-runner/
+}
+
+FILES:${PN} += "${systemd_system_unitdir}"
+
+RDEPENDS:${PN} += "agl-qemu-runner"
diff --git a/recipes-config/qemu-config/qemu-config-agl-ivi-demo-platform-flutter.bb b/recipes-config/qemu-config/qemu-config-agl-ivi-demo-platform-flutter.bb
new file mode 100644
index 00000000..5efb7a96
--- /dev/null
+++ b/recipes-config/qemu-config/qemu-config-agl-ivi-demo-platform-flutter.bb
@@ -0,0 +1,29 @@
+SUMMARY = "Setting files for agl-ivi-demo-plaform-flutter guest VM"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+inherit systemd allarch
+
+SRC_URI = "file://${QEMU_IMAGE}.conf"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+QEMU_IMAGE = "agl-ivi-demo-platform-flutter"
+QEMU_UNIT = "agl-qemu-runner@${QEMU_IMAGE}.service"
+
+do_install() {
+ # Install template unit links
+ install -d ${D}${systemd_system_unitdir}
+ ln -sf agl-qemu-runner@.service ${D}${systemd_system_unitdir}/${QEMU_UNIT}
+ install -d ${D}${systemd_system_unitdir}/multi-user.target.wants
+ ln -sf ${systemd_system_unitdir}/${QEMU_UNIT} ${D}${systemd_system_unitdir}/multi-user.target.wants/${QEMU_UNIT}
+
+ # Install conf file
+ install -d ${D}${sysconfdir}/agl-qemu-runner
+ install -m 0644 ${WORKDIR}/${QEMU_IMAGE}.conf ${D}${sysconfdir}/agl-qemu-runner/
+}
+
+FILES:${PN} += "${systemd_system_unitdir}"
+
+RDEPENDS:${PN} += "agl-qemu-runner"
diff --git a/recipes-extended/agl-qemu-runner/agl-qemu-runner.bb b/recipes-extended/agl-qemu-runner/agl-qemu-runner.bb
new file mode 100644
index 00000000..b3e3a67d
--- /dev/null
+++ b/recipes-extended/agl-qemu-runner/agl-qemu-runner.bb
@@ -0,0 +1,25 @@
+SUMMARY = "AGL simple QEMU runner script"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+inherit systemd allarch
+
+SRC_URI = "file://agl-qemu-runner.sh \
+ file://agl-qemu-runner@.service \
+"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
+do_install() {
+ # Install template unit
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/agl-qemu-runner@.service ${D}${systemd_system_unitdir}/
+
+ # Install script
+ install -D -m 0755 ${WORKDIR}/agl-qemu-runner.sh ${D}${sbindir}/agl-qemu-runner.sh
+}
+
+FILES:${PN} += "${systemd_system_unitdir}"
+
+RDEPENDS:${PN} += "bash qemu"
diff --git a/recipes-extended/agl-qemu-runner/files/agl-qemu-runner.sh b/recipes-extended/agl-qemu-runner/files/agl-qemu-runner.sh
new file mode 100755
index 00000000..d1276473
--- /dev/null
+++ b/recipes-extended/agl-qemu-runner/files/agl-qemu-runner.sh
@@ -0,0 +1,71 @@
+#!/bin/bash
+# SPDX-License-Identifier: Apache-2.0
+
+if [ -z "$1" ]; then
+ echo "Usage: ${basename $0} <image name>"
+ exit 1
+fi
+image="$1"
+
+conf="/etc/agl-qemu-runner/${image}.conf"
+if [ ! -f "$conf" ]; then
+ echo "No configuration file $conf"
+ exit 1
+fi
+
+. $conf
+
+arch="$(uname -m)"
+if [ -z "$QEMU_IMAGE_ARCH" ]; then
+ QEMU_IMAGE_ARCH="virtio-${arch}"
+fi
+
+disk="/var/lib/machines/${image}/${image}-${QEMU_IMAGE_ARCH}.ext4"
+if [ ! -f "$disk" ]; then
+ echo "No disk image for $image"
+ exit 1
+fi
+kernel="/var/lib/machines/${image}/Image-${QEMU_IMAGE_ARCH}.bin"
+if [ ! -f "$kernel" ]; then
+ echo "No kernel for $image"
+ exit 1
+fi
+
+TASKSET_CMD=""
+if [ -n "$QEMU_TASKSET_CPUS" ]; then
+ TASKSET_CMD="taskset -c ${QEMU_TASKSET_CPUS}"
+fi
+
+export SDL_VIDEODRIVER=wayland
+export XDG_RUNTIME_DIR=/run/user/1001
+# The following may be needed if the socket is not wayland-0, as SDL
+# seems to lack detection logic for that case.
+#export WAYLAND_DISPLAY=wayland-1
+
+# This sets the XDG app id, which we need for setting outputs with
+# agl-compositor
+export SDL_VIDEO_WAYLAND_WMCLASS="${image}"
+
+${TASKSET_CMD} \
+qemu-system-${arch} \
+ -enable-kvm \
+ -machine virt,gic-version=max,iommu=smmuv3 \
+ -cpu host \
+ ${QEMU_SMP_OPT} \
+ ${QEMU_MEM_OPT} \
+ -kernel $kernel \
+ -append "${QEMU_KERNEL_CMDLINE_APPEND}" \
+ -drive id=disk0,file=${disk},format=raw,if=none \
+ -serial mon:pty \
+ -object rng-random,filename=/dev/urandom,id=rng0 \
+ -netdev user,id=net-user \
+ -device virtio-blk-device,drive=disk0 \
+ -device virtio-net-device,netdev=net-user,mac=52:54:00:12:00:02 \
+ -device virtio-rng-device,rng=rng0 \
+ ${QEMU_INPUT_OPT} \
+ -global virtio-mmio.force-legacy=false \
+ -device virtio-gpu-gl-device \
+ -display sdl,gl=on -vga std \
+ ${QEMU_AUDIO_OPT} \
+ ${QEMU_EXTRA_OPT} \
+ -full-screen
diff --git a/recipes-extended/agl-qemu-runner/files/agl-qemu-runner@.service b/recipes-extended/agl-qemu-runner/files/agl-qemu-runner@.service
new file mode 100644
index 00000000..a9e9f334
--- /dev/null
+++ b/recipes-extended/agl-qemu-runner/files/agl-qemu-runner@.service
@@ -0,0 +1,11 @@
+[Unit]
+Requires=agl-session@agl-driver.service
+After=agl-session@agl-driver.service
+
+[Service]
+Type=simple
+ExecStart=/usr/sbin/agl-qemu-runner.sh %i
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target