#!/bin/bash #Required libraries: # "libssl.so" # "libcrypto.so" # "libDataPipes.so" # "libjemalloc.so.2" # "libsqlite3.so.0" # "libTeaMusic.so" # "libnice.so.10" # "libpcre.so.3" (only for web) # "libgobject-2.0.so.0" (only for web) # "libglib-2.0.so.0" (only for web) # "libffi.so.7" [[ -z "${build_os_type}" ]] && { echo "missing build os type"; exit 1; } [[ -z "${build_os_arch}" ]] && { echo "missing build os arch"; exit 1; } build_path="out/${build_os_type}_${build_os_arch}/" function query_system_link() { local _binary="$2" [[ -z "$_binary" ]] && _binary="../../../environment/TeaSpeakServer" data=$(ldd "$_binary" | grep "$1") # shellcheck disable=SC2206 data=($data) library_path=${data[2]} [[ -z "${library_path}" ]] && { echo "failed to resolve library path for $1 in $_binary"; exit 1; } [[ "${library_path}" == "not" ]] && { echo "failed to resolve library path for $1 in $_binary"; exit 1; } } cd $(dirname $0) || exit 1 cd env || { echo "failed to enter env"; exit 1; } [[ -d libs ]] && { rm -r libs || { echo "failed to delete old lib folder"; exit 1; } } mkdir libs || { echo "failed to create lib directory"; exit 1; } cd libs || { echo "failed to enter lib directory"; exit 1; } # Creating copied library_base=$(realpath ../../../../../libraries) # Setting up ssl library_path=$(realpath "${library_base}/boringssl/${build_path}/ssl/libssl.so") cp "$library_path" . || { echo "failed to copy libssl.so"; exit 1; } # Setting up crypto library_path=$(realpath "${library_base}/boringssl/${build_path}/crypto/libcrypto.so") cp "$library_path" . || { echo "failed to copy libcrypto.so"; exit 1; } # Setting up DataPipes library_path=$(realpath "${library_base}/DataPipes/${build_path}/lib/libDataPipes-RTC.so") cp "$library_path" . || { echo "failed to copy libDataPipes-RTC.so"; exit 1; } _dp_path="$library_path" # Setting up Sqlite3 query_system_link "libsqlite3.so.0" cp "${library_path}" . || { echo "failed to copy libsqlite3.so.0"; exit 1; } # Setting up jemalloc query_system_link "libjemalloc.so.2" cp "${library_path}" . || { echo "failed to copy libjemalloc.so.2"; exit 1; } # Setting up TeaMusic library_path=$(realpath "../../../../MusicBot/libs/libTeaMusic.so") cp "$library_path" . || { echo "failed to copy libTeaMusic.so"; exit 1; } if ldd "../../../environment/TeaSpeakServer" | grep -q "libnice.so.10"; then echo "Adding web libraries" # Setting up libnice library_path=$(realpath "${library_base}/libnice/${build_os_type}_${build_os_arch}/lib/libnice.so.10") cp "$library_path" libnice.so.10 || { echo "failed to copy libnice.so.10"; exit 1; } glib_libs=$(realpath "${library_base}//glibc/${build_os_type}_${build_os_arch}/lib/"*"/") cp "$glib_libs/libgobject-2.0.so.0" . || { echo "failed to copy libgobject-2.0.so.0"; exit 1; } cp "$glib_libs/libgmodule-2.0.so.0" . || { echo "failed to copy libgmodule-2.0.so.0"; exit 1; } cp "$glib_libs/libglib-2.0.so.0" . || { echo "failed to copy libglib-2.0.so.0"; exit 1; } cp "$glib_libs/libgio-2.0.so.0" . || { echo "failed to copy libgio-2.0.so.0"; exit 1; } cp "$glib_libs/libffi.so.7" . || { echo "failed to copy libffi.so.7"; exit 1; } # "libgobject-2.0.so.0" (only for web) # "libglib-2.0.so.0" (only for web) # Setting up libpcre query_system_link "libpcre.so.3" "$_dp_path" cp "${library_path}" . || { echo "failed to copy libpcre.so.3"; exit 1; } fi # Doing some prostprocessing chmod 755 * for file in *.so*; do echo "Editing rpath for $file" strip -s "$file" patchelf --set-rpath "./libs/:./" "$file" done echo "All libraries have been copied successfully"