libintl removal and a spurious libgcc
Greetings -- when trying to build glib2, I've stumbled upon the libintl issue, which I've fixed according to http://trac.macosforge.org/projects/macports/wiki/ProblemHotlist The only speed-up I did was as follows: joined all port names with spaces and ran single command like sudo port uninstall -f atk findutils gawk gettext glib2 gmake gnupg gnutar gnutls gsed libgcrypt neon opencdk subversion subversion- perlbindings texinfo wget whois Then I did port clean --archive <same long line with all port names>, worked fine, too. Then I tried to install them anew with port install -f <same long line> (*) -- and fun started, gettext wanted to get installed again after a few ports, said it can't and halted the sequence. I've just cut off the prefix of the port list and hit enter, and did this until it all had run through. Seemed OK. Unfortunately, I got a problem with iconv when I tried it recently, and I've realized I might have another issue. I got GNAT, a GCC with Ada in it, for Mac from macada,org. It installs into /usr/local/ ada-4.3/, which I symlinked to /usr/local/ada/. I might have left / usr/local/ada/bin/ on the path in the shell where I did the port rebuilds -- I'm no longer sure. The strange thing is, the error I get is /data/bruc/1/1g/unig iconv -f cp1251 -t utf8 < from > to dyld: Library not loaded: /usr/local/ada/lib/libgcc_s.1.0.dylib Referenced from: /usr/local/lib/libiconv.2.dylib Reason: image not found zsh: trace trap iconv -f cp1251 -t utf8 < from > to There's no ibgcc_s.1.0.dylib in /usr/local/ada/lib/ at all! There are /usr/local/ada/lib ls libgcc* libgcc_s.1.dylib libgcc_s.10.4.dylib libgcc_s.10.5.dylib libgcc_s_ppc64.1.dylib libgcc_s_x86_64.1.dylib Questions: -- for the list of ports such as those given by depsearch.sh in ProblemHotlist, how can we see which of them depend on anything from / usr/local/ada/lib/ ? Did it happen due to /usr/local/ada/bin/gcc on the PATH, or somehow else -- and why the non-existent 1.0 dylib? -- should I rebuild those? -- if I rebuild, is it OK to put all names on the line -- then how do I prevent intermediate choking as in (*)? Cheers, Alexy
On Nov 21, 2007, at 04:24, Alexy Khrabrov wrote:
Greetings -- when trying to build glib2, I've stumbled upon the libintl issue, which I've fixed according to
http://trac.macosforge.org/projects/macports/wiki/ProblemHotlist
To be clear: it's not a libintl issue; it's an issue of any software installing a binary-incompatible newer version, and other ports that depend on that software having to be rebuilt, and MacPorts not having any built-in facility for doing so.
The only speed-up I did was as follows: joined all port names with spaces and ran single command like
sudo port uninstall -f atk findutils gawk gettext glib2 gmake gnupg gnutar gnutls gsed libgcrypt neon opencdk subversion subversion- perlbindings texinfo wget whois
Then I did port clean --archive <same long line with all port names>, worked fine, too.
Then I tried to install them anew with
port install -f <same long line>
(*) -- and fun started, gettext wanted to get installed again after a few ports, said it can't and halted the sequence. I've just cut off the prefix of the port list and hit enter, and did this until it all had run through. Seemed OK.
"port -f install" is not recommended. Please see this ticket: http://trac.macports.org/projects/macports/ticket/12989 -f tells install (and upgrade) to forcibly rebuild all the dependencies, each time they're encountered, which could be many many times. You don't want this. There's no need in your case to force the install. It'll go just fine without forcing.
Unfortunately, I got a problem with iconv when I tried it recently, and I've realized I might have another issue. I got GNAT, a GCC with Ada in it, for Mac from macada,org. It installs into /usr/ local/ada-4.3/, which I symlinked to /usr/local/ada/. I might have left /usr/local/ada/bin/ on the path in the shell where I did the port rebuilds -- I'm no longer sure. The strange thing is, the error I get is
/data/bruc/1/1g/unig iconv -f cp1251 -t utf8 < from > to dyld: Library not loaded: /usr/local/ada/lib/libgcc_s.1.0.dylib Referenced from: /usr/local/lib/libiconv.2.dylib Reason: image not found zsh: trace trap iconv -f cp1251 -t utf8 < from > to
There's no ibgcc_s.1.0.dylib in /usr/local/ada/lib/ at all! There are
So you have a broken libiconv in /usr/local/lib.
/usr/local/ada/lib ls libgcc* libgcc_s.1.dylib libgcc_s.10.4.dylib libgcc_s.10.5.dylib libgcc_s_ppc64.1.dylib libgcc_s_x86_64.1.dylib
Questions:
-- for the list of ports such as those given by depsearch.sh in ProblemHotlist, how can we see which of them depend on anything from /usr/local/ada/lib/ ? Did it happen due to /usr/local/ada/bin/ gcc on the PATH, or somehow else -- and why the non-existent 1.0 dylib?
-- should I rebuild those? -- if I rebuild, is it OK to put all names on the line -- then how do I prevent intermediate choking as in (*)?
You had a broken libiconv library directly in /usr/local and most software looks in /usr/local for dependencies when building. We have not yet found a satisfactory way to prevent software from doing this. Therefore, I recommend you do not have any software directly in /usr/ local if you want to use MacPorts. (/usr/local/anything is fine, so / usr/local/ada is not a problem.) Make a new directory /usr/local-off and move all the standard directories (bin, etc, include, lib, libexec, man, sbin, share, var) out of /usr/local and into /usr/local-off. Now any software in MacPorts that was built against those rogue libraries should start breaking. When it does, rebuild that software, using: sudo port -ncuf upgrade foo You can also use "otool -L" against any of the libraries and binaries in /opt/local and see if anything in /usr/local shows up. If it does, rebuild the port that installed that library or binary. To find out what port that is, say e.g. "port provides /opt/local/lib/foo. 1.2.3.dylib"
participants (2)
-
Alexy Khrabrov
-
Ryan Schmidt