1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK 2 3Finding Temporary Source Code 4***************************** 5 6You might find it helpful during development to modify the temporary 7source code used by recipes to build packages. For example, suppose you 8are developing a patch and you need to experiment a bit to figure out 9your solution. After you have initially built the package, you can 10iteratively tweak the source code, which is located in the 11:term:`Build Directory`, and then you can force a re-compile and quickly 12test your altered code. Once you settle on a solution, you can then preserve 13your changes in the form of patches. 14 15During a build, the unpacked temporary source code used by recipes to 16build packages is available in the :term:`Build Directory` as defined by the 17:term:`S` variable. Below is the default value for the :term:`S` variable as 18defined in the ``meta/conf/bitbake.conf`` configuration file in the 19:term:`Source Directory`:: 20 21 S = "${WORKDIR}/${BP}" 22 23You should be aware that many recipes override the 24:term:`S` variable. For example, recipes that fetch their source from Git 25usually set :term:`S` to ``${WORKDIR}/git``. 26 27.. note:: 28 29 The :term:`BP` represents the base recipe name, which consists of the name 30 and version:: 31 32 BP = "${BPN}-${PV}" 33 34 35The path to the work directory for the recipe 36(:term:`WORKDIR`) is defined as 37follows:: 38 39 ${TMPDIR}/work/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR} 40 41The actual directory depends on several things: 42 43- :term:`TMPDIR`: The top-level build 44 output directory. 45 46- :term:`MULTIMACH_TARGET_SYS`: 47 The target system identifier. 48 49- :term:`PN`: The recipe name. 50 51- :term:`EXTENDPE`: The epoch --- if 52 :term:`PE` is not specified, which is 53 usually the case for most recipes, then :term:`EXTENDPE` is blank. 54 55- :term:`PV`: The recipe version. 56 57- :term:`PR`: The recipe revision. 58 59As an example, assume a Source Directory top-level folder named 60``poky``, a default :term:`Build Directory` at ``poky/build``, and a 61``qemux86-poky-linux`` machine target system. Furthermore, suppose your 62recipe is named ``foo_1.3.0.bb``. In this case, the work directory the 63build system uses to build the package would be as follows:: 64 65 poky/build/tmp/work/qemux86-poky-linux/foo/1.3.0-r0 66 67