| #!/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 |