OS X 10.9 Mavericks Heaven for Users (Maintenance) Hell for Developers

Things changed and compiled program broke… especially for development environment expecting to find the same old dependencies

I was modeling C++ simulation using OMNeT++ 4.3 and all in sudden after upgraded to Mavericks the IDE crash due to out of memory in Java Heap? Also some icon didn’t show up as usual in simulation GUI. Worst, the compilation doesn’t work anymore when I suspect it’s about changes in shared library.  Go to terminal and found that MacPort won’t install either… Dooms day isn’t it? Well, I’ve been expecting this the time I decided to upgrade 🙂

Here go the result from local and online research to see what’s going on.

1. All compilers (gcc, g++, clang) now based on Apple Clang 5.0 so default include header changed from libstdc++ to libc++ following LLVM decision

2. Tcl default location changed, … Thus making MacPort dead

3. Subtle changes internally for X11 that making my OMNeT simulation icon to disappeared.

4. May be a ton other changes, I don’t know, until another problem arise,  seems Eclipse and Titanium IDE and Xcode are working just fine…

Solutions:
1. Re-install latest Xcode, Xcode command line tools, Java for developer package

2. Recompile your program, normally if already ported to Clang headers, or with -stdlib=libstdc++

3. Re-install MacPort from source, (their code already tested with Clang compiler)

So far so good, I fixed all the problems mentioned above. Details to be followed

UPDATED: 15 Dec 2013

From a question in this post, I share my configure.user modification under a gist here

References:

1. https://github.com/bitcoin/bitcoin/issues/2806
2. http://libcxx.llvm.org
3. http://gcc.gnu.org/onlinedocs/libstdc++/faq.html
4. https://groups.google.com/forum/#!msg/mongodb-user/xbZzM-QMdfI/a1AF9Fv5bNQJ
5. https://bugs.launchpad.net/libmemcached/+bug/1216521
6. https://jira.mongodb.org/browse/SERVER-10644
7. https://groups.google.com/forum/#!topic/omnetpp/f5dgy_nZjnY
8. https://github.com/shigeya/omnetpp/tree/clang-mods
9. http://stackoverflow.com/questions/9345271/xcode-4-3-and-c11-include-paths
10. http://www.ghostwheel.com/merlin/Personal/notes/2013/10/05/macports-on-mavericks/
11. http://trac.macports.org/wiki/MavericksProblems
12. http://apple.stackexchange.com/questions/106189/missing-usr-bin-gnutar-on-mavericks-macports

Enhanced by Zemanta

2 thoughts on “OS X 10.9 Mavericks Heaven for Users (Maintenance) Hell for Developers”

  1. very helpful post. how do you fix the problem of “3. Subtle changes internally for X11 that making my OMNeT simulation icon to disappeared.” ?

    1. Sorry that I still have no time to update this article to its perfect, but in step 3. you need to configure OMNET build to use your own version of tcl/tk that you installed using MacPort.

      Here is what I changed in my configure.user:

      CFLAGS_DEBUG=’-stdlib=libstdc++ -g -Wall’
      CFLAGS_RELEASE=’-stdlib=libstdc++ -O2 -DNDEBUG=1′

      LDFLAGS=”-stdlib=libstdc++”

      # Below is what you may be looking for..
      TK_CFLAGS=”-I/opt/local/include”
      TK_LIBS=”-L/opt/local/lib -ltk8.6 -ltcl8.6″

      then you build OMNET again using:

      ./configure
      make clean
      make -j2

      (-j2 option is just to utilize multi-core)

      Hope that helps you. There seems to be recent update from Apple in Maverick’s X11 just a few days ago, I am not sure whether it related or not since I already fixed mine.

      Are you working on OMNET++ too? Would love to hear what kind of project/research you are working on.

Leave a Reply