Somewhere between r357572 and r358062 something changed so dramatically in base/head that sysutils/htop didn’t display anything useful other than CPU and memory usage.

It’s possibly due to r358062 which is a huge update of ncurses.

Exhibit A:

sysutils/htop after upgrading to base/head r358062 but before recompiling

sysutils/htop after upgrading to base/head r358062 but before recompiling

Forcefully recompile and forcefully reinstall sysutils/htop, and we’re back in business!

Exhibit B:

sysutils/htop after upgrading to base/head r358062 and after recompiling

sysutils/htop after upgrading to base/head r358062 and after recompiling

As it turns out, all ports linked to ncurses from base must be recompiled and reinstalled.

Here’s a small script for detecting which packages need updating.

#!/bin/sh

if [ "${1}" = phase1 ]; then
  p='libncurses\.so\.8|libncursesw\.so\.8'

  for e in /usr/local/*bin/*; do
    ldd ${e} 2>/dev/null | \
      egrep -q ${p} && \
      pkg which -q ${e}
  done

  for l in /usr/local/lib/lib*.so.*; do
    objdump -x ${l} 2>/dev/null | \
      egrep -q ${p} && \
      pkg which -q ${l}
  done
else
  ${0} phase1 | \
    sort -u
fi

# EOF

I made extra copies of libncurses.so.8 and libncursesw.so.8 and placed them in /usr/lib/compat. This is handy for getting the installed software running after a reboot. Remember to remove these two libraries from /usr/lib/compat before recompiling the affected ports. I specifically created the directory /usr/lib-compat for preserving legacy libraries out of reach of ld.so(1).

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>