Date: Wed, 11 Feb 2015 17:37:21 +0000 From: bugzilla-noreply@freebsd.org To: freebsd-ports-bugs@FreeBSD.org Subject: [Bug 197542] find-lib.sh doesn't find library Message-ID: <bug-197542-13@https.bugs.freebsd.org/bugzilla/>
next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=197542 Bug ID: 197542 Summary: find-lib.sh doesn't find library Product: Ports & Packages Version: Latest Hardware: Any OS: Any Status: New Severity: Affects Only Me Priority: --- Component: Ports Framework Assignee: freebsd-ports-bugs@FreeBSD.org Reporter: cgreen@sentex.ca CC: portmgr@FreeBSD.org When installing gettext-tools, I get the following: ===> Patching for gettext-tools-0.19.4 ===> Applying FreeBSD patches for gettext-tools-0.19.4 ===> gettext-tools-0.19.4 depends on shared library: libexpat.so - found (/usr/local/lib/libexpat.so.1.6.0) ===> gettext-tools-0.19.4 depends on shared library: libintl.so - found (/usr/local/lib/libintl.so.8.1.3) ===> gettext-tools-0.19.4 depends on shared library: libiconv.so.3 - not found libiconv.so.3 is not found. However, the package is installed: cgreen:Smtp1:/usr/local/lib# pkg info libiconv libiconv-1.14_6 Name : libiconv Version : 1.14_6 Installed on : Wed Feb 11 11:45:01 EST 2015 Origin : converters/libiconv And the files are present in /usr/local/lib: cgreen:Smtp1:/usr/local/lib# ll /usr/local/lib/libicon* -rw-r--r-- 1 root wheel 1117168 Feb 11 11:44 /usr/local/lib/libiconv.a lrwxr-xr-x 1 root wheel 17 Feb 11 11:44 /usr/local/lib/libiconv.so@ -> libiconv.so.2.5.1 lrwxr-xr-x 1 root wheel 17 Feb 11 11:44 /usr/local/lib/libiconv.so.2@ -> libiconv.so.2.5.1 -rw-r--r-- 1 root wheel 1089102 Feb 11 11:44 /usr/local/lib/libiconv.so.2.5.1 lrwxr-xr-x 1 root wheel 13 Feb 11 11:45 /usr/local/lib/libiconv.so.3@ -> libiconv.so.2 Therein lies the problem. Gettext requires libiconv.so.3, which is a symlink. /usr/ports/Mk/bsd.port.mk calls /usr/ports/Mk/Scripts/find-lib.sh to find the absolute path to the library. find-lib.sh has a routine to resolve symlinks, but it fails (after setting the appropriate env vars): cgreen:Smtp1:/usr/local/lib# sh /usr/ports/Mk/Scripts/find-lib.sh libiconv.so.3 cgreen:Smtp1:/usr/local/lib# It's failing because while the libiconv.so.3 symlink is resolved to /usr/local/lib/libiconv.so.2, libiconv.so.2 is, as above, another symlink. The resolved file /usr/local/lib/libiconv.so.2 is passed to "file -b -L --mime-type" which dutifully reports it as a symlink and not the x-sharedlib find-lib.sh is looking for, and find-lib exits unsuccessfully. If you pass find-lib.sh libivonv.so.2 instead, it works as intended: cgreen:Smtp1:/usr/local/lib# sh /usr/ports/Mk/Scripts/find-lib.sh libiconv.so.2 /usr/local/lib/libiconv.so.2.5.1 However, the double-symlink that libiconv installs (.so.3 -> .so.2 -> .so.2.5.1) trips up find-lib.sh. While the issue can be fixed by having libiconv link .so.3 directly to .so.2.5.1 (my current workaround), I have no idea how many other ports may use a double-symlink, so I'm guessing fixing the find-lib.sh tool to watch for double-symlinks (or more levels or redirection?) would likely be easiest. -- You are receiving this mail because: You are the assignee for the bug.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-197542-13>