1. SUMMARY = "Linux Bluetooth Stack Userland V5"

  2. # 用於打包系統(例如opkg,rpm或dpkg)的二進制包的(72個字符或更少)摘要。

  3. 默認情況下,如果在配方中未設置DESCRIPTION,則使用SUMMARY值的定義描述變量。

  4. DESCRIPTION = "Linux Bluetooth stack V5 userland components.

  5. These include a system configurations, daemons, tools and system libraries."

  6. # 提供給包管理器的包描述信息。如果未設置,說明將使用內容變量的值

  7. HOMEPAGE = "http://www.bluez.org"

  8. # 一般為配方的正在構建的軟件的主頁,從中可以獲取更多的軟件信息。

  9. SECTION = "libs"

  10. # 用於對軟件包進行分類,此變量用於軟件包管理程序。

  11. LICENSE = "GPLv2+ & LGPLv2.1+"

  12. # 配方的源文件許可列表.LICENSE需遵循以下規則:

  13. #   (1)不要在單個許可名稱中使用空格

  14. #   (2)當許可可選擇多個時,使用| 分隔許可證。

  15. #   (3)當存在涵蓋源文件的不同部分的多個許可證時,使用與分隔許可證。

  16. #   (4)您可以在許可名稱之間使用空格。

  17. #   (5)對於標準許可,請使用元/文件/ common-licenses /中的LICENSE,

  18. 或者在meta / conf / licenses.conf中定義的具有SPDXLICENSEMAP標誌的LICENSE。

  19. # 下面是一些例子:

  20. # LICENSE =「LGPLv2.1 | GPLv3」

  21. # LICENSE =「MPL-1&LGPLv2.1」

  22. # LICENSE =「GPLv2 +」

  23. # 第一個示例來自Qt的配方,源文件可以選擇LGPLv2.1或GPLv3許可。第二個示例來自Cairo,其中兩個LICENSE涵蓋源代碼的不同部分。

  24. 最後一個示例來自sysstat,它提供了一個單一的LICENSE。

  25. # 您還可以針對每個包指定LICENSE以處理輸出組件具有不同的LICENSE情況。

  26. 例如,如果某個軟件的代碼根據GPLv2許可,但是文檔卻根據GNU 1.2自由文檔許可,其LICENSE可以被規定如下:

  27. # LICENSE =「GFDL-1.2&GPLv2」

  28. # LICENSE _ $ {PN} =「GPLv2」

  29. # LICENSE _ $ {PN} -doc =「GFDL-1.2」

  30. LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e \

  31. file://COPYING.LIB;md5=fb504b67c50331fc78734fed90fb0e09 \

  32. file://src/main.c;beginline=1;endline=24;md5=9bc54b93cd7e17bf03f52513f39f926e"

  33. # 配方文件構建的軟件源代碼中的許可文本的校驗和。

  34. # 此變量跟蹤軟件源代碼文件的許可文本的更改。如果許可文本被更改,它將觸發構建失敗,這使開發人員有機會審查任何許可更改。

  35. # 所有配方文件必須定義此變量(除非許可設置為「關閉」)。

  36. DEPENDS = "udev libusb dbus-glib glib-2.0 libcheck readline"

  37. # 列出配方的構建時的依賴項(即其他配方文件)。

  38. 在執行配方的配置任務之前,系統確保列出的所有依賴項都已構建,並且所有依賴項的內容已經保存在相應的 sysroot 中。

  39. # 考慮這個簡單的例子,兩個名為「a」和「b」的配方生成類似命名的包。

  40. 在本示例中,DEPENDS語句出現在「a」配方中:

  41. # DEPENDS =「b」

  42. # 這裡,DEPENDS使得配方「a」的do_configure任務取決於配方「b」的do_populate_sysroot任務。

  43. 這意味著當配方「a」正在配置自身時,配方「b」放入sysroot的任何內容都必須可用。

  44. PROVIDES += "bluez-hcidump"

  45. # 用於提供配方的別名。默認情況下,配方自己的PN已經包含在PROVIDES列表中。

  46. 如果配方使用PROVIDES,則別名是配方的PN的同義詞,並可用於其他配方的DEPENDS中。

  47. # 以配方文件libav_0.8.11.bb為例,libav_0.8.11.bb中的現狀提供語句如下:

  48. # PROVIDES += 「libpostproc」

  49. # 該現狀提供語句使得「libav」配方也被稱為「libpostproc」。

  50. RPROVIDES_${PN} += "bluez-hcidump"

  51. # 用於提供包名的別名列表。這些別名用於滿足其他包在構造期間和指定目標時(在RDEPENDS所指定的)的運行時依賴。

  52. # 注意

  53. # 程序包自身的名稱(PN)已隱含在其。RPROVIDES中列表

  54. # 與所有程序包控制變量一樣,您必須始終將該變量與包名結合使用例如:

  55. # RPROVIDES_${PN} =「widget-abi-2」

  56. RCONFLICTS_${PN} = "bluez4"

  57. # 用於指定與當前軟件包衝突的軟件包列表。請注意,如果沒有先刪除衝突的包,則不會安裝當前軟件包。

  58. # 與所有包控制變量一樣,您必須始終將其與包名結合使用。例如:

  59. # RCONFLICTS _ $ {PN} =「another_conflicting_package_name」

  60. # OpenEmbedded構架系統使用的BitBake支持指定衝突的軟件包版本。

  61. 雖然語法因為軟件打包格式而異,但BitBake會隱藏這些差異。

  62. 下面是使用RCONFLICTS變量指定衝突的軟件包的一般語法:

  63. # RCONFLICTS _ $ {PN} =「package(operator version)」

  64. # 對於運營商,以下內容說明了當前軟件包與軟件包FOO的1.2或更高版本衝突:

  65. # RCONFLICTS _ $ {PN} =「foo(> = 1.2)」

  66. PACKAGECONFIG ??= "obex-profiles"

  67. PACKAGECONFIG[obex-profiles] = "--enable-obex,--disable-obex,libical"

  68. PACKAGECONFIG[experimental] = "--enable-experimental,--disable-experimental,"

  69. # 該變量提供了在配方上啟用或禁用配方的 feature 的方法您可以在配方中指定的 feature 以及 feature 的參數來創建PACKAGECONFIG塊以下是基本的塊結構。:

  70. # PACKAGECONFIG ?? =「f1 f2 f3 ...」

  71. # PACKAGECONFIG [f1] =「--with-f1, - without-f1,build-deps-f1,rt-deps-f1」

  72. # PACKAGECONFIG [f2] =「--with-f2, - without-f2,build-deps-f2,rt-deps-f2」

  73. # PACKAGECONFIG [f3] =「--with-f3, - without-f3,build-deps-f3,rt-deps-f3」

  74. # PACKAGECONFIG首先指定了一個空格分隔的要啟用的功能列表。

  75. 在feature列表下面,您可以通過提供最多四個按順序排列的參數來確定每個 feature的行為,這些參數之間用逗號分隔。

  76. 您可以省略。

  77. 任何您喜歡的參數,但必須保留逗號分隔符您必須按照以下順序指定 feature的參數:

  78. #   1.如果啟用了該功能,則應將額外的參數添加到配置腳本參數列表(EXTRA_OECONF)。

  79. #   2.如果禁用了該功能,應該將額外的參數添加到EXTRA_OECONF。

  80. #   3.如果啟用了該功能,則應添加附加的構建時依賴關係(DEPENDS)。

  81. #   4.如果啟用了該功能,應該添加附加的運行時依賴關係(RDEPENDS)。

  82. # 以的librsvg中的PACKAGECONFIG塊為例。

  83. 在這個例子中,feature是croco,它通過三個參數來確定其行為。

  84. # PACKAGECONFIG ?? =「croco」

  85. # PACKAGECONFIG [croco] =「 - with-croco,- without-croco,libcroco」

  86. # –with-croco和libcroco參數僅在啟用此feature時適用。

  87. 在這種情況下,–with-croco將被添加到配置腳本的參數列表中,而libcroco將被添加到DEPENDS中。

  88. 另一方面,如果您通過另一層中的.bbappend文件禁用該功能,則第二個參數–without-croco將會被添加到配置腳本中,而不是–with-croco。

  89. 基本的PACKAGECONFIG結構適用於創建塊或者更改塊。

  90. 如果要更改現有的PACKAGECONFIG塊,可以採用以下兩種方法之一:

  91. # 1.附加文件:在您的層(layer)中創建一個名為recipename.bbappend的附加文件,並覆蓋PACKAGECONFIG的值。您可以完全覆蓋變量的值:

  92. # PACKAGECONFIG =「f4 f5」

  93. # 或者,您可以只添加變量的值:

  94. # PACKAGECONFIG_append =「f4」

  95. # 2.配置文件:如果您沒有修改local.conf或mydistro.conf文件,此方法與通過附加文件更改塊相同。

  96. 與之前描述的附加文件一樣,您可以完全覆蓋變量的值:

  97. # PACKAGECONFIG_pn-recipename =「f4 f5」

  98. # 或者,您可以只修改變量的值:

  99. # PACKAGECONFIG_append_pn-recipename =「f4」

  100. SRC_URI = "\

  101. ${KERNELORG_MIRROR}/linux/bluetooth/bluez-${PV}.tar.xz \

  102. file://out-of-tree.patch \

  103. file://set_device_class.patch \

  104. file://init \

  105. file://run-ptest \

  106. ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', 'file://0001-Allow-using-obexd-without-systemd-in-the-user-sessio.patch', d)} \

  107. file://0001-tests-add-a-target-for-building-tests-without-runnin.patch \

  108. "

  109. # 用於指定源文件列表(本地或遠程)。

  110. 這個變量告訴OpenEmbedded構建系統哪些位要進入構建以及如何獲取它們。

  111. 例如,如果配方或附加文件只需要從Internet中提取壓縮後的源文件,則配方或附加文件只需使用單個SRC_URI條目即可。

  112. 另一方面,如果配方或附加文件需要同時獲取壓縮後的源文件,應用兩個補丁以及自定義文件,則配方或附加文件中的SRC_URI變量將包括四個條目。

  113. # 以下列出了可用的URI協議:

  114. #   file://-從本地獲取文件,這些文件通常是元數據附帶的文件。

  115. 其路徑相對於FILESPATH變量。因此,構建系統按順序從配方文件(.bb)或附加文件(.bbappend)所在的目錄的子目錄中搜索:

  116. # 1 ${BPN} - 沒有任何特殊後綴或版本號的配方名稱。

  117. # 2 ${BP} - $ {BPN} - $ {PV}。配方的名稱和版本,但沒有任何特殊的包名稱後綴。

  118. # files - files目錄中的文件,一般配方或附加文件旁邊。

  119. #   注意:

  120. #   如果希望構建系統從append文件中選取通過SRC_URI語句指定的文件,則可以通過在append文件中使用FILESEXTRAPATHS變量來擴展FILESPATH變量。

  121. #   bzr:// - 從Bazaar版本控制存儲庫獲取文件。

  122. #   git:// - 從Git版本控制存儲庫獲取文件。

  123. #   osc:// - 從OSC(OpenSUSE Build服務)版本控制存儲庫獲取文件。

  124. #   repo:// - 從repo(Git)存儲庫獲取文件。

  125. #   ccrc:// - 從ClearCase存儲庫獲取文件。

  126. #   http:// - 使用http從Internet獲取文件。

  127. #   https:// - 使用https從Internet獲取文件。

  128. #   ftp:// - 使用ftp從Internet獲取文件。

  129. #   cvs:// - 從CVS版本控制存儲庫獲取文件。

  130. #   hg:// - 從Mercurial(hg)版本控制存儲庫獲取文件。

  131. #   p4:// - 從Perforce(p4)版本控制存儲庫獲取文件。

  132. #   ssh:// - 從安全shell獲取文件。

  133. #   svn:// - 從Subversion(svn)版本控制存儲庫獲取文件。

  134. # 針對SRC_URI的每個條目還有一些標準和特定的配方選項。以下是標準選項:

  135. #   apply - 是否應用補丁。默認操作是應用補丁。

  136. #   striplevel - 應用補丁時使用的級別。默認級別為1。

  137. #   patchdir - 指定補丁的目錄。默認值為$ {S}。

  138. # 以下是版本控制系統針對配方構建代碼的選項:

  139. #   mindate - 只有在SRCDATE等於或大於mindat時才應用補丁

  140. #   maxdate - 僅當SRCDATE不晚於mindate時才應用補丁。

  141. #   minrev - 僅當SRCREV等於或大於minrev時才應用補丁。

  142. #   maxrev - 僅當SRCREV不晚於maxrev時才應用補丁。

  143. #   rev - 僅當SRCREV等於rev時才應用補丁。

  144. #   notrev - 僅當SRCREV不等於rev時才應用補丁。

  145. # 這裡還有一些值得一提的額外選項:

  146. #   unpack - 控制是否解壓縮文件(如果是歸檔文件)。默認操作是解壓縮文件。

  147. #   subdir - 將文件(或提取其內容)放置到WORKDIR的指定子目錄中。

  148. 此選項對於異常tarball或其他那些解壓後文件不放置在子目錄的歸檔文件非常有用。

  149. #   name - 當SRC_URI中有多個文件時,指定與SRC_URI校驗相關的名稱。

  150. #   downloadfilename - 指定存儲下載文件時使用的文件名。

  151. S = "${WORKDIR}/bluez-${PV}"

  152. # 配方文件中源文件解壓縮後在build目錄中的位置。 此位置在工作目錄(WORKDIR)中,且不是靜態的。

  153. 解壓縮後的源文件位置取決於配方名稱(PN)和配方版本(PV),如下所示:

  154. # $ {WORKDIR} / $ {PN} - $ {PV}

  155. # 例如,假設一個名為poky的源目錄頂級文件夾和一個poky / build的默認構建目錄。

  156. 在這種情況下,構建系統用於保留db配方源文件解壓縮後的目錄如下:

  157. # poky / build / tmp / work / qemux86-poky-linux / db / 5.1.19-r3 / db-5.1.19

  158. inherit autotools pkgconfig systemd update-rc.d distro_features_check ptest

  159. # 用於指定在解析過程中應繼承的類。 該變量僅在配置文件中有效。

  160. EXTRA_OECONF = "\

  161. --enable-tools \

  162. --disable-cups \

  163. --enable-test \

  164. --enable-datafiles \

  165. ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '--enable-systemd', '--disable-systemd', d)} \

  166. --enable-library \

  167. "

  168. # 指定用於configure 的參數。

  169. # bluez5 builds a large number of useful utilities but does not

  170. # install them. Specify which ones we want put into ${PN}-noinst-tools.

  171. NOINST_TOOLS_READLINE ??= ""

  172. NOINST_TOOLS_EXPERIMENTAL ??= ""

  173. NOINST_TOOLS = " \

  174. ${NOINST_TOOLS_READLINE} \

  175. ${@bb.utils.contains('PACKAGECONFIG', 'experimental', '${NOINST_TOOLS_EXPERIMENTAL}', '', d)} \

  176. "

  177. do_install_append() {

  178. install -d ${D}${INIT_D_DIR}

  179. # 目標目錄。do_install任務在build目錄中安裝組件的位置。 此位置默認為:

  180. # $ {WORKDIR} / image

  181. install -m 0755 ${WORKDIR}/init ${D}${INIT_D_DIR}/bluetooth

  182. # OpenEmbedded構建系統構建配方的工作目錄的路徑名。

  183. 此目錄位於TMPDIR目錄結構中,並且特定於正在構建的配方和正在構建的系統。

  184. # WORKDIR目錄定義如下:

  185. # $ {TMPDIR} / work / $ {MULTIMACH_TARGET_SYS} / $ {PN} / $ {EXTENDPE} $ {PV} - $ {PR}

  186. # 1

  187. # 實際目錄取決於幾個事情:

  188. #   TMPDIR:最上層構建輸出目錄

  189. #   MULTIMACH_TARGET_SYS:目標系統

  190. #   PN:配方名稱

  191. #   EXTENDPE:時間戳? - (如果PE未指定,這通常是大多數配方的情況,則EXTENDPE為空)

  192. #   PV:配方版本

  193. #   PR:配方修訂版

  194. # 例如,假設源目錄最上層文件夾名稱為poky,默認構建目錄為poky/build,目標系統為qemux86-poky-linux。此外,假設您的配方名為foo_1.3.0-r0.bb。在這種情況下,構建系統用於構建包的工作目錄(WORKDIR)將如下所示:

  195. # poky / build / tmp / work / qemux86-poky-linux / foo / 1.3.0-r0

  196. install -d ${D}${sysconfdir}/bluetooth/

  197. if [ -f ${S}/profiles/audio/audio.conf ]; then

  198. # 配方文件中源文件解壓縮後在build目錄中的位置。

  199. 此位置在工作目錄(WORKDIR)中,且不是靜態的。 解壓縮後的源文件位置取決於配方名稱(PN)和配方版本(PV),如下所示:

  200. install -m 0644 ${S}/profiles/audio/audio.conf ${D}/${sysconfdir}/bluetooth/

  201. # 配置文件中源文件解壓縮後在build目錄中的位置。

  202. 此位置在工作目錄(WORKDIR)中,並且不是靜態的。解壓縮後的源文件位置取決於配置名稱(PN)和配方版本(PV) ,如下所示:

  203. # $ {WORKDIR} / $ {PN} - $ {PV}

  204. # 例如,假設一個名為poky的源目錄頂級文件夾和一個poky / build的默認構造目錄。

  205. 在這種情況下,構建系統用於保留db配方源文件解壓縮後的目錄如下:

  206. # poky / build / tmp / work / qemux86-poky-linux / db / 5.1.19-r3 / db-5.1.19

  207. fi

  208. if [ -f ${S}/profiles/network/network.conf ]; then

  209. install -m 0644 ${S}/profiles/network/network.conf ${D}/${sysconfdir}/bluetooth/

  210. fi

  211. if [ -f ${S}/profiles/input/input.conf ]; then

  212. install -m 0644 ${S}/profiles/input/input.conf ${D}/${sysconfdir}/bluetooth/

  213. fi

  214. if [ -f ${S}/src/main.conf ]; then

  215. install -m 0644 ${S}/src/main.conf ${D}/${sysconfdir}/bluetooth/

  216. fi

  217. if [ -f ${D}/${sysconfdir}/init.d/bluetooth ]; then

  218. sed -i -e 's#@LIBEXECDIR@#${libexecdir}#g' ${D}/${sysconfdir}/init.d/bluetooth

  219. fi

  220. # Install desired tools that upstream leaves in build area

  221. for f in ${NOINST_TOOLS} ; do

  222. install -m 755 ${B}/$f ${D}/${bindir}

  223. done

  224. }

  225. ALLOW_EMPTY_libasound-module-bluez = "1"

  226. PACKAGES =+ "libasound-module-bluez ${PN}-testtools ${PN}-obex ${PN}-noinst-tools"

  227. FILES_libasound-module-bluez = "${libdir}/alsa-lib/lib*.so ${datadir}/alsa"

  228. FILES_${PN} += "${libdir}/bluetooth/plugins/*.so ${base_libdir}/udev/ ${nonarch_base_libdir}/udev/ ${systemd_unitdir}/ ${datadir}/dbus-1"

  229. # 指定需要放入包中的目錄或文件的列表。

  230. # 使用FILES變量時,必須與生成包的包名結合使用。然後提供一個空格分隔的文件或路徑列表,用於標識要包含在生成包中的文件。例如:

  231. # FILES _ $ {PN} + =「$ {bindir} / mydir1 / $ {bindir} / mydir2 / myfile」

  232. # 1

  233. # 注意:

  234. # 當為FILES變量指定文件或路徑時,最好使用相對路徑。

  235. 例如,使用sysconfdir而不是/etc,或 {bindir}而不是/ usr / bin。您可以在源目錄中的meta / conf / bitbake.conf文件的頂部找到這些變量的列表。

  236. # 如果您提供的FILES變量中的一些文件是可編輯的,並且您知道它們不應該在軟件包管理系統(PMS)的軟件包更新過程中被覆蓋,您可以讓PMS識別這些文件,以便PMS不會覆蓋它們。

  237. 有關如何使PMS的識別這些文件,請參考CONFFILES變量。

  238. FILES_${PN}-dev += "\

  239. ${libdir}/bluetooth/plugins/*.la \

  240. ${libdir}/alsa-lib/*.la \

  241. "

  242. FILES_${PN}-obex = "${libexecdir}/bluetooth/obexd \

  243. ${exec_prefix}/lib/systemd/user/obex.service \

  244. ${datadir}/dbus-1/services/org.bluez.obex.service \

  245. "

  246. SYSTEMD_SERVICE_${PN}-obex = "obex.service"

  247. # 如果配方繼承了systemd類,那麼此變量為配方生成包的指定了systemd的服務名稱。

  248. 當您在配方中使用此文件時,請指定包名,以保證變量值應用到目標包上。下面是一個來自connman配方中的例子:

  249. # SYSTEMD_SERVICE _ $ {PN} =「connman.service」

  250. FILES_${PN}-testtools = "${libdir}/bluez/test/*"

  251. def get_noinst_tools_paths (d, bb, tools):

  252. s = list()

  253. bindir = d.getVar("bindir", True)

  254. for bdp in tools.split():

  255. f = os.path.basename(bdp)

  256. s.append("%s/%s" % (bindir, f))

  257. return "\n".join(s)

  258. FILES_${PN}-noinst-tools = "${@get_noinst_tools_paths(d, bb, d.getVar('NOINST_TOOLS', True))}"

  259. RDEPENDS_${PN}-testtools += "python python-dbus python-pygobject"

  260. # 列出包的運行時依賴關係(即其他程序包),依賴包必須先安裝才能使當前構建的程序包正常運行。

  261. 如果在構建過程中找不到此列表中的依賴包,構建將會失敗。

  262. # 當在配方中使用RDEPENDS變量時,說明當前配方的do_build任務取決於特定包。

  263. 下面以兩個名為「a」和「b」的配方為例,它們生成類似命名的IPK包。在此示例中,RDEPENDS語句顯示在「a」配方中:

  264. # RDEPENDS _ $ {PN} =「b」

  265. #

  266. # 這裡,RDEPENDS使得配方「a」的do_build任務取決於配方「b」的do_package_write_ipk任務。

  267. 這意味著當構建配方「a」時,「b」的包文件必須可用。更重要的是,以包管理器理解的方式,包「a」將被標記為依賴於包「b。

  268. # 在RDEPENDS中列出的包的名稱必須是其他包的名稱 - 它們不能是配方名稱。

  269. 雖然軟件包名稱和配方名稱通常匹配,但重要的是,您必須在RDEPENDS變量中提供軟件包名稱。

  270. 有關如何從配方創建軟件包的示例,請參考PACKAGES變量。

  271. # 因為RDEPENDS變量適用於正在構建的包,所以您應該始終使用帶有附加的包名稱的形式的變量名。

  272. 例如,假設您正在構建一個依賴於perl包的開發包。在這種情況下,您將使用以下RDEPENDS語句:

  273. # RDEPENDS _ $ {PN} -dev + =「perl」

  274. #

  275. # 在該示例中,RDEPENDS變量具有$ {PN} -dev包名稱作為變量名的一部分。

  276. # 附加到RDEPENDS變量的程序包,在通過類(如debian)重命名之前,其包名必需同PACKAGES命名空間中的名稱一致。

  277. # 在許多情況下,您不需要使用RDEPENDS顯式添加運行時的依賴包,因為配方會自動運行某些處理:

  278. # shlibdeps:如果運行時的程序包包含共享庫(.so),構建過程中將處理庫以及與其動態鏈接的其他庫,並在創建運行時的包時將這些庫添加到RDEPENDS。

  279. # pcdeps:如果程序包含有pkg-config文件,則構建過程中將使用此文件將條目添加到RDEPENDS變量以創建運行時的程序包。

  280. # OpenEmbedded構建系統使用的BitBake支持依賴指定版本的特性。

  281. 雖然語法因軟件包打包格式而異,但BitBake會隱藏這些差異。以下是使用RDEPENDS變量指定依賴軟件包版本的一般語法:

  282. # RDEPENDS _ $ {PN} =「package(operator version)」

  283. # 1

  284. # 對於operator,您可以指定以下內容:

  285. # =,<,>,<=,>=

  286. #

  287. # 例如,以下內容說明配方運行時依賴軟件包foo的1.2或更高版本:

  288. # RDEPENDS _ $ {PN} =「foo(> = 1.2)」

  289. #

  290. # 有關構建時依賴的內容,請參考DEPENDS變量

  291. SYSTEMD_SERVICE_${PN} = "bluetooth.service"

  292. INITSCRIPT_PACKAGES = "${PN}"

  293. # 包含初始化的軟件包列表。 如果有多個包,則應該使用帶有附加的包名稱的形式的變量名。

  294. # 只有配方繼承update-rc.d.bbclass,此變量才可使用。該變量是可選的且默認為值為PN。

  295. INITSCRIPT_NAME_${PN} = "bluetooth"

  296. # 安裝到$ {sysconfdir} /init.d的初始化腳本名。

  297. # 只有配方繼承update-rc.d.bbclass,此變量才可使用。 此變量是必需的。

  298. EXCLUDE_FROM_WORLD = "1"

  299. # 將當前配方從BitBake world 中排除。

  300. 在執行BitBake world期間,BitBake會定位,解析和構建在bblayers.conf配置文件中公開的每一層的配方。

  301. # 如果需要BitBake world不構建當前配方,請在配方中將EXCLUDE_FROM_WORLD變量設置為「1」。

  302. # 注意:

  303. # 如果有其他配方依賴於設置EXCLUDE_FROM_WORLD的值為1的配方,則此配方仍然可能被BitBake world構建。

  304. 將EXCLUDE_FROM_WORLD設置為1,僅確保配方未顯式添加到BitBake world的構建目標列表中。

  305. do_compile_ptest() {

  306. oe_runmake buildtests

  307. }

  308. do_install_ptest() {

  309. cp -r ${B}/unit/ ${D}${PTEST_PATH}

  310. rm -f ${D}${PTEST_PATH}/unit/*.o

  311. }

poky/meta/conf/bitbake.conf    + build/conf/local.conf定理了bb文件里面的路径引用

sysroot_descdir,yocto会自动把当前bb想要传递出去的头文件以及库文件放入此目录

recipe-sysroo,yocto会自动把当前bb DEPENDS的bb文件的sysroot_descdir文件夹里的头文件以及库文件拷贝到此目录

bitbake中bb文件的描述相关推荐

  1. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第47讲:PHP程序设计中的文件操作

    陈力:传智播客古代 珍宝币 泡泡龙游戏开发第47讲:PHP程序设计中的文件操作 描述:PHP程序设计语言中文件操作的函数很多,如何获取文件的信息,如果打开文件,如果关闭文件,读取文件,写入文件,复制文 ...

  2. 如何从 Git 存储库中删除文件?

    问: 如何从我的存储库中删除 "file1.txt"? 答1: huntsbot.com – 程序员副业首选,一站式外包任务.远程工作.创意产品分享订阅平台. 使用 git rm. ...

  3. bitbake.bb文件解析[转]

    SUMMARY = "Linux Bluetooth Stack Userland V5" # 用於打包系統(例如opkg,rpm或dpkg)的二進制包的(72個字符或更少)摘要. ...

  4. Yocto系列讲解[实战篇]44 - bb文件中函数实操演示(2)

    By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! ...

  5. Linux中文件描述符1,linux内核中的文件描述符(一)--基础知识简介

    原标题:linux内核中的文件描述符(一)--基础知识简介 Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123(http://blo ...

  6. Linux中的文件描述符与打开文件之间的关系

    1. 概述 在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件.目录文件.链接文件和设备文件.文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是 ...

  7. linux c中的文件描述符与打开文件之间的关系

    转载请说明出处:http://blog.csdn.net/cywosp/article/details/38965239 1. 概述     在Linux系统中一切皆可以看成是文件,文件又可分为:普通 ...

  8. Linux中对文件描述符的操作(FD_ZERO、FD_SET、FD_CLR、FD_ISSET

    在Linux中,内核利用文件描述符(File Descriptor)即文件句柄,来访问文件.文件描述符是非负整数.打开现存文件或新建文件时,内核会返回一个文件描述符.读写文件也需要使用文件描述符来指定 ...

  9. linux内核中的文件描述符(四)--fd的分配--get_unused_fd

    linux内核中的文件描述符(四)--fd的分配--get_unused_fd Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123( ...

最新文章

  1. message/maillog日志提示磁盘innode、io错误等,扫描磁盘很多坏道
  2. location.href请求设置头部header_Nginx 是如何处理 HTTP 头部的?
  3. APP里如何添加本地文本
  4. Windows开发的内功和招式
  5. 数据库的开发笔记-字典表
  6. resultset遍历取数据_数据放在哪?如何从数据库取数据?
  7. 微课|玩转Python轻松过二级:第3章课后习题解答1
  8. Ubuntu安装sysv-rc-conf配置开机启动服务
  9. 加拿大28历史开奖鸿蒙,本内特入选加拿大男篮集训名单,史上最水状元秀如今在何处?...
  10. Chrome您的连接不是私密连接,解决办法
  11. 深入理解深度学习中的【卷积】和 feature map
  12. storm the 少儿英语_米粒英语绘本课堂——The Snowstorm
  13. 最长递增子序列 两种做法
  14. NodeJS 微信公共号开发 - 响应微信发送的Token验证(山东数漫江湖)
  15. Gitlab首次首次使用步骤
  16. 用 8550 和 ULN2003 驱动小型直流电机正反转
  17. Uni-app小程序问题汇总
  18. 驾考科目二倒车入库技巧图解
  19. bootstrap实战项目总结 源码及知识点
  20. 水文预报中的确定性系数如何计算确定

热门文章

  1. Android列表ListView控件的使用
  2. 使用计算机辐射最大,台式电脑哪里辐射最大
  3. Android使用Google SMSRetrieverAPI监听短信
  4. Beat #39;Em Up Game Starter Kit (横版格斗游戏) cocos2d-x游戏源代码
  5. 计算机贴保密标识,保密标贴粘贴位置说明
  6. bls12 curve生成器,可生成ZCash sapling版本中所使用的BLS12-381曲线
  7. tomcat的startup里为什么有突然多出来了一行这个NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-
  8. Flink实战(九十三):数据倾斜(二)keyby 窗口数据倾斜的优化
  9. html行间距属性,css行间距属性
  10. java模板velocity,java模板引擎:velocity