GUACAMOLE-1540: Search for libfreerdp2 installation directly instead of checking links.

This commit is contained in:
James Muehlner 2022-02-21 16:57:48 -08:00
parent a0faa02616
commit 757928dfa1

View File

@ -30,29 +30,20 @@
## ##
## ##
## Given the full path to a FreeRDP plugin, locates the base directory of the ## Locates the base directory of the FreeRDP installation (where the FreeRDP library
## associated FreeRDP installation (where the FreeRDP library .so files are ## .so files are located), printing the result to STDOUT. If the directory cannot be
## located), printing the result to STDOUT. If the directory cannot be
## determined, an error is printed. ## determined, an error is printed.
## ##
## @param PLUGIN_FILE
## The full path to the FreeRDP plugin to check.
##
where_is_freerdp() { where_is_freerdp() {
PLUGIN_FILE="$1" # Determine the location of any freerdp2 .so files
PATHS="$(find / -iname '*libfreerdp2.so.*' \
# Determine the location of all libfreerdp* libraries explicitly linked
# to given file
PATHS="$(ldd "$PLUGIN_FILE" \
| awk '/=>/{print $(NF-1)}' \
| grep 'libfreerdp' \
| xargs -r dirname \ | xargs -r dirname \
| xargs -r realpath \ | xargs -r realpath \
| sort -u)" | sort -u)"
# Verify that exactly one location was found # Verify that exactly one location was found
if [ "$(echo "$PATHS" | wc -l)" != 1 ]; then if [ -z "$PATHS" -o "$(echo "$PATHS" | wc -l)" != 1 ]; then
echo "$1: Unable to locate FreeRDP install location." >&2 echo "$1: Unable to locate FreeRDP install location." >&2
return 1 return 1
fi fi
@ -66,12 +57,12 @@ where_is_freerdp() {
# search path of FreeRDP # search path of FreeRDP
# #
while [ -n "$1" ]; do
# Determine correct install location for FreeRDP plugins # Determine correct install location for FreeRDP plugins
FREERDP_DIR="$(where_is_freerdp "$1")" FREERDP_DIR="$(where_is_freerdp)"
FREERDP_PLUGIN_DIR="${FREERDP_DIR}/freerdp2" FREERDP_PLUGIN_DIR="${FREERDP_DIR}/freerdp2"
while [ -n "$1" ]; do
# Add symbolic link if necessary # Add symbolic link if necessary
if [ ! -e "$FREERDP_PLUGIN_DIR/$(basename "$1")" ]; then if [ ! -e "$FREERDP_PLUGIN_DIR/$(basename "$1")" ]; then
mkdir -p "$FREERDP_PLUGIN_DIR" mkdir -p "$FREERDP_PLUGIN_DIR"
@ -83,4 +74,3 @@ while [ -n "$1" ]; do
shift shift
done done