Openembedded Core Discussions
 help / color / mirror / Atom feed
From: Mark Hatle <mark.hatle@windriver.com>
To: <openembedded-core@lists.openembedded.org>
Subject: Re: How to reuse code in oe-core environment
Date: Wed, 29 Jun 2011 19:32:56 -0500	[thread overview]
Message-ID: <4E0BC438.503@windriver.com> (raw)
In-Reply-To: <BANLkTimEROj5AcR+eYjLVFH2Sh3+0sB04A@mail.gmail.com>

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.



  reply	other threads:[~2011-06-30  0:36 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 [this message]
2011-06-30  0:42     ` Andreas Mueller
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=4E0BC438.503@windriver.com \
    --to=mark.hatle@windriver.com \
    --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