#!/bin/bash
#Description:Tt is script for update the installed 19 mesa to 21.

ARCH32=:i386
ARCH64=:amd64

#get the installed mesa binary package name
take_mesa_package_name(){
	insname=() #set insname[] is NULL
        all_name=('libxatracker2' 'libxatracker-dev' 'libd3dadapter9-mesa' 'libd3dadapter9-mesa-dev' 'libgbm1' 'libgbm-dev' 'libegl-mesa0' 'libegl1-mesa' 'libegl1-mesa-dev' 'libwayland-egl1-mesa' 'libgles2-mesa' 'libgles2-mesa-dev' 'libglapi-mesa' 'libglx-mesa0' 'libgl1-mesa-glx' 'libgl1-mesa-dri' 'libgl1-mesa-dev' 'mesa-common-dev' 'libosmesa6' 'libosmesa6-dev' 'mesa-va-drivers' 'mesa-vdpau-drivers' 'mesa-vulkan-drivers' 'mesa-opencl-icd')
        #get the installed mesa binary package name about i386
        for name in ${all_name[@]}
        do
                pkg32_status=$(dpkg -l | grep ${name}${ARCH32} | awk -F" " '{print $1}')
                if [ "${pkg32_status}" = "ii" ];then
                        pkg32_ver=$(dpkg -l | grep ${name}${ARCH32} | awk -F" " '{print $3}' | awk -F"." '{print $1}')
                        if [ "${pkg32_ver}" -lt 21 ];then 
                                insname+=(${name}${ARCH32})
                        fi
                fi
        done

        #get the installed mesa binary package name about amd64
        for name in ${all_name[@]}
        do
                pkg64_status=$(dpkg -l | grep ${name}${ARCH64} | awk -F" " '{print $1}')
                if [ "${pkg64_status}" = "ii" ];then
                        pkg64_ver=$(dpkg -l | grep ${name}${ARCH64} | awk -F" " '{print $3}' | awk -F"." '{print $1}')
                        if [ "${pkg64_ver}" -lt 21 ];then 
                                insname+=(${name}${ARCH64})
                        fi
                fi
        done

	#Judge whether the installed mesa version of the machine is 21
        if [ -z "${insname[0]}" ];then
                delete_service
        fi
}

#update the installed mesa package
update_mesa(){
        apt -y --allow-downgrades install ${insname[@]}
}

#delete mesa-config service and comm 
delete_service(){
        rm -rf /usr/bin/mesa-config /lib/systemd/system/mesa-config.service
        exit
}

main(){
        take_mesa_package_name
        update_mesa
        take_mesa_package_name
}

main

