Cannot build Mozart 2 on Mac OS X 10.9.5
Opened this issue · 14 comments
Any attempt to "brew install --HEAD mozart2" ends up with an error. The last part of the process gives the following messages:
make: *** [all] Error 2
==> Formula
Tap: eregon/homebrew-mozart2
Path: /usr/local/Library/Taps/eregon/homebrew-mozart2/mozart2.rb
==> Configuration
HOMEBREW_VERSION: 0.9.5
HEAD: 5057268a16cce60b3c33dc88fb654978cf7fea30
CPU: quad-core 64-bit haswell
OS X: 10.9.5-x86_64
Xcode: 6.0.1
CLT: 6.0.0.0.1.1410400753
MacPorts/Fink: /opt/local/bin/port
X11: 2.7.7 => /opt/X11
==> ENV
HOMEBREW_CC: clang
HOMEBREW_CXX: clang++
MAKEFLAGS: -j4
CMAKE_PREFIX_PATH: /usr/local/opt/llvm_for_mozart2:/usr/local
CMAKE_INCLUDE_PATH: /usr/include/libxml2:/opt/X11/include:/opt/X11/include/freetype2:/System/Library/Frameworks/OpenGL.framework/Versions/Current/Headers
CMAKE_LIBRARY_PATH: /opt/X11/lib:/System/Library/Frameworks/OpenGL.framework/Versions/Current/Libraries
PKG_CONFIG_LIBDIR: /usr/lib/pkgconfig:/usr/local/Library/ENV/pkgconfig/10.9:/opt/X11/lib/pkgconfig:/opt/X11/share/pkgconfig
ACLOCAL_PATH: /usr/local/share/aclocal:/opt/X11/share/aclocal
PATH: /usr/local/Library/ENV/4.3:/usr/local/opt/cmake/bin:/usr/local/opt/emacs/bin:/usr/local/opt/llvm_for_mozart2/bin:/usr/local/opt/git/bin:/opt/X11/bin:/usr/bin:/bin:/usr/sbin:/sbin
Error: mozart2 HEAD did not build
Logs:
/Users/joansanchezsabe/Library/Logs/Homebrew/mozart2/01.cmake
/Users/joansanchezsabe/Library/Logs/Homebrew/mozart2/02.make
The last part of 02.make file is:
cd /tmp/mozart2-fys0Oi/bootcompiler && /usr/local/Cellar/cmake/3.0.2/bin/cmake -E copy /tmp/mozart2-fys0Oi/bootcompiler/target/scala-2.11/bootcompiler_2.11-2.0-SNAPSHOT-one-jar.jar /tmp/mozart2-fys0Oi/build/bootcompiler/bootcompiler.jar
/usr/local/Cellar/cmake/3.0.2/bin/cmake -E cmake_progress_report /tmp/mozart2-fys0Oi/build/CMakeFiles
[ 6%] Built target bootcompiler
make: *** [all] Error 2
HOMEBREW_VERSION: 0.9.5
HEAD: 5057268a16cce60b3c33dc88fb654978cf7fea30
CPU: quad-core 64-bit haswell
OS X: 10.9.5-x86_64
Xcode: 6.0.1
CLT: 6.0.0.0.1.1410400753
MacPorts/Fink: /opt/local/bin/port
X11: 2.7.7 => /opt/X11
@joanix I think the brew formula is not compatible with xcode 6 which is default in this version. I can have a look at it but in the mean time you can build it from sources. I am sure that way works.
Thx, I'll try
@sjrd and @kennytm In an effort to offer a more stable support for OSX across xcode updates I was thinking about using xcodebuild in the command line to build from homebrew. The main idea behind this is that xcodebuild already "knows" where standard header files are located.
I am not sure how good this is going to be but at least is promising. However, while trying to add it I found an small problem. The file
mozart2/boosthost/emulator/emulator.cc
Line 267 in 76914ec
bool isBuildSetting = appPath.string().find("emulator") != std::string::npos;
I recognize that what I propose is changing something hacky for another equally hacky thing. If you agree I could add an extra command line option to make the solution more robust. If you don't think that is needed then, can we at least replace one hacky trick by another one?
I don't have any objection.
I think they're just equally hacky (fine for me).
I am the author of the Homebrew formula and I am on 10.9.5 with Xcode 6.0.1 and the build works at me.
@joanix Could you make both logs (01.cmake and 02.make) available, for instance as a gist? Mix of Homebrew/MacPorts might confuse many tools.
@ggutierrez Indeed, the weak part is clearly the problem of the custom-built LLVM to not find system headers. Do you know a way for making xcodebuild
print the include paths?
For now I have been using clang++ -v -fshow-source-location -stdlib=libc++ -std=c++0x vm/vm/main/mozart.hh
which does print the system include paths but also an error so I am quite hesitant to automate that.
@eregon I also tried to use the homebrew formula and it failed. I will try it again to send you the log files. Regarding the way of knowing the default include directories I found this one:
clang -x c++ -v -E /dev/null
It lists the places that should be included in in the homebrew formula. However I think some parsing of the output is required as that is not the only information.
@ggutierrez Thanks, that might be a good way, parsing is quite easy in Ruby.
Notice that you will need also the C equivalent to set CAMKE_C_FLAGS properly in case it is needed.
clang -x c -v -E /dev/null
I'm having a problem with Java. I used the command "brew install --HEAD mozart2" and got this message:
"mozart2: Java 1.6 is required to install this formula.", but I already have java. I also tried reinstalling it but it didn't work. I think maybe the problem is that I have a newer Java version(1.8) and maybe there's a bug that only accepts the 1.6 version.
Could anybody help me? (:
I installed Mozart on a (virtual) PC, didn't try any further to build it on Mac. And, since then, I've bumped a couple of versions... so I have actually not tried any further and I don't know if the bug is valid. Anyhow, don't leave it open if it's just me. Thanx anyhow.
So this is not relevant for @joanix anymore.
What about the rest? Does this still happen in your Mac PCs*?
(*Macs use standard Intel Processors since around 2006)
Rather than trying to build Mozart2, one can simply install it via Homebrew cask (https://caskroom.github.io/) that uses compiled binaries to install packages:
brew tap dskecse/tap
brew cask install mozart2
For more info see https://github.com/dskecse/homebrew-tap/blob/master/Casks/mozart2.rb. Hope this helps.