[yocto] Documentation on WORKDIR

Martin Jansa martin.jansa at gmail.com
Fri Nov 29 05:41:27 PST 2013


On Fri, Nov 29, 2013 at 09:02:47AM +0000, Guenzel, Robert wrote:
> Hello,
> 
> I am currently starting to work with Yocto and I am having a bit of a hard time to figure out how the two documented versions of WORKDIR come into existence.
> 
> The doc states:
> """
> For packages that are not dependent on a particular machine, WORKDIR is defined as follows:
>    ${TMPDIR}/work/${PACKAGE_ARCH}-poky-${TARGET_OS}/${PN}/${PV}-${PR}
> [...]
> For packages that are dependent on a particular machine, WORKDIR is defined slightly different:
>   ${TMPDIR}/work/${MACHINE}-poky-${TARGET_OS}/${PN}/${PV}-${PR}
> """
> 
> Now I tried to figure out how a package becomes machine dependent, and I could not find this.
> After poking around in already existing layers and recipes, I think that the doc is misleading.
> 
> It appears to me that only one version exists, which is:
>   ${TMPDIR}/work/${PACKAGE_ARCH}-poky-${TARGET_OS}/${PN}/${PV}-${PR}

The correct definition is:
bitbake.conf:BASE_WORKDIR ?= "${TMPDIR}/work"
bitbake.conf:WORKDIR = "${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}"
bitbake.conf:MULTIMACH_TARGET_SYS = "${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}"


> 
> And in case a package is machine specific, one overrides the default PACKAGE_ARCH with (the undocumented)
> variable MACHINE_ARCH like this:
>   PACKAGE_ARCH="${MACHINE_ARCH}"
> (where I believe that MACHINE_ARCH is equal to MACHINE??)

For machines with '-' it isn't.
bitbake.conf:MACHINE_ARCH = "${@[d.getVar('TUNE_PKGARCH', True), d.getVar('MACHINE', True)][bool(d.getVar('MACHINE', True))].replace('-', '_')}"

> Which will then lead to a WORKDIR that looks like ${TMPDIR}/work/${MACHINE}-poky-${TARGET_OS}/${PN}/${PV}-${PR}
> (but still is ${TMPDIR}/work/${PACKAGE_ARCH}-poky-${TARGET_OS}/${PN}/${PV}-${PR}).
> 
> (there are some bbclasses that do this, and there are some recipes that do it).

When the recipe is something MACHINE-specific or depends on something
MACHINE-specific it assigns to PACKAGE_ARCH

PACKAGE_ARCH = "${MACHINE_ARCH}"

In some cases it's done automagically, when you have file://foo in
SRC_URI and foo file is taken from path which contains MACHINE, e.g.
when building pointercal recipe for qemux86, this file will be used:
./recipes-bsp/pointercal/pointercal/qemux86/pointercal
and base.bbclass will detect it and change PACKAGE_ARCH to MACHINE_ARCH
if it isn't already MACHINE_ARCH.

> Being pretty new to Yocto, I have the feeling that I simply got it all wrong, so before posting bugs or something, I'd wanted to know
> if anybody could shed light on this.
> 
> thanks and best regards
>   Robert
> 

> _______________________________________________
> yocto mailing list
> yocto at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/yocto


-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20131129/b1419006/attachment.pgp>


More information about the yocto mailing list