Edit

IABSD.fr/xenocara/lib/mesa/.gitlab-ci/crosvm-init.sh

Branch :

  • Show log

    Commit

  • Author : jsg
    Date : 2024-04-02 09:25:31
    Hash : 874d2ba3
    Message : Import Mesa 23.3.6

  • lib/mesa/.gitlab-ci/crosvm-init.sh
  • #!/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