svn commit: r358166 - head

Mark Millard marklmi at yahoo.com
Sat Feb 22 19:18:54 UTC 2020



On 2020-Feb-22, at 09:29, Stefan Eßer <se at freebsd.org> 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)



More information about the freebsd-ports mailing list