wake-up-neo.com

Jenkins Android Build schlägt fehl - Libwebviewchromium.so kann nicht erstellt werden

Ein bisschen Rat oder Idee ist nötig.

Ich versuche, Android 5.1.1 Lollipop mit Jenkins zu erstellen. Libwebviewchromium.so kann jedoch nicht erstellt werden:

...
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

Wenn ich versuche, es manuell zu erstellen, ist es erfolgreich:

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

Ich frage mich, wie es kommt, dass derselbe Vorgang bei Verwendung einer Konsole erfolgreich sein kann und bei der Verwendung von Jenkins fehlschlägt. Könnten Sie mir bitte Ihre Ideen mitteilen?

P.S. Die Build-Maschine verfügt über 24 GB RAM und 15 GB Auslagerungsdatei sowie eine 512-GB-SSD-Flash-Disk (62% verfügbar). Das Betriebssystem ist Ubuntu 14.04LTS, 64 Bit.

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

Das Problem ist behoben. Wir haben das Jenkins/AOSP-Setup von einem anderen Server kopiert, und die Kopie war falsch. Nachdem der Befehl "ccache -c" ausgeführt wurde, funktionierte alles einwandfrei.

1

Ich frage mich, wie es kommt, dass derselbe Vorgang bei Verwendung einer Konsole erfolgreich sein kann und bei der Verwendung von Jenkins fehlschlägt.

Da Jenkins möglicherweise nicht mit demselben Benutzer (oder auf derselben Workstation ausgeführt wird, wenn der Agent, der den Job ausführt, eine separate Maschine ist)

Prüfen Sie, ob Unterschiede in der Umgebungsvariablen bestehen.

Beispielsweise könnte ein Unterschied von LD_LIBRARY_PATH die Diskrepanz zwischen den beiden Builds erklären.

5
VonC

Stellen Sie sicher, dass alle Header-Dateien enthalten sind und Bibliotheken zum Zeitpunkt der Kompilierung. Undefined Reference -Fehler treten hauptsächlich aus diesen beiden Gründen auf.

3
borngeek

benutzer jenkins hat einen eigenen ~/.bashrc, der Umgebungsvariablen fehlen kann.

aktivieren Sie vorübergehend die Login-Shell für jenkins, richten Sie die Umgebung ein und deaktivieren Sie sie erneut.

wenn Sie als Benutzer jenkins manuell erstellen können, sollte es auch automatisch erstellt werden.

2
Martin Zeitler