#!/bin/bash
# Patch KOMPAS binaries to work with glibc 2.43 compatibility layer

echo "Настройка файлов приложения..."
echo ""

# Patch ELF binaries in /opt/ascon/*v25* directories
find /opt/ascon/*v25* -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

# Add glibc libraries to /usr/bin symlinks
for i in /usr/bin/kompas3d-viewer-v25 /usr/bin/kompas-v25 /usr/bin/kompas-home-v25 /usr/bin/kompas-study-v25
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

# Fix rpath for symlinks in /usr/bin (ORIGIN points to /usr/bin, not to real binary dir)
if [ -f /usr/bin/kompas-v25 ]; then
        patchelf --set-rpath /opt/ascon/kompas3d-v25/Bin:/usr/lib64/glibc2.43 /usr/bin/kompas-v25
fi
if [ -f /usr/bin/kompas3d-viewer-v25 ]; then
        patchelf --set-rpath /opt/ascon/kompas3d-viewer-v25/Bin:/usr/lib64/glibc2.43 /usr/bin/kompas3d-viewer-v25
fi
if [ -f /usr/bin/kompas-home-v25 ]; then
        patchelf --set-rpath /opt/ascon/kompas-home-v25/Bin:/usr/lib64/glibc2.43 /usr/bin/kompas-home-v25
fi
if [ -f /usr/bin/kompas-study-v25 ]; then
        patchelf --set-rpath /opt/ascon/kompas-study-v25/Bin:/usr/lib64/glibc2.43 /usr/bin/kompas-study-v25
fi

# Remove GLIBC version requirement from kactivation
if [ -f /opt/ascon/kompas3d-v25/License/kactivation ]; then
        patchelf --remove-needed-version libc.so.6 GLIBC_2.34 /opt/ascon/kompas3d-v25/License/kactivation
fi

# Create symlinks to glibc2.43 and LLVM18 libraries in Bin directories
for i in /usr/lib64/glibc2.43/*.so* /opt/llvm18/lib64/*.so*
do
        if test -d /opt/ascon/kompas3d-v25; then
                ln -sfr "$i" /opt/ascon/kompas3d-v25/Bin/"$(basename "$i")"
        fi
        if test -d /opt/ascon/kompas3d-viewer-v25; then
                ln -sfr "$i" /opt/ascon/kompas3d-viewer-v25/Bin/"$(basename "$i")"
        fi
        if test -d /opt/ascon/kompas-home-v25; then
                ln -sfr "$i" /opt/ascon/kompas-home-v25/Bin/"$(basename "$i")"
        fi
        if test -d /opt/ascon/kompas-study-v25; then
                ln -sfr "$i" /opt/ascon/kompas-study-v25/Bin/"$(basename "$i")"
        fi
done
echo "Настройка завершена!"
