#!/bin/bash # # SPDX-License-Identifier: Apache-2.0 # Copyright (C) 2018 IBM Corp. set -eou pipefail if [ $# -lt 2 ] then echo Usage: $0 [user@][host] [tarball] exit 1 fi TARGET="$1" DEBUGTOOLS_PATH="$2" DEBUGTOOLS="$(basename "${DEBUGTOOLS_PATH}")" scp "${DEBUGTOOLS_PATH}" libncurses.so.5.9 libncursesw.so.5.9 "${TARGET}":/tmp/ ssh "${TARGET}" <<-EOF set -eou pipefail set -x on_exit() { rm -f /tmp/'${DEBUGTOOLS}' rm -f /tmp/libncurses.so.5.9 /tmp/libncursesw.so.5.9 } trap on_exit EXIT # Deal with field mode if ! mountpoint /usr/local then systemctl unmask usr-local.mount systemctl start usr-local.mount fi # Untar debug tools tarball into /usr/local pushd /usr/local tar -xvJf /tmp/"${DEBUGTOOLS}" popd # Work around bugs preventing perf from working # Tracking issue: https://github.com/openbmc/openbmc/issues/2880 # Fake expand(1): https://github.com/openbmc/openbmc/issues/2879 mkdir -p bin pushd /usr/local/bin # which expand isn't enough as expand might be a symlink to a busybox not built with CONFIG_EXPAND if ! echo "" | expand then # Remove what is likely a symlink to busybox before trying to overwrite # file because: # # 1) We get errors through trying to write to a read-only filesystem # 2) If the filesystem were read-write, we would overwrite the busybox binary [ -f expand ] && rm expand # Fake out expand(1) in the cheapest way possible echo -e "#!/bin/sh\ncat" > expand chmod +x expand fi # Fix the broken objdump link: https://github.com/openbmc/openbmc/issues/2878 ln -sf arm-openbmc-linux-gnueabi-objdump objdump popd # perf-config(1) is terrible and won't write your configuration unless the # configuration file exists touch \${HOME}/.perfconfig # Disable writing junk to \${HOME}, otherwise we fill up the RW volume and # cause systemic failures. LD_LIBRARY_PATH=/usr/local/lib /usr/local/bin/perf config --user buildid.dir=/dev/null # Deal with latencytop's missing shared object dependency on ncurses, tracked by # https://github.com/openbmc/openbmc/issues/2430 pushd /usr/local/lib if [ -f /tmp/libncurses.so.5.9 -o -f /tmp/libncursesw.so.5.9 ] then cp /tmp/libncurses.so.5.9 /tmp/libncursesw.so.5.9 . ln -sf libncurses.so.5.9 libncurses.so.5 ln -sf libncurses.so.5.9 libncurses.so ln -sf libncursesw.so.5.9 libncursesw.so.5 ln -sf libncursesw.so.5.9 libncursesw.so fi popd EOF echo echo Make sure to run the following in your shell: echo echo export LD_LIBRARY_PATH=/usr/local/lib PYTHONPATH=/usr/local/lib/python2.7 echo