yocto-sumo源码解析(五): bitbake/lib/bb/main.py

本文解析了BitBake主函数bitbake_main的工作流程,包括检查操作系统环境、配置参数设置、初始化消息配置等关键步骤,并阐述了这些操作对BitBake运行的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

续前面分析,就该对bitbake_main()这个函数进行分析了,这个函数位于bitbake/lib/bb/main.py。

1. 检测主机操作系统是否为linux并且/dev/shm是否存在,python的multiprocessing需要/dev/shm支持:

    # Python multiprocessing requires /dev/shm on Linux
    if sys.platform.startswith('linux') and not os.access('/dev/shm', os.W_OK | os.X_OK):
        raise BBMainException("FATAL: /dev/shm does not exist or is not writable")

 2. 重新设置stdout,禁用缓冲以避免长log被截断:

    # Unbuffer stdout to avoid log truncation in the event
    # of an unorderly exit as well as to provide timely
    # updates to log files for use with tail
    try:
        if sys.stdout.name == '<stdout>':
            # Reopen with O_SYNC (unbuffered)
            fl = fcntl.fcntl(sys.stdout.fileno(), fcntl.F_GETFL)
            fl |= os.O_SYNC
            fcntl.fcntl(sys.stdout.fileno(), fcntl.F_SETFL, fl)
    except:
        pass

 3. 设置配置参数:

    configuration.setConfigParameters(configParams)

 4. 检查配置参数:server_only和remote_server在配置参数中不能同时存在:

    if configParams.server_only and configParams.remote_server:
            raise BBMainException("FATAL: The '--server-only' option conflicts with %s.\n" %
                                  ("the BBSERVER environment variable" if "BBSERVER" in os.environ \
                                   else "the '--remote-server' option"))

 5. 检查配置参数:如果是observe_only,那么remote_server和bind不能同时配置:

    if configParams.observe_only and not (configParams.remote_server or configParams.bind):
        raise BBMainException("FATAL: '--observe-only' can only be used by UI clients "
                              "connecting to a server.\n")

 6. 配置BBDEBUG级别,如果环境变量BBDEBUG配置级别大于配置参数中的debug级别,采用BBDEBUG:

    if "BBDEBUG" in os.environ:
        level = int(os.environ["BBDEBUG"])
        if level > configuration.debug:
            configuration.debug = level

 7. 初始化消息配置:

    bb.msg.init_msgconfig(configParams.verbose, configuration.debug,
                          configuration.debug_domains)

8. 建立bitbake:并且进入ui_module的main函数

    server_connection, ui_module = setup_bitbake(configParams, configuration)
    # No server connection
    if server_connection is None:
        if configParams.status_only:
            return 1
        if configParams.kill_server:
            return 0

    if not configParams.server_only:
        if configParams.status_only:
            server_connection.terminate()
            return 0

        try:
            for event in bb.event.ui_queue:
                server_connection.events.queue_event(event)
            bb.event.ui_queue = []

            return ui_module.main(server_connection.connection, server_connection.events,
                                  configParams)
        finally:
            server_connection.terminate()
    else:
        return 0

    return 1

 

转载于:https://www.cnblogs.com/shortnil/p/9581549.html

INFO: Sourcing build tools [INFO] Silentconfig project [INFO] Sourcing build environment [INFO] Generating kconfig for Rootfs [INFO] Silentconfig rootfs [INFO] Generating plnxtool conf [INFO] Generating workspace directory [INFO] Configuring: u-boot [INFO] devtool modify u-boot-xlnx NOTE: Starting bitbake server... NOTE: Reconnecting to bitbake server... NOTE: Retrying server connection (#1)... NOTE: Reconnecting to bitbake server... NOTE: Previous bitbake instance shutting down?, waiting to retry... NOTE: Retrying server connection (#2)... WARNING: Invalid mirror variable value for PREMIRRORS: ['cvs://.*/.*', 'file:///proj/yocto/daily-downloads_2020/', 'svn://.*/.*', 'file:///proj/yocto/daily-downloads_2020/', 'git://.*/.*', 'file:///proj/yocto/daily-downloads_2020/', 'gitsm://.*/.*', 'file:///proj/yocto/daily-downloads_2020/', 'hg://.*/.*', 'file:///proj/yocto/daily-downloads_2020/', 'bzr://.*/.*', 'file:///proj/yocto/daily-downloads_2020/', 'p4://.*/.*', 'file:///proj/yocto/daily-downloads_2020/', 'osc://.*/.*', 'file:///proj/yocto/daily-downloads_2020/', 'https?$://.*/.*', 'file:///proj/yocto/daily-downloads_2020/', 'ftp://.*/.*', 'file:///proj/yocto/daily-downloads_2020/', 'npm://.*/?.*', 'file:///proj/yocto/daily-downloads_2020/', '\\', 'git://.*/.*', 'file:///home/lvvl/hd_workspace/tools/downloads_2020.2/downloads', '\\', 'gitsm://.*/.*', 'file:///home/lvvl/hd_workspace/tools/downloads_2020.2/downloads', '\\', 'ftp://.*/.*', 'file:///home/lvvl/hd_workspace/tools/downloads_2020.2/downloads', '\\', 'http://.*/.*', 'file:///home/lvvl/hd_workspace/tools/downloads_2020.2/downloads', '\\', 'https://.*/.*', 'file:///home/lvvl/hd_workspace/tools/downloads_2020.2/downloads', 'git://.*/.*', 'file:///home/lvvl/hd_workspace/tools/downloads_2020.2/downloads', 'ftp://.*/.*', 'file:///home/lvvl/hd_workspace/tools/downloads_2020.2/downloads', 'http://.*/.*', 'file:///home/lvvl/hd_workspace/tools/downloads_2020.2/downloads', 'https://.*/.*', 'file:///home/lvvl/hd_workspace/tools/downloads_2020.2/downloads', 'git://.*/.*', 'http://petalinux.xilinx.com/sswreleases/rel-v2020/downloads', 'ftp://.*/.*', 'http://petalinux.xilinx.com/sswreleases/rel-v2020/downloads', 'http://.*/.*', 'http://petalinux.xilinx.com/sswreleases/rel-v2020/downloads', 'https://.*/.*', 'http://petalinux.xilinx.com/sswreleases/rel-v2020/downloads'], should contain paired members. Parsing recipes: 100% |######################################################################################################################################################################| Time: 0:01:52 Parsing of 2995 .bb files complete (0 cached, 2995 parsed). 4265 targets, 169 skipped, 0 masked, 0 errors. Summary: There was 1 WARNING message shown. INFO: SRC_URI contains some conditional appends/prepends - will create branches to represent these WARNING: Invalid mirror variable value for PREMIRRORS: ['cvs://.*/.*', 'file:///proj/yocto/daily-downloads_2020/', 'svn://.*/.*', 'file:///proj/yocto/daily-downloads_2020/', 'git://.*/.*', 'file:///proj/yocto/daily-downloads_2020/', 'gitsm://.*/.*', 'file:///proj/yocto/daily-downloads_2020/', 'hg://.*/.*', 'file:///proj/yocto/daily-downloads_2020/', 'bzr://.*/.*', 'file:///proj/yocto/daily-downloads_2020/', 'p4://.*/.*', 'file:///proj/yocto/daily-downloads_2020/', 'osc://.*/.*', 'file:///proj/yocto/daily-downloads_2020/', 'https?$://.*/.*', 'file:///proj/yocto/daily-downloads_2020/', 'ftp://.*/.*', 'file:///proj/yocto/daily-downloads_2020/', 'npm://.*/?.*', 'file:///proj/yocto/daily-downloads_2020/', '\\', 'git://.*/.*', 'file:///home/lvvl/hd_workspace/tools/downloads_2020.2/downloads', '\\', 'gitsm://.*/.*', 'file:///home/lvvl/hd_workspace/tools/downloads_2020.2/downloads', '\\', 'ftp://.*/.*', 'file:///home/lvvl/hd_workspace/tools/downloads_2020.2/downloads', '\\', 'http://.*/.*', 'file:///home/lvvl/hd_workspace/tools/downloads_2020.2/downloads', '\\', 'https://.*/.*', 'file:///home/lvvl/hd_workspace/tools/downloads_2020.2/downloads', 'git://.*/.*', 'file:///home/lvvl/hd_workspace/tools/downloads_2020.2/downloads', 'ftp://.*/.*', 'file:///home/lvvl/hd_workspace/tools/downloads_2020.2/downloads', 'http://.*/.*', 'file:///home/lvvl/hd_workspace/tools/downloads_2020.2/downloads', 'https://.*/.*', 'file:///home/lvvl/hd_workspace/tools/downloads_2020.2/downloads', 'git://.*/.*', 'http://petalinux.xilinx.com/sswreleases/rel-v2020/downloads', 'ftp://.*/.*', 'http://petalinux.xilinx.com/sswreleases/rel-v2020/downloads', 'http://.*/.*', 'http://petalinux.xilinx.com/sswreleases/rel-v2020/downloads', 'https://.*/.*', 'http://petalinux.xilinx.com/sswreleases/rel-v2020/downloads'], should contain paired members. NOTE: Resolving any missing task queue dependencies Initialising tasks: 100% |###################################################################################################################################################################| Time: 0:00:01 Sstate summary: Wanted 0 Found 0 Missed 0 Current 0 (0% match, 0% complete) NOTE: No setscene tasks NOTE: Executing Tasks WARNING: Invalid mirror data cvs://.*/.* file:///proj/yocto/daily-downloads_2020/ \n svn://.*/.* file:///proj/yocto/daily-downloads_2020/ \n git://.*/.* file:///proj/yocto/daily-downloads_2020/ \n gitsm://.*/.* file:///proj/yocto/daily-downloads_2020/ \n hg://.*/.* file:///proj/yocto/daily-downloads_2020/ \n bzr://.*/.* file:///proj/yocto/daily-downloads_2020/ \n p4://.*/.* file:///proj/yocto/daily-downloads_2020/ \n osc://.*/.* file:///proj/yocto/daily-downloads_2020/ \n https?$://.*/.* file:///proj/yocto/daily-downloads_2020/ \n ftp://.*/.* file:///proj/yocto/daily-downloads_2020/ \n npm://.*/?.* file:///proj/yocto/daily-downloads_2020/ \n \ git://.*/.* file:///home/lvvl/hd_workspace/tools/downloads_2020.2/downloads \n \ gitsm://.*/.* file:///home/lvvl/hd_workspace/tools/downloads_2020.2/downloads \n \ ftp://.*/.* file:///home/lvvl/hd_workspace/tools/downloads_2020.2/downloads \n \ http://.*/.* file:///home/lvvl/hd_workspace/tools/downloads_2020.2/downloads \n \ https://.*/.* file:///home/lvvl/hd_workspace/tools/downloads_2020.2/downloads \n git://.*/.* file:///home/lvvl/hd_workspace/tools/downloads_2020.2/downloads \n ftp://.*/.* file:///home/lvvl/hd_workspace/tools/downloads_2020.2/downloads \n http://.*/.* file:///home/lvvl/hd_workspace/tools/downloads_2020.2/downloads \n https://.*/.* file:///home/lvvl/hd_workspace/tools/downloads_2020.2/downloads \n git://.*/.* http://petalinux.xilinx.com/sswreleases/rel-v2020/downloads \n ftp://.*/.* http://petalinux.xilinx.com/sswreleases/rel-v2020/downloads \n http://.*/.* http://petalinux.xilinx.com/sswreleases/rel-v2020/downloads \n https://.*/.* http://petalinux.xilinx.com/sswreleases/rel-v2020/downloads \n, should have paired members. ERROR: The URL: '\' is invalid and cannot be interpreted ERROR: Logfile of failure stored in: /home/lvvl/hd_workspace/b5_prj/build/tmp/work/zynqmp_generic-xilinx-linux/u-boot-xlnx/v2020.01-xilinx-v2020.2+gitAUTOINC+bb4660c33a-r0/devtooltmp-wdh0csko/temp/log.do_fetch.21136
最新发布
07-31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值