From c150f968c6d8d78618a91a778ca7433e8b7a6d45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0erif=20Rami?= Date: Fri, 9 Jan 2026 16:24:28 +0100 Subject: [PATCH] new build script --- build_and_install.sh | 98 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 77 insertions(+), 21 deletions(-) diff --git a/build_and_install.sh b/build_and_install.sh index 95c21f5..4c6bbda 100755 --- a/build_and_install.sh +++ b/build_and_install.sh @@ -1,32 +1,88 @@ #!/bin/bash -# Exit immediately if a command exits with a non-zero status. -set -e +LOG_FILE=$(mktemp) +MODULE_NAME="snd_usb_us144mkii" +KO_FILE="snd-usb-us144mkii.ko" +TARGET_DIR="/lib/modules/$(uname -r)/extra/us144mkii" -echo "--- Cleaning build directory ---" -make clean +GREEN='\033[0;32m' +RED='\033[0;31m' +GRAY='\033[0;90m' +NC='\033[0m' +BOLD='\033[1m' -echo "--- Compiling the driver ---" -make +cleanup() { + tput cnorm + rm -f "$LOG_FILE" +} +trap cleanup EXIT -echo "--- Installing the driver ---" -SUDO_CMD="sudo" -KERNEL_MODULE_DIR="/lib/modules/$(uname -r)/extra/us144mkii" +header() { + clear + 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" -$SUDO_CMD mkdir -p "$KERNEL_MODULE_DIR" +init_sudo() { + 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" -$SUDO_CMD cp snd-usb-us144mkii.ko "$KERNEL_MODULE_DIR" +run() { + local cmd="$1" + local msg="$2" + local allow_fail="${3:-false}" -echo "--- Updating module dependencies ---" -$SUDO_CMD depmod -a + tput civis + eval "$cmd" > "$LOG_FILE" 2>&1 & + local pid=$! -echo "--- Reloading the driver ---" -echo "Unloading old driver (if present)..." -$SUDO_CMD rmmod snd_usb_us144mkii -f || true + local spin='⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏' + local i=0 -echo "Loading new driver..." -$SUDO_CMD modprobe snd-usb-us144mkii + while kill -0 "$pid" 2>/dev/null; do + 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"