我与Yocto项目合作很多,而且常见的挑战是确定rootf上包含文件的原因(或从哪个配方开始)。这可以有希望从构建系统的环境,日志和扩展中获得。元数据。理想情况下,一组命令允许将文件链接回源(即配方)。
我通常的策略是对元数据执行搜索(例如grep -R filename ../layers/*
)并在互联网上搜索所述文件名以查找可能负责任的食谱的线索。但是,这并不总是非常有效。在许多情况下,文件名未在配方中明确说明。此外,在许多情况下,文件名由多个配方提供,这导致额外的工作以找到最终提供它的配方。当然还有很多其他线索可以找到答案。无论如何,当构建系统看起来应该有足够的信息来解决答案时,这种调查通常非常费力。
答案 0 :(得分:19)
这是oe-pkgdata-util
脚本及其子命令find-path
的确切用例。该脚本是openembedded-core的一部分。
请参阅此示例(在OE构建环境中执行,即bitbake
有效):
tom@pc:~/oe/build> oe-pkgdata-util find-path /lib/ld-2.24.so
glibc: /lib/ld-2.24.so
你可以清楚地看到这个库属于glibc配方。
oe-pkgdata-util
有更多有用的子命令来查看有关包和食谱的信息,值得查看--help
。
答案 1 :(得分:3)
如果您更喜欢图形演示文稿,Toaster Web UI还会向您显示此信息以及相关信息。
答案 2 :(得分:1)
为每个食谱部署的候选文件放在每个$ WORKDIR / image
中所以你可以cd到
var w = 500;
var h = 300;
var dataset = {
nodes:[
{name:"Adam"},
{name:"Bob"},
{name:"Carrie"},
{name:"Donovan"},
{name:"Edward"},
{name:"Felicity"},
{name:"George"},
{name:"Hannah"},
{name:"Iris"},
{name:"Jerry"}
],
edges:[
{source: 0, target: 1, distance: 200},
{source: 0, target: 1, distance: 200},
{source: 0, target: 3, distance: 100},
{source: 0, target: 4, distance: 200},
{source: 1, target: 5, distance: 200}
]
};
var force = d3.layout.force()
.nodes(dataset.nodes)
.links(dataset.edges)
.size([w, h])
.linkDistance(function(link) { return link.distance })
.charge([-150])
.start();
var colors = d3.scale.category10();
var svg = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h);
var edges = svg.selectAll("line")
.data(dataset.edges)
.enter()
.append("line")
.style("stroke", "#ccc")
.style("stroke-width", 5);
var nodes = svg.selectAll("circle")
.data(dataset.nodes)
.enter()
.append("circle")
.attr("r", 10)
.style("fill", function(d, i){
return colors(i);
})
.call(force.drag);
var label = svg.selectAll(".mytext")
.data(dataset.nodes)
.enter()
.append("text")
.text(function (d) { return d.name; })
.style("text-anchor", "middle")
.style("fill", "#555")
.style("font-family", "Arial")
.style("font-size", 12);
force.on("tick", function(){
edges.attr("x1", function(d){ return d.source.x; })
.attr("y1", function(d){ return d.source.y; })
.attr("x2", function(d){ return d.target.x; })
.attr("y2", function(d){ return d.target.y; });
nodes.attr("cx", function(d){ return d.x; })
.attr("cy", function(d){ return d.y; });
label.attr("x", function(d){ return d.x; })
.attr("y", function (d) {return d.y - 10; });
});
并执行
$ cd ${TMPDIR}/work/${MULTIMACH_TARGET_SYS}
从结果中你应该能够推断部署这种文件的配方的$ {PN}。
例如:
$ find . -path '*/image/*/fileYouAreLookingFor'