[yocto] understanding recipes

jfabernathy jfabernathy at gmail.com
Thu Jan 26 13:32:28 PST 2012


On 01/26/2012 01:55 PM, Scott Garman wrote:
> On 01/26/2012 08:44 AM, jfabernathy wrote:
>> I'm trying to understand the concept of creating a recipe and having it
>> included in the build I do.
>>
>> For example, suppose I want to create the meta-intel/meta-cedartrail BSP
>> with the core-image-minimal image, but I wanted to include hello world
>> as shown in 3.1.2 Autotooled Package section of the Poky reference 
>> Manual.
>>
>> Where do I put the recipe file? I'm guessing a recipe-jfa directory at
>> the same level as the meta-cedartrail recipe-core, recipe-kernel,
>> recipe-graphic, recipe-bsp?
>
> Hi Jim,
>
> The best way to do this is to create your own layer, and keep all of 
> your customizations there.
>
> You'd put this in a directory, say meta-jfa with something like the 
> following:
>
> meta-jfa/
> meta-jfa/conf/layer.conf
> meta-jfa/recipes-jfa/helloworld/helloworld.bb
>
> where your layer.conf file would look like:
>
> # We have a conf and classes directory, add to BBPATH
> BBPATH := "${BBPATH}:${LAYERDIR}"
>
> # We have a packages directory, add to BBFILES
> BBFILES := "${BBFILES} ${LAYERDIR}/recipes-*/*/*.bb \
>             ${LAYERDIR}/recipes-*/*/*.bbappend"
>
> BBFILE_COLLECTIONS += "jfa"
> BBFILE_PATTERN_jfa := "^${LAYERDIR}/"
> BBFILE_PRIORITY_jfa = "5"
>
> Then point your build's bblayers.conf file to include the path to your 
> meta-jfa/ directory.
>
>>
>> I'm also assuming that helloworld.bb file would contain:
>>
>> DESCRIPTION = "GNU Helloworld application"
>> SECTION = "examples"
>> LICENSE = "GPLv2+"
>> LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
>> PR = "r0"
>>
>> SRC_URI = "${GNU_MIRROR}/hello/hello-${PV}.tar.gz"
>>
>> inherit autotools gettext
>>
>>
>> So where do the values of ${GNU_MIRROR|, and ${PV} get set correctly?
>
> Those examples are defined in the bitbake classes you have in your 
> base layers.
>
>> And what does the following line do or require me to do:
>>
>> LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
>
> This was answered in another post.
>
>> Is this all that is needed to get helloworld put into /usr/bin so it can
>> be executed at the command line when the image is booted?
>
> You'd also need to add the helloworld package to your image file. The 
> simplest way to do this is to add EXTRA_IMAGE_FEATURES += "helloworld" 
> in your build's local.conf file.
>
> I think the above should be accurate enough w/o testing it myself.
>
I got the layer created like you said, but the test had a fetch problem 
and it just locked up there. Had to control-C out of it.  Console below:

jim at ubuntu-x64:/build/mycdv-minimal$ bitbake helloworld
Loading cache: 100% 
|###########################################################| ETA:  00:00:00
Loaded 1037 entries from dependency cache.

OE Build Configuration:
BB_VERSION        = "1.13.3"
TARGET_ARCH       = "i586"
TARGET_OS         = "linux"
MACHINE           = "mycdv"
DISTRO            = "poky"
DISTRO_VERSION    = "1.1"
TUNE_FEATURES     = "m32 core2"
TARGET_FPU        = ""
meta
meta-yocto        = "edison:adcf8bf7b52460b94998438e8c2bf854cdec0a80"
meta-mycdv        = "edison:34478f24de65dd8de8a4c8b913a1458d82dac1fa"
meta-jfa          = "edison:adcf8bf7b52460b94998438e8c2bf854cdec0a80"

NOTE: Resolving any missing task queue dependencies
NOTE: Preparing runqueue
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
NOTE: Running task 514 of 693 (ID: 4, 
/home/jim/poky/meta-jfa/recipes-jfa/helloworld/helloworld.bb, do_fetch)
NOTE: package helloworld-1.0-r0: task do_fetch: Started
WARNING: Fetcher failure for URL: 'None'. Fetch command export 
HOME="/home/jim"; export SSH_AGENT_PID="1413"; export 
SSH_AUTH_SOCK="/tmp/keyring-2QW6yC/ssh"; export 
GIT_CONFIG="/build/mycdv-minimal/tmp/sysroots/x86_64-linux/usr/etc/gitconfig"; 
export 
PATH="/build/mycdv-minimal/tmp/sysroots/x86_64-linux/usr/bin/core2-poky-linux:/build/mycdv-minimal/tmp/sysroots/mycdv/usr/bin/crossscripts:/build/mycdv-minimal/tmp/sysroots/x86_64-linux/usr/sbin:/build/mycdv-minimal/tmp/sysroots/x86_64-linux/usr/bin:/build/mycdv-minimal/tmp/sysroots/x86_64-linux/sbin:/build/mycdv-minimal/tmp/sysroots/x86_64-linux//bin:/home/jim/poky/scripts:/home/jim/poky/bitbake/bin/:/home/jim/poky/scripts:/home/jim/poky/bitbake/bin/:/home/jim/poky/scripts:/home/jim/poky/bitbake/bin/:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/jim/poky/scripts"; 
/usr/bin/env wget -t 5 -q --passive-ftp --no-check-certificate -P 
/home/jim/yocto-downloads 'ftp://ftp.gnu.org/gnu/hello/hello-1.0.tar.gz' 
failed with signal 8, output:

  I don't see 1.0.tar on the ftp site. How do I control this?



> Scott
>





More information about the yocto mailing list