Browse Source

consolidate exit tasks

Michael Yang 1 year ago
parent
commit
31488be1e3
1 changed files with 30 additions and 18 deletions
  1. 30 18
      scripts/install.sh

+ 30 - 18
scripts/install.sh

@@ -8,10 +8,6 @@ status() { echo ">>> $*" >&2; }
 error() { echo "ERROR $*"; exit 1; }
 error() { echo "ERROR $*"; exit 1; }
 warning() { echo "WARNING: $*"; }
 warning() { echo "WARNING: $*"; }
 
 
-TEMP_DIR=$(mktemp -d)
-cleanup() { rm -rf "$TEMP_DIR"; }
-trap cleanup EXIT
-
 available() { command -v "$1" >/dev/null; }
 available() { command -v "$1" >/dev/null; }
 require() {
 require() {
     MISSING=''
     MISSING=''
@@ -52,6 +48,31 @@ if [ -n "$NEEDS" ]; then
     exit 1
     exit 1
 fi
 fi
 
 
+TEMP_DIR=$(mktemp -d)
+cleanup() {
+    EXIT_CODE=$?
+    rm -rf "$TEMP_DIR"
+
+    if available nvidia-smi && lsmod | grep -qv nvidia; then
+        status 'Reboot to complete NVIDIA CUDA driver install.'
+    fi
+
+    if available systemctl >/dev/null; then
+        $SUDO systemctl restart ollama
+
+        timeout 10 sh -c 'while :; do [ "$(curl -s http://127.0.0.1:11434)" = "Ollama is running" ] && break; sleep 0.2; done' \
+            && status 'Ollama service is available at 127.0.0.1:11434' \
+            || true
+    fi
+
+    if available ollama; then
+        status 'Install completed. Run "ollama --help" to get started.'
+    fi
+
+    exit $EXIT_CODE
+}
+trap cleanup EXIT
+
 status "Downloading ollama..."
 status "Downloading ollama..."
 curl --fail --show-error --location --progress-bar -o "$TEMP_DIR/ollama" "https://ollama.ai/download/ollama-linux-$ARCH"
 curl --fail --show-error --location --progress-bar -o "$TEMP_DIR/ollama" "https://ollama.ai/download/ollama-linux-$ARCH"
 
 
@@ -65,12 +86,6 @@ status "Installing ollama to $BIN_DIR..."
 $SUDO install -o0 -g0 -m755 -d "$BIN_DIR"
 $SUDO install -o0 -g0 -m755 -d "$BIN_DIR"
 $SUDO install -o0 -g0 -m755 "$TEMP_DIR/ollama" "$BIN_DIR/ollama"
 $SUDO install -o0 -g0 -m755 "$TEMP_DIR/ollama" "$BIN_DIR/ollama"
 
 
-install_success() { 
-    status 'The Ollama API is now available at 0.0.0.0:11434.'
-    status 'Install complete. Run "ollama" from the command line.'
-}
-trap install_success EXIT
-
 # Everything from this point onwards is optional.
 # Everything from this point onwards is optional.
 
 
 configure_systemd() {
 configure_systemd() {
@@ -102,9 +117,6 @@ EOF
             status "Enabling and starting ollama service..."
             status "Enabling and starting ollama service..."
             $SUDO systemctl daemon-reload
             $SUDO systemctl daemon-reload
             $SUDO systemctl enable ollama
             $SUDO systemctl enable ollama
-
-            start_service() { $SUDO systemctl restart ollama; }
-            trap start_service EXIT
             ;;
             ;;
     esac
     esac
 }
 }
@@ -115,7 +127,7 @@ fi
 
 
 if ! available lspci && ! available lshw; then
 if ! available lspci && ! available lshw; then
     warning "Unable to detect NVIDIA GPU. Install lspci or lshw to automatically detect and install NVIDIA CUDA drivers."
     warning "Unable to detect NVIDIA GPU. Install lspci or lshw to automatically detect and install NVIDIA CUDA drivers."
-    exit 0
+    exit
 fi
 fi
 
 
 check_gpu() {
 check_gpu() {
@@ -128,13 +140,13 @@ check_gpu() {
 
 
 if check_gpu nvidia-smi; then
 if check_gpu nvidia-smi; then
     status "NVIDIA GPU installed."
     status "NVIDIA GPU installed."
-    exit 0
+    exit
 fi
 fi
 
 
 if ! check_gpu lspci && ! check_gpu lshw; then
 if ! check_gpu lspci && ! check_gpu lshw; then
     install_success
     install_success
-    warning "No NVIDIA GPU detected. Ollama will run in CPU-only mode."
-    exit 0
+    warning "No NVIDIA GPU detected. Ollama will run with CPU."
+    exit
 fi
 fi
 
 
 # ref: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#rhel-7-centos-7
 # ref: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#rhel-7-centos-7
@@ -242,7 +254,7 @@ if ! lsmod | grep -q nvidia; then
 
 
     if lsmod | grep -q nouveau; then
     if lsmod | grep -q nouveau; then
         status 'Reboot to complete NVIDIA CUDA driver install.'
         status 'Reboot to complete NVIDIA CUDA driver install.'
-        exit 0
+        exit
     fi
     fi
 
 
     $SUDO modprobe nvidia
     $SUDO modprobe nvidia