[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