#!/bin/sh -e appdir=$(readlink -f ${APPDIR:-$(dirname "$0")}) desktopfile=$(ls -1 "$appdir"/*.desktop | head -n1) if [ ! -f "$desktopfile" ]; then echo "No desktop file found!" exit 1 fi library_path="" library_type= binary="$appdir"/usr/bin/$(sed -n 's|^Exec=||p' "$desktopfile" | cut -d' ' -f1) for lib_tuple in libstdc++.so.6:'^GLIBCXX_[0-9]' libgcc_s.so.1:'^GCC_[0-9]'; do lib_filename=$(echo "$lib_tuple" | cut -d: -f1) version_prefix=$(echo "$lib_tuple" | cut -d: -f2) lib_dir="$appdir"/usr/optional/"$lib_filename"/ lib_path="$lib_dir"/"$lib_filename" if [ -e "$lib_path" ]; then lib=$(PATH="/sbin:$PATH" ldconfig -p | grep "$lib_filename" | awk 'NR==1 {print $NF}') sym_sys=$(tr '\0' '\n' < "$lib" | grep -e "$version_prefix" | sort --version-sort | tail -n1) sym_app=$(tr '\0' '\n' < "$lib_path" | grep -e "$version_prefix" | sort --version-sort | tail -n1) if [ z$(printf "${sym_sys}\n${sym_app}" | sort --version-sort | tail -n1) != z"$sym_sys" ]; then export library_path="$lib_dir"/:"$library_path" fi fi done export LD_LIBRARY_PATH="$library_path:$LD_LIBRARY_PATH" if [ -n "$cxxpath" ] || [ -n "$gccpath" ]; then if [ -e "$appdir"/usr/optional/exec.so ]; then export LD_PRELOAD="$appdir"/usr/optional/exec.so:"$LD_PRELOAD" fi fi exec "$binary" "$@"