Сборка Jenkins для Android не удалась - не могу собрать libwebviewchromium.so

Нужен небольшой совет или идея.

Я пытаюсь собрать Android 5.1.1 Lollipop с Дженкинс. Но он не может построить libwebviewchromium.so:

...
out/target/product/generic/obj/GYP/shared_intermediates/blink/bindings/core/v8/V8SVGNumber.cpp:55: error: undefined reference to 'blink::SVGNumberTearOff::setValue(float, blink::ExceptionState&)'
out/target/product/generic/obj/STATIC_LIBRARIES/third_party_WebKit_Source_core_webcore_generated_gyp_intermediates/SVGElementFactory.cpp:383: error: undefined reference to 'blink::SVGMetadataElement::create(blink::Document&)'
external/chromium_org/third_party/WebKit/Source/core/svg/SVGNumberTearOff.h:45: error: undefined reference to 'blink::SVGNumberTearOff::SVGNumberTearOff(WTF::PassRefPtr<blink::SVGNumber>, blink::SVGElement*, blink::PropertyIsAnimValType, blink::QualifiedName const&)'
collect2: error: ld returned 1 exit status
make: *** [out/target/product/generic/obj/SHARED_LIBRARIES/libwebviewchromium_intermediates/LINKED/libwebviewchromium.so] Error 1

В то же время, когда я пытаюсь собрать его вручную, это удается:

. build/envsetup.sh
set_stuff_for_environment
lunch zh2_qemu_eng
make clean
make -j24

Интересно, как получается, что одна и та же операция может быть успешной при использовании консоли и неудачной при использовании Jenkins. Не могли бы вы поделиться своими идеями со мной?

PS Машина для сборки имеет 24 ГБ ОЗУ и файл подкачки 15 ГБ, а также флэш-диск на 512 ГБ (доступно 62%). Операционная система Ubuntu 14.04LTS, 64-разрядная.

$ free -m
             total       used       free     shared    buffers     cached
Mem:         24021      22079       1942         75       4778       8768
-/+ buffers/cache:       8532      15488
Swap:        16036        345      15691

4 ответа

Решение

Проблема решена. Мы скопировали настройку Jenkins/AOSP с другого сервера, и что-то не так с копией. Очистка ccache решила проблему. После выполнения команды "ccache -c" все работало нормально.

Интересно, как получается, что одна и та же операция может быть успешной при использовании консоли и неудачной при использовании Jenkins.

Поскольку Jenkins может не работать с одним и тем же пользователем (или на одной рабочей станции, если агент, выполняющий задание, является отдельной машиной)

Дважды проверьте, есть ли различия между переменными среды:

Например, LD_LIBRARY_PATH Разница может объяснить несоответствие между двумя сборками.

Убедитесь, что у вас есть все заголовочные файлы и библиотеки, связанные во время компиляции. Неопределенные ссылочные ошибки в основном возникают из-за этих двух причин.

Пользователь jenkins имеет свой ~/.bashrc, который может не иметь переменных среды.

временно включить логин для jenkins, настройте среду, затем отключите ее снова.

когда можно вручную создать как пользователь jenkinsОн также должен быть построен при автоматизации.

Другие вопросы по тегам