Vladimir Lindemann
Vladimir Lindemann

Reputation: 91

Jenkins Android build fails - can't build libwebviewchromium.so

A bit of advice or idea is needed.

I am trying to build Android 5.1.1 Lollipop with Jenkins. But it fails to build 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

At the same time, when I try to build it manually, it succeeds:

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

I wonder how it comes that the same operation can be successful when using a console and fail when using Jenkins. Could you please share your ideas with me?

P.S. The build machine has 24GB of RAM and 15GB swap file, and a 512 GB SSD flash disk (62% available). The OS is 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

Upvotes: 8

Views: 439

Answers (4)

Vladimir Lindemann
Vladimir Lindemann

Reputation: 91

The problem is solved. We copied the Jenkins/AOSP setup from another server, and something was wrong with the copy. The cleanup of the ccache solved the problem. After performing "ccache -c" command, everything worked fine.

Upvotes: 1

borngeek
borngeek

Reputation: 77

Make sure you have all the header files included and libraries linked at the time of compilation. Undefined Reference errors primarily arise due to these two reasons.

Upvotes: 3

Martin Zeitler
Martin Zeitler

Reputation: 76679

user jenkins has it's own ~/.bashrc, which might lack environmental variables.

temporarily enable login shell for jenkins, setup the environment, then disable it again.

when being able to manually build as user jenkins, it should also build when automated.

Upvotes: 2

VonC
VonC

Reputation: 1324537

I wonder how it comes that the same operation can be successful when using a console and fail when using Jenkins.

Because Jenkins might not run with the same user (or on the same workstation, if the agent executing the job is a separate machine)

Double-check if there are any environment variable differences between:

For instance, a LD_LIBRARY_PATH difference could explain the discrepancy between the two builds.

Upvotes: 5

Related Questions