auto-cpufreq/auto-cpufreq-installer

260 lines
7.1 KiB
Plaintext
Raw Normal View History

2020-02-09 14:44:06 +01:00
#!/bin/bash
#
# auto-cpufreq-installer:
# auto-cpufreq source code based installer
2020-02-09 14:44:06 +01:00
SCRIPT_PATH=$(readlink -f "$0")
SCRIPT_DIR=$(dirname "${SCRIPT_PATH}")
cd "${SCRIPT_DIR}"
2020-02-09 14:44:06 +01:00
distro="$(lsb_release -is)"
release="$(lsb_release -rs)"
codename="$(lsb_release -cs)"
function separator {
sep="\n-------------------------------------------------------------------------------"
echo -e $sep
2020-02-09 14:44:06 +01:00
}
# root check
function root_check {
if (($EUID != 0)); then
2020-02-09 14:44:06 +01:00
separator
echo -e "\nMust be run as root (i.e: 'sudo $0')."
separator
exit 1
fi
2020-02-09 14:44:06 +01:00
}
# python packages install
function pip_pkg_install {
python3 -m pip install -r requirements.txt
2020-02-09 14:44:06 +01:00
}
function complete_msg {
echo -e "\nauto-cpufreq tool successfully installed.\n"
echo -e "For list of options, run:\nauto-cpufreq"
2020-02-09 14:44:06 +01:00
}
# tool install
function install {
python3 setup.py install --record files.txt
mkdir -p /usr/local/share/auto-cpufreq/
cp -r scripts/ /usr/local/share/auto-cpufreq/
}
function update_service_file {
sed -i 's|ExecStart=/usr/local/bin/auto-cpufreq|ExecStart=/usr/bin/auto-cpufreq|' /usr/local/share/auto-cpufreq/scripts/auto-cpufreq.service
2020-02-09 14:44:06 +01:00
}
function tool_install {
# Debian
if [ -f /etc/debian_version ]; then
2020-02-09 14:44:06 +01:00
separator
echo -e "\nDetected Debian based distribution"
separator
echo -e "\nSetting up Python environment\n"
apt install python3-dev python3-pip python3-setuptools dmidecode -y
2020-02-09 14:44:06 +01:00
separator
echo -e "\nInstalling necessary Python packages\n"
pip_pkg_install
separator
echo -e "\ninstalling auto-cpufreq tool\n"
2020-02-09 14:44:06 +01:00
install
separator
complete_msg
separator
# RedHat
elif [ -f /etc/redhat-release ]; then
2020-02-09 14:44:06 +01:00
separator
echo -e "\nDetected RedHat based distribution\n"
echo -e "\nSetting up Python environment\n"
# CentOS exception
if [ -f /etc/centos-release ]; then
yum install platform-python-devel dmidecode
2020-02-09 14:44:06 +01:00
else
yum install python-devel dmidecode
2020-02-09 14:44:06 +01:00
fi
echo -e "\nInstalling necessary Python packages\n"
pip_pkg_install
separator
echo -e "\ninstalling auto-cpufreq tool\n"
2020-02-09 14:44:06 +01:00
install
separator
complete_msg
separator
# Solus
elif [ -f /etc/solus-release ]; then
separator
echo -e "\nDetected Solus distribution\n"
echo -e "\nSetting up Python environment\n"
eopkg install pip python3 python3-devel dmidecode
eopkg install -c system.devel
echo -e "\nInstalling necessary Python packages\n"
pip_pkg_install
separator
echo -e "\ninstalling auto-cpufreq tool\n"
install
update_service_file
separator
complete_msg
separator
# OpenSUSE
elif [ -f /etc/os-release ] && eval "$(cat /etc/os-release)" && [[ $ID == "opensuse"* ]]; then
separator
echo -e "\nDetected an OpenSUSE distribution\n"
echo -e "\nSetting up Python environment\n"
if [[ $ID == "opensuse-leap" ]]; then
zypper install -y python3 python3-pip python3-setuptools python3-devel gcc dmidecode
else
zypper install -y python38 python3-pip python3-setuptools python3-devel gcc dmidecode
fi
echo -e "\nInstalling necessary Python packages\n"
pip_pkg_install
separator
echo -e "\ninstalling auto-cpufreq tool\n"
install
separator
complete_msg
separator
# Manjaro/Arch
elif [ -f /etc/os-release ] && eval "$(cat /etc/os-release)" && [[ $ID == "manjaro" || $ID == "arch" || $ID == "endeavouros" || $ID == "garuda" || $ID == "artix" ]]; then
separator
echo -e "\nDetected an Arch Linux based distribution\n"
echo -e "\nSetting up Python environment\n"
pacman -S --noconfirm --needed python python-pip python-setuptools base-devel dmidecode
echo -e "\nInstalling necessary Python packages\n"
pip_pkg_install
separator
echo -e "\ninstalling auto-cpufreq tool\n"
install
if [[ $ID != "artix" ]]; then
update_service_file
fi
separator
complete_msg
separator
2021-08-20 02:01:12 +02:00
# Void Linux
elif [ -f /etc/os-release ] && eval "$(cat /etc/os-release)" && [[ $ID == "void"* ]]; then
separator
echo -e "\nDetected Void Linux ditribution\n"
separator
echo -e "\nSetting up Python environment\n"
xbps-install -Suy python3 python3-pip python3-devel python3-setuptools base-devel dmidecode
separator
echo -e "\nInstalling necessary Python packages\n"
pip_pkg_install
separator
echo -e "\ninstalling auto-cpufreq tool\n"
install
separator
complete_msg
separator
# Other
else
2020-02-09 14:44:06 +01:00
separator
echo -e "\nDidn't detect Debian or RedHat based distro.\n"
echo -e "To complete installation, you need to:"
echo -e "Install: python3, pip3, python3-setuptools\n"
2020-02-09 14:44:06 +01:00
echo -e "Install necessary Python packages:"
echo -e "pip3 install psutil click distro power"
echo -e "\nRun following sequence of lines:"
echo -e "\n-----"
echo -e "\npython3 setup.py install --record files.txt"
echo -e "mkdir -p /usr/local/share/auto-cpufreq/"
echo -e "cp -r scripts/ /usr/local/share/auto-cpufreq/"
echo -e "\n-----"
echo -e "\nAfter which tool is installed, for full list of options run:"
echo -e "auto-cpufreq"
2020-02-09 14:44:06 +01:00
separator
echo -e "\nConsider creating a feature request to add support for your distro:"
echo -e "https://github.com/AdnanHodzic/auto-cpufreq/issues/new"
echo -e "\nMake sure to include following information:\n"
echo -e "Distribution: $distro"
echo -e "Release: $release"
echo -e "Codename: $codename"
separator
fi
2020-02-09 14:44:06 +01:00
}
function tool_remove {
files="files.txt"
share_dir="/usr/local/share/auto-cpufreq/"
srv_install="/usr/bin/auto-cpufreq-install"
srv_remove="/usr/bin/auto-cpufreq-remove"
stats_file="/var/run/auto-cpufreq.stats"
tool_proc_rm="auto-cpufreq --remove"
# stop any running auto-cpufreq argument (daemon/live/monitor)
tool_arg_pids=($(pgrep -f "auto-cpufreq --"))
for pid in "${tool_arg_pids[@]}"; do
if [[ $tool_arg_pids != $$ ]]; then
kill "$tool_arg_pids"
fi
done
# run uninstall in case of installed daemon
if [ -f $srv_remove ]; then
eval $tool_proc_rm
fi
# remove auto-cpufreq and all its supporting files
[ -f $files ] && cat $files | xargs sudo rm -rf && rm -f $files
[ -f $share_dir ] && rm -rf $share_dir
# files cleanup
[ -f $srv_install ] && rm $srv_install
[ -f $srv_remove ] && rm $srv_remove
[ -f $stats_file ] && rm $stats_file
2020-02-09 14:44:06 +01:00
separator
echo -e "\nauto-cpufreq tool and all its supporting files successfully removed."
separator
2020-02-09 14:44:06 +01:00
}
function ask_operation {
echo -e "\n-------------------------- auto-cpufreq installer -----------------------------"
echo -e "\nWelcome to auto-cpufreq tool installer."
echo -e "\nOptions:\n"
read -p "[I]nstall
2020-02-09 14:44:06 +01:00
[R]emove
[Q]uit
Select a key: [i/r/q]: " answer
}
root_check
if [[ -z "${1}" ]]; then
ask_operation
2020-02-09 14:44:06 +01:00
else
case "${1}" in
"--install")
answer="i"
;;
"--remove")
answer="r"
;;
*)
answer="n"
;;
2020-02-09 14:44:06 +01:00
esac
fi
if [[ $answer == [Ii] ]]; then
root_check
tool_install
elif [[ $answer == [Rr] ]]; then
root_check
tool_remove
elif [[ $answer == [Qq] ]]; then
separator
echo ""
exit 0
2020-02-09 14:44:06 +01:00
else
separator
echo -e "\nUnknown key, aborting ...\n"
exit 1
fi