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
## associated FreeRDP installation (where the FreeRDP library .so files are
## located), printing the result to STDOUT. If the directory cannot be
## Locates the base directory of the FreeRDP installation (where the FreeRDP library
## .so files are located), printing the result to STDOUT. If the directory cannot be
## determined, an error is printed.
##
## @param PLUGIN_FILE
## The full path to the FreeRDP plugin to check.
##
where_is_freerdp() {
PLUGIN_FILE="$1"
# Determine the location of all libfreerdp* libraries explicitly linked
# to given file
PATHS="$(ldd "$PLUGIN_FILE" \
| awk '/=>/{print $(NF-1)}' \
| grep 'libfreerdp' \
# Determine the location of any freerdp2 .so files
PATHS="$(find / -iname '*libfreerdp2.so.*' \
| xargs -r dirname \
| xargs -r realpath \
| sort -u)"
# 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
return 1
fi
@ -66,11 +57,11 @@ where_is_freerdp() {
# search path of FreeRDP
#
while [ -n "$1" ]; do
# Determine correct install location for FreeRDP plugins
FREERDP_DIR="$(where_is_freerdp)"
FREERDP_PLUGIN_DIR="${FREERDP_DIR}/freerdp2"
# Determine correct install location for FreeRDP plugins
FREERDP_DIR="$(where_is_freerdp "$1")"
FREERDP_PLUGIN_DIR="${FREERDP_DIR}/freerdp2"
while [ -n "$1" ]; do
# Add symbolic link if necessary
if [ ! -e "$FREERDP_PLUGIN_DIR/$(basename "$1")" ]; then
@ -83,4 +74,3 @@ while [ -n "$1" ]; do
shift
done