summaryrefslogtreecommitdiff
path: root/app-misc/rogentoslive-tools/files/2/x-setup.sh
blob: 4463a66bff1ebdbc181e8728010265c39f1c18d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/bin/bash

. /sbin/rogentos-functions.sh

REDETECT=$(cat /proc/cmdline | grep "gpudetect")

gpus_same() {
    # $1 and $2: output lines from "lspci"
    local id1 id2 # [xxxx:]xx:xx.x
    local dev1 dev2 # vendor and device: xxxx:xxxx
    id1=$(echo "$1" | awk '/ VGA / { print $1 }')
    id2=$(echo "$2" | awk '/ VGA / { print $1 }')
    if [ -z "$id1" ] || [ -z "$id2" ]; then
        return 1
    fi
    dev1=$(lspci -s "$id1" -n | awk '{ print $3 }')
    dev2=$(lspci -s "$id2" -n | awk '{ print $3 }')
    [ "$dev1" = "$dev2" ]
}


if [ -e /first_time_run ] || [ ! -e /etc/gpu-detector.conf ] \
    || [ -n "${REDETECT}" ]; then
    echo "Configuring GPUs and input devices for the first time"
    lspci | grep ' VGA ' > /etc/gpu-detector.conf
    /usr/sbin/x-setup-configuration
    exit 0
fi

infostr_run="Configuring GPUs and input devices"
infostr_skip="Skipping GPUs and input devices configuration"
lspci_vga=$(lspci | grep ' VGA ')
stored_vga=$(cat /etc/gpu-detector.conf)

if [ "${lspci_vga}" != "${stored_vga}" ]; then
    # Strings are different, let's do the more "heavy" and accurate comparison.
    if gpus_same "${lspci_vga}" "${stored_vga}"; then
        # this may happen after vendor changes its name etc.
        # and PCI ID file is updated
        echo "${infostr_skip}, only updating GPU information file"
    else
        echo "${infostr_run}"
        /usr/sbin/x-setup-configuration
    fi
    echo "${lspci_vga}" > /etc/gpu-detector.conf
    exit 0
fi

echo "${infostr_skip}"