AOSP构建在构建开始时挂起

时间:2014-06-28 18:30:37

标签: android-source

我正在开发一个带有AOSP前叉,划艇的系统。它一直工作到今天,现在我明白了:

$ 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):

剪辑(这可以用很多行)。

  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

2 个答案:

答案 0 :(得分:4)

我发现了问题。出于某种原因,从makefile调用脚本时会抑制输出。我手动运行脚本,发现了一些递归符号链接。删除它们,它又恢复了工作。

编辑:以下是我诊断问题的方法。

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

如果你开始构建并在前几秒按Ctrl-C取消它,你将看到来自Python的熟悉的键盘中断消息。当我这样做时,Python堆栈转储高几页,因为脚本递归搜索目录树。

我做的是:

  1. 我在脚本中添加了一个简单的print语句,以查看它扫描的目录。
  2. 这很重要:我直接调用了脚本,而不是通过makefile。这样,我可以看到它的输出,否则makefile会消耗它。将痕迹打印到stderr而不是stdout也可能会起作用。
  3. 问题是,我在内核目录中创建了一些额外的子目录,以便安装&#34;模块和固件,以便我以后复制。 make modules-install命令将符号链接安装回内核源代码树,指向模块的来源。所以有一个文件kernel/deploy/lib/modules/3.8.13/source,它是一个符号链接回kernel/目录。

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

答案 1 :(得分:-2)

切换到python2.7并尝试`