diff options
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/platform_meta_test | 17 | ||||
-rwxr-xr-x | bin/stock_ubuntu_platform_meta.sh | 47 |
2 files changed, 57 insertions, 7 deletions
diff --git a/bin/platform_meta_test b/bin/platform_meta_test index 74d4264..1e1424c 100755 --- a/bin/platform_meta_test +++ b/bin/platform_meta_test @@ -14,21 +14,21 @@ echo "Beginning Platform Metapackage Test" 1>&2 failed() { [ -n "$1" ] && echo "$1" - echo "$0 failed!!" + echo "$0 failed!" exit 1 } passed() { [ -n "$1" ] && echo "$1" - echo "$0 passed!!" + echo "$0 passed!" exit 0 } platform_tag=$(ubuntu-report show | grep DCD | awk -F'+' '{print $2}') [ -n "${platform_tag}" ] || failed "no platform tag in ubuntu-report" -BIOSID=$(lspci -s 00:00.0 -nnv | grep Subsystem | grep -o -E "[[:xdigit:]]{4}:[[:xdigit:]]{4}" | cut -d ":" -f 2 | tr '[:lower:]' '[:upper:]') +BIOSID=$(cat /sys/devices/virtual/dmi/id/product_sku) codename=$(lsb_release -cs) case "$codename" in @@ -59,9 +59,12 @@ case "$codename" in ('focal') for meta in $(ubuntu-drivers list | grep "^oem" | grep "meta$"); do if apt-cache show "$meta" | grep ^Modaliases | grep -i "sv00001028sd0000$BIOSID" > /dev/null 2>&1; then - factory="${meta/oem-somerville/oem-somerville-factory}" - dpkg -l "$factory" > /dev/null 2>&1 || failed "The platform factory meta package '$factory' is not installed." - passed "Found the platform meta package '$meta' containing BIOS ID '$BIOSID' and the platform factory meta package '$factory'" + if dpkg-query -W -f='${Status}\n' "$meta" 2>&1 | grep "install ok installed" >/dev/null 2>&1; then + factory="${meta/oem-somerville/oem-somerville-factory}" + if dpkg-query -W -f='${Status}\n' "$factory" 2>&1 | grep "install ok installed" >/dev/null 2>&1; then + passed "Found the platform meta package '$meta' containing BIOS ID '$BIOSID' and the platform factory meta package '$factory'" + fi + fi fi done ;; @@ -70,4 +73,4 @@ case "$codename" in ;; esac -failed "No platform meta is installed. (Platform Tag: $platform_tag, BIOS ID: $BIOSID)" +failed "Platform Tag: $platform_tag, BIOS ID: $BIOSID" diff --git a/bin/stock_ubuntu_platform_meta.sh b/bin/stock_ubuntu_platform_meta.sh new file mode 100755 index 0000000..1d0a544 --- /dev/null +++ b/bin/stock_ubuntu_platform_meta.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +echo "Beginning Stock Ubuntu Platform Metapackage Test" 1>&2 + +failed() +{ + [ -n "$1" ] && echo "$1" + echo "$0 failed!!" + exit 1 +} + +passed() +{ + [ -n "$1" ] && echo "$1" + echo "$0 passed!!" + exit 0 +} + +codename=$(lsb_release -cs) + +case "$codename" in + ('focal') + for pkg in $(ubuntu-drivers list-oem | grep "^oem" | grep "meta$"); do + apt-get purge --yes "$pkg" >/dev/null 2>&1 # Completely remove the meta package first + done + meta=() + for pkg in $(ubuntu-drivers list-oem | grep "^oem" | grep "meta$"); do + meta+=("$pkg") + done + if [ "${#meta}" = 0 ]; then + failed "It can not find any platform meta package." + fi + apt-get update >/dev/null 2>&1 + ubuntu-drivers install + for pkg in "${meta[@]}"; do + if dpkg-query -W -f='${Status}\n' "$pkg" 2>&1 | grep "install ok installed" >/dev/null 2>&1; then + echo "$pkg is installed" + else + failed "$pkg is not installed" + fi + done + passed + ;; + (*) + echo "$codename is not supported yet." + ;; +esac |