On 2020-Feb-22, at 09:29, Stefan Eßer <[email protected]> wrote:
> Am 22.02.20 um 03:50 schrieb Mark Millard via freebsd-ports: >> >> >> . . . >> >> In the style of my prior examples (including the change that >> found libedit and such), analogous would be: >> >> # find /usr/local/*bin* /usr/local/lib* -type f \ >> | xargs -n1 file -F ' ' | grep 'ELF' | cut -f1 -d' ' \ >> | xargs ldd -f '%A %p\n' 2>&1 | grep ncurses\.so\.8 | cut -f1 -d' ' \ >> | xargs pkg which | cut -f6 -d' ' | sort -u | more >> bison-3.5.2,1 >> gdbm-1.18.1_1 >> gettext-tools-0.20.1_1 >> gnuplot-5.2.8 >> libedit-3.1.20191211,1 >> libtextstyle-0.20.1 >> llvm10-10.0.0.r2 >> llvm80-8.0.1_3 >> lua52-5.2.4 >> mesa-dri-18.3.2_9 >> ruby-2.6.5,1 >> sqlite3-3.30.1,1 >> xterm-353_1 >> >> Looks like I'll be reasonably ready when I get to the point >> of wanting to deal with this. > > While technically correct, the extra test for the ELF format of each > single file is not required for correct results, AFAICT. > > The ldd command will just emit an error message for files it cannot > process, and the error output is trivially suppressed. > > > The following pipeline should only need a fraction of the time required > by the one suggested above: > > # find /usr/local/*bin* /usr/local/lib* -type f \ > | xargs ldd -f '%o %A\n' 2>/dev/null \ > | grep ^libncurses\.so\.8 | cut -w -f2 \ > | xargs pkg which -q | sort -u | more > > It completes in 13 seconds on my system, and I plan to add it to > portmaster as another option to select the ports to be updated. > > The test of each file for ELF format requires one invocation of the > file command for each, which leads to 217 seconds real time (178 user, > 39 system) for me - so my version is faster by a factor of at least 15. > Nice. I executed my example in a chroot that does not by default have /dev/null present. That is why I avoided that specific alternative. There is also /lib/libncursesw.so.8 that I'd forgotten. So, for my context, . . . # find /usr/local/*bin* /usr/local/lib* -type f \ | xargs ldd -f '%p %A\n' 2>&1 | grep "^/lib/libncurses[^ ]*\.so\.8" | cut -w -f2 \ | xargs pkg which -q | sort -u | more bison-3.5.2,1 dialog4ports-0.1.6 gdb-8.3.1 gdbm-1.18.1_1 gettext-tools-0.20.1_1 gnuplot-5.2.8 libedit-3.1.20191211,1 libtextstyle-0.20.1 llvm10-10.0.0.r2 llvm80-8.0.1_3 lua52-5.2.4 mesa-dri-18.3.2_9 python37-3.7.6 readline-8.0.1 ruby-2.6.5,1 spidermonkey60-60.9.0_1 sqlite3-3.30.1,1 texinfo-6.7_1,1 xterm-353_1 That picked up dialog4ports and other items. === Mark Millard marklmi at yahoo.com ( dsl-only.net went away in early 2018-Mar) _______________________________________________ [email protected] mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-ports To unsubscribe, send any mail to "[email protected]"
