首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AOSP生成挂起在生成的开始处。

AOSP生成挂起在生成的开始处。
EN

Stack Overflow用户
提问于 2014-06-28 18:30:36
回答 2查看 1.9K关注 0票数 2

我正在开发一个带有AOSP叉子的系统。直到今天,我才明白:

代码语言:javascript
运行
复制
$ time make -j8 TARGET_PRODUCT=beagleboneblack OMAPES=4.x droid showcommands
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.2.2
TARGET_PRODUCT=beagleboneblack
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
HOST_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.13.0-29-generic-x86_64-with-LinuxMint-17-qiana
HOST_BUILD_TYPE=release
BUILD_ID=JDQ39
OUT_DIR=out
============================================
^CTraceback (most recent call last):
  File "build/tools/findleaves.py", line 98, in <module>
    main(sys.argv)
  File "build/tools/findleaves.py", line 92, in main
    results = list(set(perform_find(mindepth, prune, dirlist, filename)))
  File "build/tools/findleaves.py", line 31, in perform_find

real    7m19.311s
user    0m0.236s
for root, dirs, files in os.walk(rootdir, followlinks=True):
sys 0m0.104s
  File "/usr/lib/python2.7/os.py", line 294, in walk

atilla@atilla-vaiod$     for x in walk(new_path, topdown, onerror, followlinks):
  File "/usr/lib/python2.7/os.py", line 294, in walk
    for x in walk(new_path, topdown, onerror, followlinks):
  File "/usr/lib/python2.7/os.py", line 294, in walk
    for x in walk(new_path, topdown, onerror, followlinks):

狙击(这有这么多线路)。

代码语言:javascript
运行
复制
  File "/usr/lib/python2.7/os.py", line 294, in walk
    for x in walk(new_path, topdown, onerror, followlinks):
  File "/usr/lib/python2.7/os.py", line 284, in walk
    if isdir(join(top, name)):
  File "/usr/lib/python2.7/genericpath.py", line 41, in isdir
    st = os.stat(s)
KeyboardInterrupt
^C
EN

Stack Overflow用户

回答已采纳

发布于 2014-06-28 20:05:28

我发现了问题。由于某些原因,当脚本从makefile调用时,输出会被抑制。我手动运行了脚本,并找到了一些递归的符号链接。移除它们,它又开始工作了。

编辑:下面是我诊断这个问题的方法。

构建从build/core/main.mk开始,它调用build /tools/findleves.py。这个脚本在整个源树中搜索名为Android.mk的文件,并将它们拼接在一起创建一个临时的、巨大的makefile。

如果您在头几秒钟内按下Ctrl键开始构建并取消它,您将看到Python中熟悉的键盘中断消息。当我这样做时,Python堆栈转储有几个页面高,因为脚本递归地搜索目录树。

我所做的是:

  1. 我在脚本中添加了一个简单的print语句来查看它扫描的目录。
  2. 这一点很重要:我直接调用脚本,而不是通过makefile调用。这样,我就可以看到它的输出,否则makefile就会使用它。将跟踪打印到stderr而不是stdout可能也会有效。

问题是,我在内核目录中创建了一些额外的子目录来“安装”模块和固件,以便以后更容易复制。make modules-install命令将一个符号链接安装回内核源代码树,指向模块的来源。因此,有一个文件kernel/deploy/lib/modules/3.8.13/source,它是返回到kernel/目录的符号链接。

Python脚本遵循符号链接,并试图扫描一棵具有无限深度的树。

票数 4
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24469768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档