yocto-sumo源碼解析(四):bitbake


1. 環境准備

  按照前面幾節的分享,我們已經知道了oe-init-build-env是如何建立yocto項目環境的,下面我們繼續研究bitbake腳本,在這之前,因為我們選擇qemuarm64為目標機進行開發,所以需要修改配置文件conf/local.conf,設置MACHINE為qemuarm64:

2. bitbake腳本分析

2.1 導入必要的包,注意這里用到了sys.path.insert並且連續調用兩次os.path.dirname取得bitbake的祖父目錄,然后再加上lib,這樣就將poky-sumo-19.0.0/bitbake/lib注冊到包搜索路徑,從而可以在后面import bb:

import os
import sys

sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(__file__)),
                                'lib'))
try:
    import bb
except RuntimeError as exc:
    sys.exit(str(exc))

from bb import cookerdata
from bb.main import bitbake_main, BitBakeConfigParameters, BBMainException

 2.2 檢測區域是否為utf-8:

if sys.getfilesystemencoding() != "utf-8":
    sys.exit("Please use a locale setting which supports UTF-8 (such as LANG=en_US.UTF-8).\nPython can't change the filesystem locale after loading so we need a UTF-8 when Python starts or things won't work.")

 2.3 執行bitbake_main,此前進行版本檢測:bitbake腳本本身定義了__version__為"1.37.0",同時在bitbake/lib/bb/__init__.py也定義了__version__為“1.37.0”,這里進行一個版本的對比。

__version__ = "1.37.0"

if __name__ == "__main__":
    if __version__ != bb.__version__:
        sys.exit("Bitbake core version and program version mismatch!")
    try:
        sys.exit(bitbake_main(BitBakeConfigParameters(sys.argv),
                              cookerdata.CookerConfiguration()))
    except BBMainException as err:
        sys.exit(err)
    except bb.BBHandledException:
        sys.exit(1)
    except Exception:
        import traceback
        traceback.print_exc()
        sys.exit(1)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM