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@yoctoproject.org > https://lists.yoctoproject.org/listinfo/yocto -- Martin 'JaMa' Jansa jabber: martin.ja...@gmail.com
signature.asc
Description: Digital signature
_______________________________________________ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto