From: Richard Purdie <rpurdie@rpsys.net>
To: openembedded-devel@openembedded.org
Subject: Re: Revisiting bitbake stamp handling
Date: Wed, 19 Sep 2007 00:34:51 +0100 [thread overview]
Message-ID: <1190158491.6159.93.camel@localhost.localdomain> (raw)
In-Reply-To: <46F0077F.3050807@student.utwente.nl>
On Tue, 2007-09-18 at 19:14 +0200, Koen Kooi wrote:
> For a number of features in OE (e.g packaged-staging, rm_work) a change to bitbake stamp
> handling would make things a lot easier. As I understand it bitbake currently does for
> 'bitbake foo -c compile':
>
> if(dependency stamps are missing OR depency stamps have newer mtime) then start from scratch
>
> For rm_work we want to remove the do_unpack upto do_install stamps, but leave do_fetch and
> do_package_write* and for packaged-staging we want to only create a do_populate_staging
> stamps. So 'bitbake foo -c compile' would only do:
>
> if(depency stamps have newer mtime) then start from scratch
>
> this has implications for do_clean and do_rebuild, and possibly other things. Since this
> looks to good to be true, I want to know what else might break and how we could solve that
> when implementing this. This just a gedankenexperiment for now, so bitbake hackers can
> relax now :)
When you type bitbake strace, bitbake splits this into queue of tasks.
This might be for example:
1. strace.do_fetch
2. strace.do_unpack
3. strace.do_patch
4. strace.do_configure
5. strace.do_compile
6. etc.
Say you "bitbake strace -c compile":
* Bitbake looks at step 1. Does it need to build it? If the stamp
doesn't exist, yes it does. If the stamp exists, it checks dependency
stamps (there are none).
* Bitbake looks at step 2. Does it need to build it? If the stamp
doesn't exist, yes it does. If the stamp exists, it checks dependency
stamps.
* etc.
The logic you propose above simply breaks this and its fundamental to
the way bitbake currently works.
I guess what you propose is bitbake does this backwards. Assuming you
"bitbake strace -c compile":
* Look at step 5. Does it need to build it? If the stamp exists, and
any present dependency stamps are valid and older [repeat for all
present stamps], no, else yes.
* No further processing
This needs two changes:
a) stamps are checked before we start processing the queue
b) stamps are checked on a global basis (cross PN)
both of which are fairly major changes.
The breakage:
Say you're using rm_work and want to rebuild strace for the image. You
run "bitbake strace -c compile -f". A subsequent "bitbake someimage"
will not cause strace to install/package/stage or get included in the
image. Broken and one of the things you wanted to fix!
Say you want to trigger a reinstall of all packages like the recent
pkgmaps change. How do you do it? In the case without rm_work you could
touch all a dependent task like compile to trigger the install (ugly),
or remove *every* install task stamp and *every* stamp which depends on
install (near impossible). With rm_work, you're screwed basically.
So I really think this is the wrong tree to bark up...
Regards,
Richard
next prev parent reply other threads:[~2007-09-18 23:38 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-09-18 17:14 Revisiting bitbake stamp handling Koen Kooi
2007-09-18 23:34 ` Richard Purdie [this message]
2007-09-19 3:29 ` Koen Kooi
2007-09-19 8:00 ` Richard Purdie
2007-09-19 16:11 ` pHilipp Zabel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1190158491.6159.93.camel@localhost.localdomain \
--to=rpurdie@rpsys.net \
--cc=openembedded-devel@lists.openembedded.org \
--cc=openembedded-devel@openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.