diff --git a/lgsm/functions/command_dev_detect_glibc.sh b/lgsm/functions/command_dev_detect_glibc.sh index 5ba859aa1..2c8be6c42 100644 --- a/lgsm/functions/command_dev_detect_glibc.sh +++ b/lgsm/functions/command_dev_detect_glibc.sh @@ -32,25 +32,52 @@ elif [ -f "${serverfiles}" ]; then fi echo "" -files=$(find "${serverfiles}" | wc -l) -find "${serverfiles}" -type f -print0 | -while IFS= read -r -d $'\0' line; do - glibcversion=$(objdump -T "${line}" 2>/dev/null | grep -oP "GLIBC[^ ]+" | grep -v GLIBCXX | sort | uniq | sort -r --version-sort | head -n 1) - if [ "${glibcversion}" ]; then - echo "${glibcversion}: ${line}" >>"${tmpdir}/detect_glibc_files.tmp" + +local glibc_check_dir_array=( steamcmddir serverfiles ) +for glibc_check_var in "${glibc_check_dir_array[@]}" +do + if [ "${glibc_check_var}" == "serverfiles" ]; then + glibc_check_dir="${serverfiles}" + glibc_check_name="${gamename}" + elif [ "${glibc_check_var}" == "steamcmddir" ]; then + glibc_check_dir="${steamcmddir}" + glibc_check_name="SteamCMD" + fi + + if [ -d "${glibc_check_dir}" ]; then + glibc_check_files=$(find "${glibc_check_dir}" | wc -l) + find "${glibc_check_dir}" -type f -print0 | + while IFS= read -r -d $'\0' line; do + glibcversion=$(objdump -T "${line}" 2>/dev/null | grep -oP "GLIBC[^ ]+" | grep -v GLIBCXX | sort | uniq | sort -r --version-sort | head -n 1) + if [ "${glibcversion}" ]; then + echo "${glibcversion}: ${line}" >>"${tmpdir}/detect_glibc_files_${glibc_check_var}.tmp" + fi + objdump -T "${line}" 2>/dev/null | grep -oP "GLIBC[^ ]+" >>"${tmpdir}/detect_glibc_${glibc_check_var}.tmp" + echo -n "${i} / ${glibc_check_files}" $'\r' + ((i++)) + done + if [ -f "${tmpdir}/detect_glibc_files_${glibc_check_var}.tmp" ]; then + echo "" + echo "" + echo "${glibc_check_name} GLIBC Requirements" + echo "=================================" + echo "Required GLIBC" + cat "${tmpdir}/detect_glibc_${glibc_check_var}.tmp" | sort | uniq | sort -r --version-sort | head -1 + echo "" + echo "Files requiring GLIBC" + echo "" + echo "Highest verion required: filename" + cat "${tmpdir}/detect_glibc_files_${glibc_check_var}.tmp" + echo "" + echo "All required GLIBC versions" + cat "${tmpdir}/detect_glibc_${glibc_check_var}.tmp" | sort | uniq | sort -r --version-sort + rm "${tmpdir}/detect_glibc_${glibc_check_var}.tmp" + rm "${tmpdir}/detect_glibc_files_${glibc_check_var}.tmp" + else + fn_print_information_nl "GLIBC is not required" + fi + else + fn_print_information_nl "${glibc_check_name} is not installed" fi - objdump -T "${line}" 2>/dev/null | grep -oP "GLIBC[^ ]+" >>"${tmpdir}/detect_glibc.tmp" - echo -n "${i} / ${files}" $'\r' - ((i++)) done -if [ -f "${tmpdir}/detect_glibc_files.tmp" ]; then - echo "" - cat "${tmpdir}/detect_glibc_files.tmp" - echo "" - cat "${tmpdir}/detect_glibc.tmp" | sort | uniq | sort -r --version-sort - rm "${tmpdir}/detect_glibc.tmp" - rm "${tmpdir}/detect_glibc_files.tmp" -else - fn_print_information_nl "GLIBC is not required" -fi core_exit.sh