base.bbclass 詳細(xì)分析 —— 綱

task chain 構(gòu)建

base.class

  148 addtask fetch
  149 do_fetch[dirs] = "${DL_DIR}"
  150 do_fetch[file-checksums] = "${@bb.fetch.get_checksum_file_list(d)}"
  151 do_fetch[file-checksums] += " ${@get_lic_checksum_file_list(d)}"
  152 do_fetch[vardeps] += "SRCREV"
  153 python base_do_fetch() {
  154 +-- 11 lines: src_uri = (d.getVar('SRC_URI') or "").split()-----------------------------------------------------------------------------------------------------------------------------------------------------
  165 


  166 addtask unpack after do_fetch
  167 do_unpack[dirs] = "${WORKDIR}"
  168 
>>169 do_unpack[cleandirs] = "${@d.getVar('S') if os.path.normpath(d.getVar('S')) != os.path.normpath(d.getVar('WORKDIR')) else os.path.join('${S}', 'patches')}"
  170 
  171 python base_do_unpack() {
  172 +-- 10 lines: src_uri = (d.getVar('SRC_URI') or "").split()-----------------------------------------------------------------------------------------------------------------------------------------------------
  182 
  304 addtask configure after do_patch
  305 do_configure[dirs] = "${B}"
  306 base_do_configure() {
  307 +-- 16 lines: if [ -n "${CONFIGURESTAMPFILE}" -a -e "${CONFIGURESTAMPFILE}" ]; then-----------------------------------------------------------------------------------------------------------------------------
  323 
  324 addtask compile after do_configure
  325 do_compile[dirs] = "${B}"
  326 base_do_compile() {
  327 +--  6 lines: if [ -e Makefile -o -e makefile -o -e GNUmakefile ]; then-----------------------------------------------------------------------------------------------------------------------------------------
  333 
  334 addtask install after do_compile
  335 do_install[dirs] = "${B}"
  336 # Remove and re-create ${D} so that is it guaranteed to be empty
  337 do_install[cleandirs] = "${D}"
  338 
>>339 base_do_install() {
--340         :
  341 }
  347 addtask build after do_populate_sysroot                                                                                                                                                                         
  348 do_build[noexec] = "1"
  349 do_build[recrdeptask] += "do_deploy"
>>350 do_build () {
--351         :
  352 }
  720 addtask cleansstate after do_clean
  721 python do_cleansstate() {
  722 +--  2 lines: sstate_clean_cachefiles(d)------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  724 addtask cleanall after do_cleansstate
  725 do_cleansstate[nostamp] = "1"
  726 
  727 python do_cleanall() {
  728 +-- 10 lines: src_uri = (d.getVar('SRC_URI') or "").split()-----------------------------------------------------------------------------------------------------------------------------------------------------
  738 do_cleanall[nostamp] = "1"
  739 

patch.bbclass

 96 python patch_do_patch() {
 97 +-- 66 lines: import oe.patch-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
163 patch_do_patch[vardepsexclude] = "PATCHRESOLVE"
164 
165 addtask patch after do_unpack
166 do_patch[dirs] = "${WORKDIR}"
167 do_patch[depends] = "${PATCHDEPENDENCY}"

staging.bbclass

 94 addtask populate_sysroot after do_install
 95 
 96 SYSROOT_PREPROCESS_FUNCS ?= ""
 97 SYSROOT_DESTDIR = "${WORKDIR}/sysroot-destdir"
 98 
 99 python do_populate_sysroot () {
100 +-- 16 lines: SYSROOT 'version' 2---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
116 

utility-tasks.bbclass

 23 addtask clean
 24 do_clean[nostamp] = "1"
 25 python do_clean() {
 26 +-- 12 lines: """clear the build and temp directories"""----------------------------------------------------------------------------------------------------------------------------------------------------------
 38 

這樣就形成了2條鏈條:

  1. fetch ----> unpack -----> patch ----> configure ----> compile ----> install ----> populate_sysroot ----> build
  2. clean ----> cleansstate ----> cleanall

繼承

    4 inherit patch
    5 inherit staging

    7 inherit mirrors
    8 inherit utils
    9 inherit utility-tasks
   10 inherit metadata_scm
   11 inherit logging

事件處理器

>>226 addhandler base_eventhandler
>>227 base_eventhandler[eventmask] = "bb.event.ConfigParsed bb.event.MultiConfigParsed bb.event.BuildStarted bb.event.RecipePreFinalise bb.event.RecipeParsed"                                                        
  228 python base_eventhandler()

匿名邏輯(默認(rèn)處理)

  1. Handle backfilling
  2. Handle PACKAGECONFIG
  3. ....
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末扮碧,一起剝皮案震驚了整個(gè)濱河市弓坞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌柱搜,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡望门,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門锰霜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來怒允,“玉大人,你說我怎么就攤上這事锈遥。” “怎么了勘畔?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵所灸,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我炫七,道長(zhǎng)爬立,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任万哪,我火速辦了婚禮侠驯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘奕巍。我一直安慰自己吟策,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布的止。 她就那樣靜靜地躺著檩坚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪诅福。 梳的紋絲不亂的頭發(fā)上匾委,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音氓润,去河邊找鬼赂乐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛咖气,可吹牛的內(nèi)容都是我干的挨措。 我是一名探鬼主播挖滤,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼运嗜!你這毒婦竟也來了壶辜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤担租,失蹤者是張志新(化名)和其女友劉穎砸民,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體奋救,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡岭参,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了尝艘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片演侯。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖背亥,靈堂內(nèi)的尸體忽然破棺而出秒际,到底是詐尸還是另有隱情,我是刑警寧澤狡汉,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布娄徊,位于F島的核電站,受9級(jí)特大地震影響盾戴,放射性物質(zhì)發(fā)生泄漏寄锐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一尖啡、第九天 我趴在偏房一處隱蔽的房頂上張望橄仆。 院中可真熱鬧,春花似錦衅斩、人聲如沸盆顾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽椎扬。三九已至,卻和暖如春具温,著一層夾襖步出監(jiān)牢的瞬間蚕涤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工铣猩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留揖铜,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓达皿,卻偏偏與公主長(zhǎng)得像天吓,于是被迫代替她去往敵國(guó)和親贿肩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容