[kde-freebsd] Still updating kde4 & one utility

Chuck Robey chuckr at telenix.org
Sun Mar 15 20:22:17 CET 2009


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hit a new problem, I want to ask help again.  Also, look for the utility at the
end here, I hope some find it useful.

I'm still working on upgrading my kde4 to 4.2, without removing my old kde
because I won't remove all of my old kde, both because I don't  have any
reliable method of wiping it all out, and because I'm too stubborn to remove my
old kde until I have the new one in place.  So, all the problems I'm hitting,
their my own problems (I'm not really following the advice to wipe out all
existing kde).  Don't take these problems as any slur on the present port.

I've found/fixed 3 different problems so far, all 3 of them library leftovers
from previous versions of kde, and (it seems, at least) that the new version of
kde may have switched the directory that all of the libs go into, causing
softlinks that weren't specified with full paths to go bad.  I *think* this is
it, but because I haven't really kept my machine squeaky clean (what I used to
think of as ports-clean) I can't really be sure (I couldn't go back and check
this), so I can't really report these as definite errors.

What fueled all of my repairs was the very helpful hint about bsd.cmake.mk,
which led me towards CMAKE_VERBOSE.  Without that, I couldn't have done squat,
but at least, I haven't leaned on you folks for every single thing.  Also, doing
these fixes has been fun, I'm not complaining, I hope (Yeah, I really do like
this stuff).

Anyhow, I've finally hit one that I can't fix this way.  There's a lib named
libnepomuk,so.7.0.1, installed by kdelibs4.  It has a symbol named "qHash(QUrl
const&)", and libnepomuk has only the UND version of the symbol.  I can't find
the TXT version (the code) anywhere at all, and I've really tried hard on this,
searching every single lib in kdelibs, and every one in /usr/local/lib &
/usr/local/lib/qt4, and /usr/local/kde4/lib (yeah, they flop naming order that
way, check it).  I also checked every lib named in the list inside the
libnepomuk.so.7.0.1.

In case you're curious, yes, I reinstalled kdelibs, but the libnepomuk that gets
installed has this same missing symbol, so it's relying on a different lib,
which I can't find so far.

If you have any suggestions about where I might find that symbol, I'd REALLY
appreciate the help.  I'll do any looking required, but I need a hint (like that
one to bsd.cmake.mk).

One last item: in doing all that endless searching for symbols in libraries, I
made up a little script which hunted down libs in a parent dir you give, and
yielded up a list of every lib found that had (optionally) one or two different
grep patterns inside it.  I used it like:

greplib /usr/local/lib qHash QUrl

and it very quickly gives me what I'm after.  I hope maybe some might find it
useful, it has a usage() kicked off if you give it either zero or only one
parameter, output to stdout.  I think that there's some mail security feature
that blocks attachments, and it's not too terribly large, so I'm pasting it on
the end here:

*************** greplib  ******************
#!/bin/sh
# #1 is targetdir, #2 is first symbol, #3 is 2nd symbol (optional)
basedir=`pwd`

#functions here
help ()
{
        echo "usage: $0 targetdir outputfile 1st-symbol 2nd-symbol (optional)"
}

# end of functions, begin real code

flist=`find $1 -type f -name lib\*.so\*`
if [ $# -le 1 ]
then
        help
        exit 0
elif [ $# -eq 2 ]
then
        for sfile in ${flist}
        do
                lout=`/usr/bin/objdump -T ${sfile} | grep $2 | /usr/bin/c++filt`
> /dev/null
                if [ -n "${lout}" ]
                then
                        echo "symbol found, file ${sfile}, output = ${lout}"
                fi
                done
elif [ $# -eq 3 ]
then
        echo "have 3 args"
        for sfile in ${flist}
        do
                lout=`/usr/bin/objdump -T ${sfile} | grep $2 |grep $3 |
/usr/bin/c++filt` > /dev/null
                if [ -n "${lout}" ]
                then
                        echo "symbol found, file ${sfile}, output = ${lout}"
                fi
                done
elif [ $# -ge 4 ]
then
        echo "$0: too many parameters ($#)"
        help
fi
exit 0
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (FreeBSD)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkm9VWkACgkQz62J6PPcoOnBMwCgkIezFKqgvVJGG446hhEI6Aj9
V9sAoIFQA0lJ63MM5DHQ4lQNPVt48xuM
=wz81
-----END PGP SIGNATURE-----


More information about the kde-freebsd mailing list