成功编译Mesos 0.16.0后,在检查PythonFramework时运行测试失败。所有其他测试都成功通过。在
我用于构建的步骤:
./bootstrap
mkdir build
cd build
../configure CXX=g++4.7 CC=gcc-4.7
make
然后,在运行测试时
^{pr2}$结果如下:
[...]
[ RUN ] ExamplesTest.PythonFramework
../../src/tests/script.cpp:78: Failure
Failed
python_framework_test.sh exited with status 1
[ FAILED ] ExamplesTest.PythonFramework (201 ms)
[...]
环境:
OS X 10.9.1 (Mavericks)
Python 2.7.5 (default, Aug 25 2013, 00:04:04) [GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
gcc-4.7 (GCC) 4.7.3 Copyright (C) 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
如何构建适当的Mesos-Python绑定以通过此环境中的测试?
更新:
我以前的答案在mesos0.17.0中已经过时了,因为这个版本完全可以处理clang编译(Yay!)。因此,不需要再使用gcc编译它了,只需继续使用Xcode的clang(Xcode命令行实用程序)。在
如果您仍然无法使用Python绑定,请在StackOverflow或post上添加评论或新问题到Mesos邮件列表中。在
Mesos 0.16.0或更低版本:
如何修复OSX(10.9)上Mesos的Python绑定。在
通过自制安装Python 2.7.3
找出可用的版本
brew versions python
选择Python 2.7.3
cd /usr/local/Library/Formula/
git checkout 865f763 /usr/local/Library/Formula/python.rb
brew install python
请确保不要强制安装通用内部版本(32+64位),因为那样会再次导致下面解释的相同问题。默认值是64位,这很好。在
根据自定义Python安装重建Mesos
rm -rf build
rm -rf ~/.python-eggs
mkdir build
cd build
../configure CXX=g++-4.7 CC=gcc-4.7 PYTHON=/usr/local/bin/python
make
make check
现在您应该看到一个正常运行的测试,因此有一个非常好的Mesos-Python绑定:
由于要求用户安装自定义Python版本通常是错误的,但在这种情况下似乎不可避免,让我起草一份对这个问题的解释。也许其中一个读者知道更好的解决办法。在
使用详细输出设置手动执行该测试有助于确定确切的问题。在
bin/mesos-tests.sh gtest_filter="*.PythonFramework" verbose
重要的细节是,这个原生Python蛋的动态链接失败了。在
在构建mesos 0.16时,可以在本模块的
distutils
构建步骤中找到理由。Pythondistutils
直接从python-config
派生其构建设置。由于您的Python是使用clang
构建的,distutils
也将尝试使用clang
来构建您的原生鸡蛋。在问题:
distutils
构建阶段。因此,尽管Mesos本身是使用上面描述的gcc-4.7构建的,但egg是使用clang构建的。结果是libc++和stdlibc++的混搭,它们不兼容ABI。distutils
构建阶段使用相同的编译器(参见MESOS-798和MESOS-799)。当你读到这个答案的时候,这个问题很有可能已经被解决了。在distutils
确实强制使用只有clang的gcc前端支持的参数来构建通用二进制文件(i386+x86_64)。这似乎没有解决办法,因此所有动态链接的依赖关系,该蛋将不得不建立为两个架构,以及(这似乎是一个遗留下来的OSX10.6)。在homebrew
安装python2.7.3。注意:不要安装Python2.7.6(当前的自制程序默认值),因为它的autoconf developer宏存在问题(请参见MESOS-617)相关问题 更多 >
编程相关推荐