#!/bin/bash
# Requires: llvm18-libcxx
# Requires: llvm18-libcxxabi
# Requires: llvm18-libunwind
# Requires: glibc2.43
# Requires: lib64tiff6
# Requires: patchelf

KOMPAS_REPO_URL="${KOMPAS_REPO_URL:-https://repo.ascon.ru/stable/rpm/redos/8.0/}"
# KOMPAS_INSTALL: all (default), kompas, viewer
KOMPAS_INSTALL="${KOMPAS_INSTALL:-all}"

# /usr/bin/kompas3d-viewer-v24
# /usr/bin/kompas-v24

case "$KOMPAS_INSTALL" in
	all|kompas|viewer) ;;
	*) echo "Error: KOMPAS_INSTALL must be all, kompas or viewer" >&2; exit 1 ;;
esac

packages=""
[ "$KOMPAS_INSTALL" = "all" ] || [ "$KOMPAS_INSTALL" = "kompas" ] && packages="$packages ascon-kompas3d-v24-full"
[ "$KOMPAS_INSTALL" = "all" ] || [ "$KOMPAS_INSTALL" = "viewer" ] && packages="$packages ascon-kompas3d-viewer-v24-full"

dnf \
	--nogpgcheck \
	--repofrompath kompas,"$KOMPAS_REPO_URL" \
	install -y \
	$packages

if [ $? -ne 0 ]; then
	echo "Ошибка установки пакетов" >&2
	exit 1
fi

echo "Пакеты установлены, вносим дополнительные правки..."
echo ""

find /opt/ascon/*v24* -type f | grep -v /kactivation | \
while read -r line
do
	if ! file "$line" | grep -q ELF; then continue; fi
	if patchelf --print-interpreter "$line" 2>/dev/null | grep -q ld-linux-x86-64.so.2 ; then
		patchelf --set-interpreter /usr/lib64/glibc2.43/ld-linux-glibc2.43-x86-64.so.2 "$line"
	fi
	if patchelf --print-needed "$line" 2>/dev/null | grep -q ^librt.so.1; then
		patchelf --add-needed /usr/lib64/glibc2.43/librt.so.1 "$line"
	fi
	if patchelf --print-needed "$line" 2>/dev/null | grep -q ^libpthread.so.0; then
		patchelf --add-needed /usr/lib64/glibc2.43/libpthread.so.0 "$line"
	fi
done

for i in /usr/bin/kompas3d-viewer-v24 /usr/bin/kompas-v24
do
	test -f "$i" || continue
	patchelf --add-needed /usr/lib64/glibc2.43/librt.so.1 "$i"
	patchelf --add-needed /usr/lib64/glibc2.43/libpthread.so.0 "$i"
done

patchelf --remove-needed-version libc.so.6 GLIBC_2.34 /opt/ascon/kompas3d-v24/License/kactivation

for i in /usr/lib64/glibc2.43/*.so* /opt/llvm18/lib64/*.so*
do
	if test -d /opt/ascon/kompas3d-v24; then
		ln -sfr "$i" /opt/ascon/kompas3d-v24/Bin/"$(basename "$i")"
	fi
	if test -d /opt/ascon/kompas3d-viewer-v24; then
		ln -sfr "$i" /opt/ascon/kompas3d-viewer-v24/Bin/"$(basename "$i")"
	fi
done
