our_knp/examples/install_knp.sh
int 8f43927575 Initial import: KNP experiments (examples, viz, cats-dogs, reports)
examples/ is based on KasperskyLab/knp at 55470ed6 with local changes
to the mnist-learn altai/blifat models, cuda-backend CMake and model_loader.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 18:17:15 +03:00

76 lines
2.2 KiB
Bash

#!/bin/bash
SCRIPT_PATH="$(dirname $(realpath "${BASH_SOURCE[0]}"))"
DOCKER_COMMAND="docker"
SDK_IMAGE_BASE_NAME="knp-sdk-image"
BUILD_IMAGE_BASE_NAME="knp-build-image"
SDK_IMAGE_NAME="kasperskydh/${SDK_IMAGE_BASE_NAME}:latest"
SDK_IMAGE_FILE="${SCRIPT_PATH}/${SDK_IMAGE_BASE_NAME}.txz"
EULA_FILE="${SCRIPT_PATH}/LICENSE.txt"
ADD_DNS="--dns 8.8.8.8"
KNP_PACKAGES_VERSION="2.0.0_amd64"
function die()
{
echo "$1" >&2
exit "${2:-1}"
}
function show_eula()
{
while true; do
more "$1"
echo
read -p "Do you accept the EULA? (y/n): " choice
case "$choice" in
[Yy]*) echo "EULA accepted.";
break;;
[Nn]*) die "EULA rejected. Exiting."
;;
*) echo "Please answer yes (y) or no (n).";;
esac
done
}
if ! command -v "${DOCKER_COMMAND}" &>/dev/null; then
die "Docker isn't installed, you need to install docker package."
fi
if [ -e "${EULA_FILE}" ]; then
show_eula "${EULA_FILE}"
fi
if [ -e "${SDK_IMAGE_FILE}" ]; then
echo "SDK image file \"${SDK_IMAGE_FILE}\" was found, loading..."
"${DOCKER_COMMAND}" load -i "${SDK_IMAGE_FILE}" || die "Image loading error."
echo "SDK image file loaded successfully."
else
echo "Pulling Docker image ${SDK_IMAGE_NAME}..."
"${DOCKER_COMMAND}" pull "${SDK_IMAGE_NAME}" || die "Image pull incomplete."
fi
TMP_FILE=$(mktemp -u)
trap "rm -f \"${TMP_FILE}\"" EXIT
echo "Installing CUDA and GPU backend into the Docker image ${SDK_IMAGE_NAME}..."
"${DOCKER_COMMAND}" run --cidfile="${TMP_FILE}" ${ADD_DNS} -ti "${SDK_IMAGE_NAME}" \
dpkg -i /knp/knp-gpu-cuda-backend_${KNP_PACKAGES_VERSION}.deb /knp/knp-gpu-cuda-backend-dev_${KNP_PACKAGES_VERSION}.deb \
|| die "Installation incomplete."
#echo "Removing old SDK image..."
#"${DOCKER_COMMAND}" image rm -f "${IMAGE_NAME}" || die "Cannot remove Docker image."
echo "Commiting changes into image..."
"${DOCKER_COMMAND}" commit -m "CUDA and KNP GPU backend installed" $(cat "${TMP_FILE}") "${SDK_IMAGE_NAME}"\
|| die "Cannot commit changes into Docker image."
echo "SDK image was installed successfully."
echo "You can run shell in the image, using following command: 'docker run -ti --rm ${SDK_IMAGE_NAME} bash'"