8

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
4

4 回答 4

5

我想知道为什么在使用控制台时相同的操作会成功,而在使用 Jenkins 时会失败。

因为 Jenkins 可能不会在同一个用户下运行(或者在同一个工作站上,如果执行作业的代理是单独的机器)

仔细检查以下之间是否存在任何环境变量差异:

  • 您的命令行,您可以在其中成功运行命令(env在命令后键入)
  • 您可以看到与您的(失败的)工作相关的环境变量

例如,LD_LIBRARY_PATH差异可以解释两个构建之间的差异。

于 2018-12-27T11:31:13.843 回答
3

确保在编译时包含所有头文件链接的库未定义的引用错误主要是由于这两个原因引起的。

于 2019-01-03T04:53:54.180 回答
2

userjenkins有它自己的~/.bashrc,它可能缺少环境变量。

暂时启用登录shell jenkins,设置环境,然后再次禁用它。

当能够以用户身份手动构建jenkins时,它也应该在自动化时构建。

于 2018-12-27T11:31:32.520 回答
1

问题已经解决了。我们从另一台服务器复制了 Jenkins/AOSP 设置,但副本有问题。ccache 的清理解决了这个问题。执行“ccache -c”命令后,一切正常。

于 2019-01-18T12:27:09.717 回答