解包后让yocto下载更多源
Make yocto download more sources after unpacking
我有一个食谱,它通过 SRC_URI
变量引用源 A。但是在源 A 内部有一个 link 到另一个源 B。
我想让 Yocto 下载并解压源 A。然后我将从源 A 解析源 B 的 URL,并告诉 Yocto 返回下载和解压源 B。
这可能吗?
源 A 的构建过程会下载源 B 本身,但我希望 Yocto 将源 B 添加到它的 DL_DIR
以避免为下一个构建再次下载它。
您可以使用 Bitbake 的 fetcher 来获取更多资源。
请务必注意,即使您将 ;rev=xxx
之类的内容附加到 URL,获取程序仍将使用 SRCREV
变量,这一点很重要。所以你应该将 SRCREV
设置为 None
或 "AUTOINC"
.
python do_loadSources() {
# Backup SRCREV
mySrcRev = d.getVar('SRCREV')
d.setVar('SRCREV', None)
# Somehow determine source URL
sourceUrl = ...
# Create fetcher
fetcher = bb.fetch2.Fetch([ sourceUrl ], d)
# Download
fetcher.download()
# Get path of downloaded sources
fetcher.localpath(sourceUrl)
# Use the downloaded sources
...
# Restore SRCREV
d.setVar('SRCREV', mySrcRev)
}
addtask do_loadSources after do_configure before do_compile
我有一个食谱,它通过 SRC_URI
变量引用源 A。但是在源 A 内部有一个 link 到另一个源 B。
我想让 Yocto 下载并解压源 A。然后我将从源 A 解析源 B 的 URL,并告诉 Yocto 返回下载和解压源 B。
这可能吗?
源 A 的构建过程会下载源 B 本身,但我希望 Yocto 将源 B 添加到它的 DL_DIR
以避免为下一个构建再次下载它。
您可以使用 Bitbake 的 fetcher 来获取更多资源。
请务必注意,即使您将 ;rev=xxx
之类的内容附加到 URL,获取程序仍将使用 SRCREV
变量,这一点很重要。所以你应该将 SRCREV
设置为 None
或 "AUTOINC"
.
python do_loadSources() {
# Backup SRCREV
mySrcRev = d.getVar('SRCREV')
d.setVar('SRCREV', None)
# Somehow determine source URL
sourceUrl = ...
# Create fetcher
fetcher = bb.fetch2.Fetch([ sourceUrl ], d)
# Download
fetcher.download()
# Get path of downloaded sources
fetcher.localpath(sourceUrl)
# Use the downloaded sources
...
# Restore SRCREV
d.setVar('SRCREV', mySrcRev)
}
addtask do_loadSources after do_configure before do_compile