I was having some other problems with some ports building for the wrong CPU architecture, and I’m trying to rebuild everything as universal.
I’ve done: sudo port upgrade outdated +universal, which ran for a long time, and seemed to install a lot of stuff I didn’t need. But it didn’t fail.
Then I tried with one of the libraries I was previously having problems with:
$ sudo port install cairo +universal
Password:
---> Building libpixman
Error: Target org.macports.build returned: shell command failed (see log for details)
Log for libpixman is at: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_graphics_libpixman/libpixman/main.log
Error: Unable to upgrade port: 1
Error: Unable to execute port: upgrade libpixman failed
To report a bug, see <http://guide.macports.org/#project.tickets>
Log is here http://hpaste.org/56449
(OSX 10.6.8, Intel Core i5)
The problem is you’ve specified
+universal, so it’s trying to build for both 32 and 64 bit architectures (x86_64 and i386)…but failing in the 32 bit build
It’s failing in the 32 bit build because libpng is built for 64 bit and can’t link with the 32 bit version.
If you don’t need a universal build, remove the
+universaland the problem should go away!If you do need a universal build… well, macports should figure it out. I believe the issue is that libpixman does not declare dependencies on anything (libpng appears to be an optional dep). Macports can’t know it has to build a 32 bit version of libpng. That’s my best guess anyway.
Here is exactly your bug. Unfortunately the maintainer’s conclusion was that you should manually force recompile libpng as 32 bit. This is a crappy solution as it breaks automated universal builds up to gtk2 and beyond. The real problem is the missing dependency and that Macports can’t know to rebuild libpng without it.