diff --git a/docker-compose.nodeodm.gpu.intel.yml b/docker-compose.nodeodm.gpu.intel.yml index a49b0210..97d781bb 100644 --- a/docker-compose.nodeodm.gpu.intel.yml +++ b/docker-compose.nodeodm.gpu.intel.yml @@ -10,7 +10,7 @@ services: environment: - WO_DEFAULT_NODES node-odm: - image: opendronemap/nodeodm:gpu.intel + image: opendronemap/nodeodm:gpu.intel.local devices: - "/dev/dri" ports: diff --git a/dpkg/build.sh b/dpkg/build.sh index 2e26ff79..7c054142 100755 --- a/dpkg/build.sh +++ b/dpkg/build.sh @@ -11,12 +11,10 @@ WEBODM_DPKG_NAME="webodm_${WEBODM_VERSION}-${WEBODM_DPKG_VERSION}" BUILD_DIR="${HERE}/build" DEB_DIR="${HERE}/deb" WEBODM_DIR="${HERE}/${WEBODM_DPKG_NAME}/opt/WebODM" -NODEODM_DIR="${HERE}/${WEBODM_DPKG_NAME}/opt/NodeODM" function build() { prepareBuildDir prepareDebDir - prepareNodeODMDir prepareWebODMDir moveToBuildDir buildDeb @@ -55,11 +53,6 @@ function prepareDebDir() { mkdir -p "${DEB_DIR}" } -function prepareNodeODMDir() { - # This can go away when we can pull the image from Docker Hub. - git clone https://github.com/OpenDroneMap/NodeODM.git "${BUILD_DIR}/${WEBODM_DPKG_NAME}/${WEBODM_DPKG_NAME}/opt/NodeODM" -} - function prepareWebODMDir() { TMP_DIR="/tmp/WebODM" if [ -d "${BUILD_DIR}" ]; then diff --git a/dpkg/webodm/DEBIAN/postinst b/dpkg/webodm/DEBIAN/postinst index 36a565d5..a1dd93cf 100755 --- a/dpkg/webodm/DEBIAN/postinst +++ b/dpkg/webodm/DEBIAN/postinst @@ -7,46 +7,15 @@ export WEBODM_USER=odm export WEBODM_USER_HOME="/home/${WEBODM_USER}" export WEBODM_DIR=/opt/WebODM export WEBODM_VENV_DIR="${WEBODM_DIR}/python3-venv" -export NODEODM_DIR=/opt/NodeODM function abortRemove() { echo "Unable to remove webodm." } -function addNodeODMGPUIntelDockerGroups() { - DOCKER_COMPOSE_FILE="${WEBODM_DIR}/docker-compose.nodeodm.gpu.intel.yml" - for gid in $(id -G "${WEBODM_USER}"); do - SED_SEARCH="/^\s\{4\}group_add/{:start /${gid}$/!" - SED_SEARCH="${SED_SEARCH}{N;b start};/${gid}$/p}" - SED_OUT=$(sed -n "${SED_SEARCH}" "${DOCKER_COMPOSE_FILE}") - if [ -z "${SED_OUT}" ]; then - sed -i "/^\s\{4\}image/a \ \ \ \ group_add:\n\ \ \ \ \ \ - ${gid}" "${DOCKER_COMPOSE_FILE}" - fi - done -} - -function buildNodeODMGPUIntelDockerImage() { - cd "${NODEODM_DIR}" - - # We won't have to do this after the image is on Docker Hub. - docker build -f Dockerfile.gpu -t opendronemap/nodeodm:gpu . - - # This will continue to be necessary, since it needs to bake in the actual - # render group id on this system. - RENDER_GROUP_ID=$(getent group render | cut -d":" -f3) - docker build -f Dockerfile.gpu.intel -t opendronemap/nodeodm:gpu.intel --build-arg RENDER_GROUP_ID="${RENDER_GROUP_ID}" . -} - function configure() { detectGPUs createGroup createUser - - if [ "${GPU_INTEL}" = true ]; then - buildNodeODMGPUIntelDockerImage - addNodeODMGPUIntelDockerGroups - fi - createVenv setFilePermissions upgradePythonPip diff --git a/dpkg/webodm/DEBIAN/postrm b/dpkg/webodm/DEBIAN/postrm index 081ab789..0473e96b 100755 --- a/dpkg/webodm/DEBIAN/postrm +++ b/dpkg/webodm/DEBIAN/postrm @@ -7,7 +7,6 @@ export WEBODM_USER=odm export WEBODM_USER_HOME="/home/${WEBODM_USER}" export WEBODM_DIR=/opt/WebODM export WEBODM_VENV_DIR="${WEBODM_DIR}/python3-venv" -export NODEODM_DIR=/opt/NodeODM function abortInstall() { purge diff --git a/dpkg/webodm/DEBIAN/prerm b/dpkg/webodm/DEBIAN/prerm index b3cbbf4e..d65ae215 100755 --- a/dpkg/webodm/DEBIAN/prerm +++ b/dpkg/webodm/DEBIAN/prerm @@ -7,7 +7,6 @@ export WEBODM_USER=odm export WEBODM_USER_HOME="/home/${WEBODM_USER}" export WEBODM_DIR=/opt/WebODM export WEBODM_VENV_DIR="${WEBODM_DIR}/python3-venv" -export NODEODM_DIR=/opt/NodeODM function remove() { stopService diff --git a/webodm.sh b/webodm.sh index 5872f7d2..551f734a 100755 --- a/webodm.sh +++ b/webodm.sh @@ -43,6 +43,30 @@ while [[ $# -gt 0 ]] do key="$1" +detect_gpus(){ + export GPU_AMD=false + export GPU_INTEL=false + export GPU_NVIDIA=false + + if [ "${platform}" = "Linux" ]; then + source "${__dirname}/detect_gpus.sh" + set +ux + fi +} + +prepare_intel_gpu_image(){ + if [ "${GPU_INTEL}" = true ]; then + # curl -O https://raw.githubusercontent.com/OpenDroneMap/NodeODM/master/Dockerfile.gpu.intel + curl -O https://raw.githubusercontent.com/airmap/NodeODM/bkd/gpu-intel-workflow/Dockerfile.gpu.intel.local + RENDER_GROUP_ID=$(getent group render | cut -d":" -f3) + docker build -f Dockerfile.gpu.intel.local -t opendronemap/nodeodm:gpu.intel.local --build-arg RENDER_GROUP_ID="${RENDER_GROUP_ID}" . + rm Dockerfile.gpu.intel + fi +} + +detect_gpus +prepare_intel_gpu_image + case $key in --port) export WO_PORT="$2" @@ -220,11 +244,6 @@ start(){ command="docker-compose -f docker-compose.yml" if [[ $default_nodes > 0 ]]; then - if [ "${platform}" = "Linux" ]; then - source "${__dirname}/detect_gpus.sh" - set +ux - fi - if [ "${GPU_NVIDIA}" = true ]; then command+=" -f docker-compose.nodeodm.gpu.nvidia.yml" elif [ "${GPU_INTEL}" = true ]; then @@ -294,11 +313,6 @@ start(){ } down(){ - if [ "${platform}" = "Linux" ]; then - source "${__dirname}/detect_gpus.sh" - set +ux - fi - command="docker-compose -f docker-compose.yml" if [ "${GPU_NVIDIA}" = true ]; then @@ -369,11 +383,6 @@ elif [[ $1 = "stop" ]]; then environment_check echo "Stopping WebODM..." - if [ "${platform}" = "Linux" ]; then - source "${__dirname}/detect_gpus.sh" - set +ux - fi - command="docker-compose -f docker-compose.yml" if [ "${GPU_NVIDIA}" = true ]; then @@ -417,11 +426,6 @@ elif [[ $1 = "update" ]]; then command="docker-compose -f docker-compose.yml" if [[ $default_nodes > 0 ]]; then - if [ "${platform}" = "Linux" ]; then - source "${__dirname}/detect_gpus.sh" - set +ux - fi - if [ "${GPU_NVIDIA}" = true ]; then command+=" -f docker-compose.nodeodm.gpu.nvidia.yml" elif [ "${GPU_INTEL}" = true ]; then