mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2024-11-30 21:54:16 +08:00
5941fc8ccd
Signed-off-by: David Heidelberg <david.heidelberg@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21977>
47 lines
1.4 KiB
Bash
Executable File
47 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# shellcheck disable=SC1091 # The relative paths in this file only become valid at runtime.
|
|
# shellcheck disable=SC2086 # we want word splitting
|
|
set -e
|
|
|
|
VSOCK_STDOUT=$1
|
|
VSOCK_STDERR=$2
|
|
VM_TEMP_DIR=$3
|
|
|
|
mount -t proc none /proc
|
|
mount -t sysfs none /sys
|
|
mkdir -p /dev/pts
|
|
mount -t devpts devpts /dev/pts
|
|
mkdir /dev/shm
|
|
mount -t tmpfs -o noexec,nodev,nosuid tmpfs /dev/shm
|
|
mount -t tmpfs tmpfs /tmp
|
|
|
|
. ${VM_TEMP_DIR}/crosvm-env.sh
|
|
. ${VM_TEMP_DIR}/setup-test-env.sh
|
|
|
|
# .gitlab-ci.yml script variable is using relative paths to install directory,
|
|
# so change to that dir before running `crosvm-script`
|
|
cd "${CI_PROJECT_DIR}"
|
|
|
|
# The exception is the dEQP binary, as it needs to run from its own directory
|
|
[ -z "${DEQP_BIN_DIR}" ] || cd "${DEQP_BIN_DIR}"
|
|
|
|
# Use a FIFO to collect relevant error messages
|
|
STDERR_FIFO=/tmp/crosvm-stderr.fifo
|
|
mkfifo -m 600 ${STDERR_FIFO}
|
|
|
|
dmesg --level crit,err,warn -w > ${STDERR_FIFO} &
|
|
DMESG_PID=$!
|
|
|
|
# Transfer the errors and crosvm-script output via a pair of virtio-vsocks
|
|
socat -d -u pipe:${STDERR_FIFO} vsock-listen:${VSOCK_STDERR} &
|
|
socat -d -U vsock-listen:${VSOCK_STDOUT} \
|
|
system:"stdbuf -eL bash ${VM_TEMP_DIR}/crosvm-script.sh 2> ${STDERR_FIFO}; echo \$? > ${VM_TEMP_DIR}/exit_code",nofork
|
|
|
|
kill ${DMESG_PID}
|
|
wait
|
|
|
|
sync
|
|
poweroff -d -n -f || true
|
|
|
|
sleep 1 # Just in case init would exit before the kernel shuts down the VM
|