From patchwork Fri Dec 10 14:17:51 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: srctree and stamps Date: Fri, 10 Dec 2010 14:17:51 -0000 From: Ambrose, Martin X-Patchwork-Id: 49 Message-Id: To: "openembedded-devel@lists.openembedded.org" On Fri, Nov 19, 2010 at 20:01:28, Ambrose, Martin wrote: > I find that using the latest srctree the stamps aren't updated in the same fashion > as regular recipes. In the example below I build the srctree recipe (mypackage) and > then build an image depending on same. Even though the package is built just prior > the image build still processes several steps which seem redundant. > > I see some special handling of stamps in srctree.bbclass and wonder if this > is expected/desired behavior. > > Thanks for any help/pointers. First: sorry for the double post -- some transitory problem with our mail server. I found that the lack of expected stamps resulted in errors when building images with srctree recipes as run time dependencies. Since the do_populate_sysroot, among others, task stamp was not present it was run again. Various errors could occur depending on the nature of the recipe but I often saw * resolve_conffiles: Existing conffile /home/user/work/oe/arago-tmp/rootfs/my-image/etc/device_table is different from the conffile in the new package. The following patch to create the missing stamps is my resolution. Comments welcome. $ git diff classes Regards, Martin diff --git a/classes/srctree.bbclass b/classes/srctree.bbclass index 4884b62..2effb89 100644 --- a/classes/srctree.bbclass +++ b/classes/srctree.bbclass @@ -100,7 +100,7 @@ python () { # Manually run do_install & all of its deps python do_populate_sysroot_post () { from os.path import exists - from bb.build import exec_task, exec_func + from bb.build import exec_task, exec_func, make_stamp from bb import note stamp = d.getVar("STAMP", True) @@ -113,6 +113,7 @@ python do_populate_sysroot_post () { if not exists("%s.%s" % (stamp, task)): note("%s: executing task %s" % (d.getVar("PF", True), task)) exec_func(task, d) + make_stamp(task,d) rec_exec_task("do_populate_sysroot", set()) }