2015-02-23 71 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文件,這就是文件格式錯誤的原因。