new build script
This commit is contained in:
parent
e12821f31c
commit
c150f968c6
|
|
@ -1,32 +1,88 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Exit immediately if a command exits with a non-zero status.
|
LOG_FILE=$(mktemp)
|
||||||
set -e
|
MODULE_NAME="snd_usb_us144mkii"
|
||||||
|
KO_FILE="snd-usb-us144mkii.ko"
|
||||||
|
TARGET_DIR="/lib/modules/$(uname -r)/extra/us144mkii"
|
||||||
|
|
||||||
echo "--- Cleaning build directory ---"
|
GREEN='\033[0;32m'
|
||||||
make clean
|
RED='\033[0;31m'
|
||||||
|
GRAY='\033[0;90m'
|
||||||
|
NC='\033[0m'
|
||||||
|
BOLD='\033[1m'
|
||||||
|
|
||||||
echo "--- Compiling the driver ---"
|
cleanup() {
|
||||||
make
|
tput cnorm
|
||||||
|
rm -f "$LOG_FILE"
|
||||||
|
}
|
||||||
|
trap cleanup EXIT
|
||||||
|
|
||||||
echo "--- Installing the driver ---"
|
header() {
|
||||||
SUDO_CMD="sudo"
|
clear
|
||||||
KERNEL_MODULE_DIR="/lib/modules/$(uname -r)/extra/us144mkii"
|
echo -e "${GREEN}${BOLD}"
|
||||||
|
echo " TASCAM US-144MKII DRIVER INSTALLER"
|
||||||
|
echo " =================================="
|
||||||
|
echo -e "${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
echo "Creating directory if it doesn't exist: $KERNEL_MODULE_DIR"
|
init_sudo() {
|
||||||
$SUDO_CMD mkdir -p "$KERNEL_MODULE_DIR"
|
if [ "$EUID" -ne 0 ]; then
|
||||||
|
echo -e "${GRAY} Creating sudo session...${NC}"
|
||||||
|
if ! sudo -v; then
|
||||||
|
echo -e "\n ${RED}✖ Authentication failed.${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
echo "Copying snd-usb-us144mkii.ko to $KERNEL_MODULE_DIR"
|
run() {
|
||||||
$SUDO_CMD cp snd-usb-us144mkii.ko "$KERNEL_MODULE_DIR"
|
local cmd="$1"
|
||||||
|
local msg="$2"
|
||||||
|
local allow_fail="${3:-false}"
|
||||||
|
|
||||||
echo "--- Updating module dependencies ---"
|
tput civis
|
||||||
$SUDO_CMD depmod -a
|
eval "$cmd" > "$LOG_FILE" 2>&1 &
|
||||||
|
local pid=$!
|
||||||
|
|
||||||
echo "--- Reloading the driver ---"
|
local spin='⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏'
|
||||||
echo "Unloading old driver (if present)..."
|
local i=0
|
||||||
$SUDO_CMD rmmod snd_usb_us144mkii -f || true
|
|
||||||
|
|
||||||
echo "Loading new driver..."
|
while kill -0 "$pid" 2>/dev/null; do
|
||||||
$SUDO_CMD modprobe snd-usb-us144mkii
|
i=$(((i + 1) % ${#spin}))
|
||||||
|
printf "\r ${GREEN}${spin:$i:1}${NC} ${GRAY}%s...${NC}" "$msg"
|
||||||
|
sleep 0.08
|
||||||
|
done
|
||||||
|
|
||||||
echo "--- Driver build and installation complete! ---"
|
wait $pid
|
||||||
|
local exit_code=$?
|
||||||
|
|
||||||
|
if [ $exit_code -eq 0 ]; then
|
||||||
|
printf "\r\033[K ${GREEN}✔${NC} ${BOLD}%s${NC}\n" "$msg"
|
||||||
|
else
|
||||||
|
if [ "$allow_fail" = "true" ]; then
|
||||||
|
printf "\r\033[K ${GREEN}✔${NC} ${BOLD}%s${NC} ${GRAY}(Skipped)${NC}\n" "$msg"
|
||||||
|
else
|
||||||
|
printf "\r\033[K ${RED}✖${NC} ${BOLD}%s${NC}\n" "$msg"
|
||||||
|
echo -e "\n${RED} Build Log:${NC}"
|
||||||
|
echo " ----------------------------------------"
|
||||||
|
sed 's/^/ /' "$LOG_FILE"
|
||||||
|
echo " ----------------------------------------"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
header
|
||||||
|
init_sudo
|
||||||
|
|
||||||
|
run "make clean" "Cleaning build directory"
|
||||||
|
run "make" "Compiling driver source"
|
||||||
|
|
||||||
|
run "sudo mkdir -p \"$TARGET_DIR\"" "Verifying module directory"
|
||||||
|
run "sudo cp \"$KO_FILE\" \"$TARGET_DIR\"" "Installing kernel module"
|
||||||
|
run "sudo depmod -a" "Updating dependency map"
|
||||||
|
|
||||||
|
run "sudo rmmod $MODULE_NAME" "Unloading previous driver" "true"
|
||||||
|
run "sudo modprobe $(echo $MODULE_NAME | tr '_' '-')" "Loading new driver"
|
||||||
|
|
||||||
|
echo -e "\n ${GREEN}${BOLD}Done.${NC}\n"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue