Hi, I am trying to portupgrade my subversion and it keeps trying to install databases/db42 over already installed version (same version), missing the shared library dependency. Adding some debug into bsd.port.mk, I see: ===> subversion-1.8.3 depends on package: libtool>=2.4 - found set -x; set -e ; for i in libdb-4.2.so:/usr/ports/databases/db42; do lib=${i%%:*} ; dir=${i#*:} ; target="install"; depends_args=""; echo -n "===> subversion-1.8.3 depends on shared library: ${lib}" ; found=0 ; dirs="/lib /usr/lib /usr/local/lib `/bin/cat /usr/local/libdata/ldconfig/* 2>/dev/null || : `" ; for libdir in $dirs; do test -f ${libdir}/${lib} || continue; if [ -x /usr/bin/file ]; then [ `file -b -L --mime-type ${libdir}/${lib}` = "application/x-sharedlib" ] || continue ; fi ; found=1 ; echo " - found"; done ; if [ ${found} -eq 0 ]; then echo " - not found"; echo "===> Verifying for $lib in $dir"; if [ ! -d "$dir" ] ; then echo " => No directory for $lib. Skipping.."; else if [ -n "" -o -n "" ]; then subpkgfile=`(cd $dir; make $depends_args -V PKGFILE)`; subpkgname=${subpkgfile%-*} ; subpkgname=${subpkgname##*/} ; if [ -r "${subpkgfile}" -a "$target" "install" ]; then echo "===> Installing existing package ${subpkgfile}"; if [ -n "" -a ${subpkgname} = "pkg" ]; then [ -d /usr/ports/devel/subversion/work ] || /bin/mkdir -p /usr/ports/devel/subversion/work ; /usr/bin/tar xf ${subpkgfile} -C /usr/ports/devel/subversion/work -s ",/.*/,,g" "*/pkg-static" ; /usr/ports/devel/subversion/work/pkg-static add ${subpkgfile}; /bin/rm -f /usr/ports/devel/subversion/work/pkg-static; else /usr/sbin/pkg_add ${subpkgfile}; fi; elif [ -n "" -a "${target}" = "install" ]; then echo "===> subversion-1.8.3 depends on package: ${subpkgfile} - not found"; echo "===> USE_PACKAGE_DEPENDS_ONLY set - will not build from source"; exit 1; else (cd $dir; make -DINSTALLS_DEPENDS $target $depends_args) ; fi; else (cd $dir; make -DINSTALLS_DEPENDS $target $depends_args) ; fi; echo "===> Returning to build of subversion-1.8.3"; fi ; fi ; done + set -e + lib=libdb-4.2.so + dir=/usr/ports/databases/db42 + target=install + depends_args='''' + echo -n ''===> subversion-1.8.3 depends on shared library: libdb-4.2.so'' ===> subversion-1.8.3 depends on shared library: libdb-4.2.so+ found=0 + /bin/cat /usr/local/libdata/ldconfig/compat7x /usr/local/libdata/ldconfig/mysql /usr/local/libdata/ldconfig/portupgrade /usr/local/libdata/ldconfig/pth + dirs=''/lib /usr/lib /usr/local/lib /usr/local/lib/compat /usr/local/lib/mysql /usr/local/lib/compat/pkg /usr/local/lib/pth'' + test -f /lib/libdb-4.2.so + continue + test -f /usr/lib/libdb-4.2.so + continue + test -f /usr/local/lib/libdb-4.2.so + [ -x /usr/bin/file ] + file -b -L --mime-type /usr/local/lib/libdb-4.2.so + [ inode/symlink = application/x-sharedlib ] + continue + test -f /usr/local/lib/compat/libdb-4.2.so + continue + test -f /usr/local/lib/mysql/libdb-4.2.so + continue + test -f /usr/local/lib/compat/pkg/libdb-4.2.so + continue + test -f /usr/local/lib/pth/libdb-4.2.so + continue + [ 0 -eq 0 ] + echo '' - not found'' - not found + echo ''===> Verifying for libdb-4.2.so in /usr/ports/databases/db42'' ===> Verifying for libdb-4.2.so in /usr/ports/databases/db42 So, file(1) call is the culprit here. Trying to reproduce in the console: [sobomax@pioneer ~]$ file -b -L --mime-type /usr/local/lib/libdb-4.2.so inode/symlink However: [sobomax@pioneer ~]$ hexdump -C /usr/local/lib/libdb-4.2.so | head -n 20 00000000 7f 45 4c 46 02 01 01 09 00 00 00 00 00 00 00 00 |.ELF............| 00000010 03 00 3e 00 01 00 00 00 d0 40 02 00 00 00 00 00 |..>.....п@......| 00000020 40 00 00 00 00 00 00 00 b8 a6 0e 00 00 00 00 00 |@.......╦і......| 00000030 00 00 00 00 40 00 38 00 05 00 40 00 1d 00 1a 00 |....@.8...@ .....| 00000040 01 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 |................| 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000060 dc 45 0e 00 00 00 00 00 dc 45 0e 00 00 00 00 00 |эE......эE......| 00000070 00 00 20 00 00 00 00 00 01 00 00 00 06 00 00 00 |.. .............| 00000080 00 50 0e 00 00 00 00 00 00 50 2e 00 00 00 00 00 |.P.......P......| 00000090 00 50 2e 00 00 00 00 00 fc 36 00 00 00 00 00 00 |.P......Э6......| 000000a0 d8 3a 00 00 00 00 00 00 00 00 20 00 00 00 00 00 |ь:........ .....| 000000b0 02 00 00 00 06 00 00 00 e8 54 0e 00 00 00 00 00 |........ХT......| 000000c0 e8 54 2e 00 00 00 00 00 e8 54 2e 00 00 00 00 00 |ХT......ХT......| 000000d0 a0 01 00 00 00 00 00 00 a0 01 00 00 00 00 00 00 |═.......═.......| 000000e0 08 00 00 00 00 00 00 00 50 e5 74 64 04 00 00 00 |........PЕtd....| 000000f0 5c 39 0d 00 00 00 00 00 5c 39 0d 00 00 00 00 00 |\9......\9......| 00000100 5c 39 0d 00 00 00 00 00 b4 34 00 00 00 00 00 00 |\9......Є4......| 00000110 b4 34 00 00 00 00 00 00 04 00 00 00 00 00 00 00 |Є4..............| The culprit is that /usr/local/lib/libdb-4.2.so is a symlink to another symlink to another symlink etc, so that my guess is that file(1) stops at the first one. The issue can be resolved by using realpath(1), attached patch fixes it for me. [sobomax@pioneer ~]$ realpath /usr/local/lib/libdb-4.2.so /usr/local/lib/db42/libdb-4.2.so.2 [sobomax@pioneer ~]$ file -b -L --mime-type /usr/local/lib/db42/libdb-4.2.so.2 application/x-sharedlib [sobomax@pioneer ~]$ ls -l /usr/local/lib/libdb-4.2.so lrwxr-xr-x 1 root wheel 14 7 сен 21:43 /usr/local/lib/libdb-4.2.so -> libdb-4.2.so.2 I am not sure what''s the process to get bsd.port.mk adjusted these days. Should I open a PR and assign it to portmgr? -Maxim _______________________________________________ freebsd-stable@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-stable To unsubscribe, send any mail to "freebsd-stable-unsubscribe@freebsd.org"