zhongrj
2025-11-25 b89962006164a462404b79a738bee8cbb6d7fe7e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/usr/bin/env bash
 
set -ux
 
HERE="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
 
WEBODM_VERSION=1.9.7
WEBODM_DPKG_VERSION=1
WEBODM_DPKG_NAME="webodm_${WEBODM_VERSION}-${WEBODM_DPKG_VERSION}"
 
function aptFixInstall() {
    echo "aptFixInstall"
    sudo apt update
    sudo apt --fix-missing --fix-broken install
}
 
function ensureDocker() {
    if ! command -v docker &> /dev/null; then
        sudo apt install docker.io
    fi
}
 
function ensureIntelOpenCL() {
    if [ "${GPU_INTEL}" = false ]; then
        return
    fi
 
    INTEL_COMPUTE_RUNTIME_VERSION="21.38.21026"
    INTEL_GRAPHICS_COMPILER_VERSION="1.0.8708"
 
    INTEL_COMPUTE_RUNTIME_DOWNLOAD_URL="https://github.com/intel/compute-runtime/releases/download/${INTEL_COMPUTE_RUNTIME_VERSION}"
    INTEL_GRAPHICS_COMPILER_DOWNLOAD_URL="https://github.com/intel/intel-graphics-compiler/releases/download/igc-${INTEL_GRAPHICS_COMPILER_VERSION}"
 
    INTEL_GMMLIB_VERSION="21.2.1"
    INTEL_LEVEL_ZERO_GPU_VERSION="1.2.21026"
 
    dpkg -l intel-gmmlib | grep "${INTEL_GMMLIB_VERSION}"
    INTEL_GMMLIB="${?}"
 
    dpkg -l intel-igc-core | grep "${INTEL_GRAPHICS_COMPILER_VERSION}"
    INTEL_IGC_CORE="${?}"
 
    dpkg -l intel-igc-opencl | grep "${INTEL_GRAPHICS_COMPILER_VERSION}"
    INTEL_IGC_OPENCL="${?}"
 
    dpkg -l intel-opencl | grep "${INTEL_COMPUTE_RUNTIME_VERSION}"
    INTEL_OPENCL="${?}"
 
    dpkg -l intel-ocloc | grep "${INTEL_COMPUTE_RUNTIME_VERSION}"
    INTEL_OCLOC="${?}"
 
    dpkg -l intel-level-zero-gpu | grep "${INTEL_LEVEL_ZERO_GPU_VERSION}"
    INTEL_LEVEL_ZERO_GPU="${?}"
 
    if [ "${INTEL_GMMLIB}" -ne 0 ] || [ "${INTEL_IGC_CORE}" -ne 0 ] || [ "${INTEL_IGC_OPENCL}" -ne 0 ] || [ "${INTEL_OPENCL}" -ne 0 ] || [ "${INTEL_OCLOC}" -ne 0 ]; then
        sudo apt-get update
        sudo apt-get install --no-install-recommends ocl-icd-libopencl1 curl
        sudo rm -rf /var/lib/apt/lists/*
        TEMP_DIR=/tmp/opencl
        sudo mkdir -p "${TEMP_DIR}"
 
        if [ "${INTEL_GMMLIB}" -ne 0 ]; then
            sudo curl -L "${INTEL_COMPUTE_RUNTIME_DOWNLOAD_URL}/intel-gmmlib_${INTEL_GMMLIB_VERSION}_amd64.deb" --output "${TEMP_DIR}/intel-gmmlib_${INTEL_GMMLIB_VERSION}_amd64.deb"
        fi
 
        if [ "${INTEL_IGC_CORE}" -ne 0 ]; then
            sudo curl -L "${INTEL_GRAPHICS_COMPILER_DOWNLOAD_URL}/intel-igc-core_${INTEL_GRAPHICS_COMPILER_VERSION}_amd64.deb" --output "${TEMP_DIR}/intel-igc-core${INTEL_GRAPHICS_COMPILER_VERSION}_amd64.deb"
        fi
 
        if [ "${INTEL_IGC_OPENCL}" -ne 0 ]; then
            sudo curl -L "${INTEL_GRAPHICS_COMPILER_DOWNLOAD_URL}/intel-igc-opencl_${INTEL_GRAPHICS_COMPILER_VERSION}_amd64.deb" --output "${TEMP_DIR}/intel-igc-core${INTEL_GRAPHICS_COMPILER_VERSION}_amd64.deb"
        fi
 
        if [ "${INTEL_OPENCL}" -ne 0 ]; then
            sudo curl -L "${INTEL_COMPUTE_RUNTIME_DOWNLOAD_URL}/intel-opencl_${INTEL_COMPUTE_RUNTIME_VERSION}_amd64.deb" --output "${TEMP_DIR}/intel-gmmlib_${INTEL_COMPUTE_RUNTIME_VERSION}_amd64.deb"
        fi
 
        if [ "${INTEL_OCLOC}" -ne 0 ]; then
            sudo curl -L "${INTEL_COMPUTE_RUNTIME_DOWNLOAD_URL}/intel-ocloc_${INTEL_COMPUTE_RUNTIME_VERSION}_amd64.deb" --output "${TEMP_DIR}/intel-ocloc_${INTEL_COMPUTE_RUNTIME_VERSION}_amd64.deb"
        fi
 
        if [ "${INTEL_LEVEL_ZERO_GPU}" -ne 0 ]; then
            sudo curl -L "${INTEL_COMPUTE_RUNTIME_DOWNLOAD_URL}/intel-level-zero-gpu_${INTEL_LEVEL_ZERO_GPU_VERSION}_amd64.deb" --output "${TEMP_DIR}/intel-level-zero-gpu_${INTEL_LEVEL_ZERO_GPU_VERSION}_amd64.deb"
        fi
 
        sudo dpkg -i "${TEMP_DIR}/"*.deb
        sudo ldconfig
        sudo rm -Rf "${TEMP_DIR}"
        sudo apt-get update
        sudo apt install clinfo
    fi
}
 
function ensureNVIDIAOpenCL() {
    if [ "${GPU_NVIDIA}" = false ]; then
        return
    fi
 
    RECOMMENDED_DRIVER=$(ubuntu-drivers devices | grep "nvidia.*recommended" | cut -d' ' -f5)
    if [ -z "${RECOMMENDED_DRIVER}" ]; then
        echo "Unable to find a recommended NVIDIA driver."
        exit 1
    fi
 
    sudo apt install "${RECOMMENDED_DRIVER}"
}
 
function ensureOpenCL() {
    source "${HERE}/detect_gpus.sh"
 
    if [ "${GPU_NVIDIA}" = true ]; then
        ensureNVIDIAOpenCL
    fi
 
    if [ "${GPU_INTEL}" = true ]; then
        ensureIntelOpenCL
    fi
}
 
function install() {
    ensureOpenCL
    ensureDocker
    sudo dpkg -i "${HERE}/${WEBODM_DPKG_NAME}.deb"
}
 
function uninstall() {
    sudo dpkg --purge webodm
}
 
uninstall || echo "Skipping uninstall."
install || aptFixInstall