Openembedded Core Discussions
 help / color / mirror / Atom feed
From: Andreas Mueller <schnitzeltony@gmx.de>
To: "Patches and discussions about the oe-core layer"
	<openembedded-core@lists.openembedded.org>
Subject: Re: How to reuse code in oe-core environment
Date: Thu, 30 Jun 2011 02:42:42 +0200	[thread overview]
Message-ID: <201106300242.43185.schnitzeltony@gmx.de> (raw)
In-Reply-To: <4E0BC438.503@windriver.com>

On Thursday, June 30, 2011 02:32:56 AM Mark Hatle wrote:
> On 6/29/11 6:59 PM, Chris Larson wrote:
> > On Wed, Jun 29, 2011 at 4:02 PM, Andreas Mueller <schnitzeltony@gmx.de> 
wrote:
> >> foo() {
> >> 
> >>        # code to reuse
> >> 
> >> }
> >> 
> >> and called foo from several recipes. In oe-core the run.* scripts are
> >> much more stripped of unnecessary.  All the code included by 'require'
> >> seems to miss, so the function foo() will not be found.
> >> 
> >> My searches for examples did not lead to a hook so what is the suggested
> >> solution for reusing code for multiple recipes in oe-core?
> > 
> > The require doesn't have to do with anything. bitbake emits only the
> > functions which get called somewhere from the task being run. It
> > tracks what variables reference what other variables. If you call a
> > shell function from another shell function, it tracks this, and
> > realizes that both need to be emitted. Either you're doing something
> > wrong, or you're doing something in a way that bitbake can't track.
> > There's a variable flag you can set to explicitly add variable
> > dependencies.
> 
> There is an example of how to work around this in the rootfs_rpm.bbclass.. 
> It's a bit odd, but it has to do with the way the function is called:
> 
>         # Workaround so the parser knows we need the resolve_package
> function! if false ; then
>                 resolve_package_rpm foo ${RPMCONF_TARGET_BASE}.conf || true
>         fi
> 
> 
> ....
> 
>         pkg_name=$(resolve_package_rpm $pkg-locale-$lang
> ${RPMCONF_TARGET_BASE}.conf)
> 
> 
> So if the function is called within a subshell, the parser doesn't appear
> to know it's there.. so you have to reference it in the function somewhere
> (the if false works well for this) in order for it to be available to
> call.
I'll try to understand that tomorrow zzzzz

Andreas



  reply	other threads:[~2011-06-30  0:44 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-29 23:02 How to reuse code in oe-core environment Andreas Mueller
2011-06-29 23:57 ` Khem Raj
2011-06-29 23:59 ` Chris Larson
2011-06-30  0:32   ` Mark Hatle
2011-06-30  0:42     ` Andreas Mueller [this message]
2011-06-30  0:39   ` Andreas Mueller

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=201106300242.43185.schnitzeltony@gmx.de \
    --to=schnitzeltony@gmx.de \
    --cc=openembedded-core@lists.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox