2015-02-23 2 views
1

https://travis-ci.org/mmmries/sqlitex/builds/51889563#L96Compile C расширение Во время Travis CI эликсира Построить

Я пытаюсь настроить Travis CI интеграции для моего SQLite проекта Elixir. В настоящее время сборка не работает при попытке скомпилировать расширение C, которое является частью зависимости esqlite. Сообщение об ошибке возвращается с

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

Так ошибка компиляции происходит вниз в арматурного слоя, который я не знаю много о. Я не смог повторить эту ошибку сборки вне Travis, поэтому я не уверен, где искать дальше.

+1

Я бы начал изучать версию gcc на Travis-CI. Затем я рассмотрю вашу версию арматуры и ту, что используется на esqlite. Учитывая, что они используют travis, он работает на некоторых условиях. Может быть, если вы сделаете «mix local.rebar» перед установкой зависимостей, это сработает, поскольку оно, вероятно, будет использовать ту же версию, что и локально? –

+0

версия gcc такая же версия [как сборка для esqlite] (https://travis-ci.org/mmzeeman/esqlite/jobs/49109236#L15). Я также попытался использовать «mix local.rebar --force» в качестве дополнительного шага установки перед компиляцией без везения – mmmries

+1

Охххх, похоже, проблема связана с тем, как я опубликовал пакет esqlite hex. Файл tar содержит esqlite3_nif.o, уже скомпилированный (на машине OSX), поэтому он отлично работает, когда я пытаюсь установить и скомпилировать на другой машине OSX, но он не работает на изображении ubuntu, которое использует travis. Может ли кто-нибудь указать мне на документацию о том, как правильно опубликовать шестнадцатеричный пакет для проекта арматуры, который должен быть скомпилирован на клиентской машине? – mmmries

ответ

1

Строить теперь работает правильно: https://travis-ci.org/mmmries/sqlitex/builds/52085658

Проблема заключалась в том, что я испортил esqlite зависимость вверх по течению. Я опубликовал копию проекта арматуры на hex.pm, поэтому я мог указать его как dependnecy, но я случайно включил скомпилированные файлы «c_src/*. O» в шестнадцатеричном пакете, но эти файлы должны быть скомпилированы локально на клиенте машина.

Изображение ubuntu на travis пыталось использовать существующие файлы .o, которые были скомпилированы на компьютере OSX, поэтому формат файла был неправильным.

Смежные вопросы