2015-02-23 72 views
1

https://travis-ci.org/mmmries/sqlitex/builds/51889563#L96编译C扩展在特拉维斯CI药剂构建

我试图建立特拉维斯CI整合为我的sqlite的药剂项目。当尝试编译属于esqlite依赖关系一部分的C扩展时,该编译目前失败。错误信息回来

c_src/esqlite3_nif.o: file not recognized: File format not recognized 

所以编译错误发生在我不太了解的钢筋层。我还没有能够复制特拉维斯以外的这个构建错误,所以我不确定接下来要看哪里。

+1

我会开始关注Travis-CI上的gcc版本。接下来,我会研究你的钢筋版本和esqlite上使用的版本。鉴于他们使用travis,它在某些条件下工作。也许如果你在安装依赖之前做了“mix local.rebar”,它可能会使用与你本地版本相同的版本。 – 2015-02-24 08:02:02

+0

海湾合作委员会版本是相同的版本[作为esqlite的构建](https://travis-ci.org/mmzeeman/esqlite/jobs/49109236#L15)。我也尝试在编译之前使用'mix local.rebar --force'作为额外的安装步骤,没有运气 – mmmries 2015-02-25 03:56:19

+1

Ohhhhh,看起来问题在于我如何发布esqlite hex软件包。 tar文件包括已经编译好的esqlite3_nif.o(在OSX机器上),这就是为什么当我尝试在另一台OSX机器上安装和编译时它工作正常的原因,但它在travis正在使用的ubuntu映像上失败。 任何人都可以指向我一些关于如何正确发布应该在客户端机器上编译的螺纹钢项目的十六进制包的文档? – mmmries 2015-02-25 03:58:10

回答

1

构建现在正常工作:https://travis-ci.org/mmmries/sqlitex/builds/52085658

的问题是,我的上游搞砸esqlite依赖。我发布了一个rebar项目到hex.pm的副本,所以我可以指定它作为依赖项,但我不小心将编译后的“c_src/*。o”文件包含在十六进制包中,但这些文件应该在客户端本地编译机。

travis上的Ubuntu镜像试图使用在OSX机器上编译的现有.o文件,这就是文件格式错误的原因。