在Fedora 20上构建Blender,由于LLVM/Clang(不匹配)问题,OSL编译失败

在Fedora 20上构建Blender,由于LLVM/Clang(不匹配)问题,OSL编译失败,clang,llvm,blender,Clang,Llvm,Blender,从git获取当前Blender master并运行/Blender/build\u files/build\u environment/install\u deps.sh在我的Fedora 20系统上运行正常,直到出现Open Shading Language编译,失败并出现以下错误: /opt/lib/llvm-3.3/bin/llvm-as: /home/simonrepp/src/blender-deps/OpenShadingLanguage-1.4.0/build/src/libosl

从git获取当前Blender master并运行
/Blender/build\u files/build\u environment/install\u deps.sh
在我的Fedora 20系统上运行正常,直到出现Open Shading Language编译,失败并出现以下错误:

/opt/lib/llvm-3.3/bin/llvm-as: /home/simonrepp/src/blender-deps/OpenShadingLanguage-1.4.0/build/src/liboslexec/llvm_ops.s:112:59: error: invalid use of function-only attribute
define void @osl_sin_dfdf(i8* nocapture %r, i8* nocapture readonly %a) #2 {
调查结果表明,安装程序设置的本地
llvm(3.3)
版本与全局安装的
clang(3.4)
版本不匹配。因此,我试图明确地告诉安装程序使用
llvm 3.4
-
/blender/build\u files/build\u environment/install\u deps.sh--ver llvm=3.4
,这一次导致了另一个错误:

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
LLVM_MCJIT_LIBRARY
    linked by target "oslexec" in directory /home/simonrepp/src/blender-deps/OpenShadingLanguage-1.4.0/src/liboslexec 
我找不到对此的解释,也没有自己设计出一个有效的解决方案,所以我选择了另一种方法,降级并将全局
llvm
clangg
包锁定到
3.3
,这次明确告诉安装程序使用
llvm(3.3)
-
/blender/build\u files/build\u environment/install\u deps.sh--ver llvm=3.3
-这一次由于无法将版本锁定的软件包升级到
3.4
,导致安装程序中止。。。啊


因此,现在我或多或少陷入了困境,正在寻找一个现成的解决方案,或者寻找一个了解
LLVM\u MCJIT\u库
内容的人,以及如何处理它的人?

更新:这里描述的依赖项安装程序脚本中的错误已经得到了修复():)

好的,所以我尝试删除我系统上全局安装的
llvm
clang
软件包,然后再次运行安装程序,由于任何
clang
都不可用而导致失败,这引起了我的注意,因为在安装程序控制台中,它在某处说
llvm(包括clang!)
,那叮当声在哪里?我发现安装程序在编译之前下载的.tar.gz(
src/blender-deps/CLANG-3.3.tar.gz
)是空的-0字节,深入研究
install\u-deps.sh
发现
LLVM\u-CLANG\u SOURCE=”http://llvm.org/releases/$LLVM_VERSION/clang-$LLVM_VERSION.src.tar.gz“
,翻译为的是指不正确的下载URL

CLANG 3.3源代码的正确URL是,因此我手动下载了它,将其重命名为并替换为
src/blender deps/CLANG-3.3.tar.gz
,在另一次安装失败后,安装程序也进入tarball并将其中的文件夹从
cfe-3.3.src
重命名为
CLANG-3.3.src
。。。从那以后:成功


每个构建这样的源代码的人,如果没有一个全球安装的兼容的
clang
,都应该面临这个问题(因为其他人的下载URL也被破坏了),我有点惊讶我没有在这上面找到任何其他东西。嗯。案例已结束。

clang必须与llvm相同或更新。就我个人而言,我还没有幸使用llvm3.4构建OSL。在osl build dir中运行ccmake(或cmakegui),并检查LLVM_CONFIG是否设置为llvm3.3安装的LLVM CONFIG。尝试手动将LLVM_MCJIT_LIBRARY设置为libLLVMMCJIT.a的完整路径-它应该与其他LLVM lib一起使用。中间坏消息:虽然这允许我构建Blender,但我发现即使是完全干净的库也会在应用程序启动时构建Segfult。现在需要调查这是否与这个“解决方案”有关……中间的坏消息并不是与这里描述的原始问题有关,而是与libyaml的一个问题有关(参见关于这个问题的讨论),我也能够解决这个问题。