Andrew Geissler | 517393d | 2023-01-13 08:55:19 -0600 | [diff] [blame] | 1 | .. SPDX-License-Identifier: CC-BY-SA-2.0-UK |
| 2 | |
| 3 | Finding Temporary Source Code |
| 4 | ***************************** |
| 5 | |
| 6 | You might find it helpful during development to modify the temporary |
| 7 | source code used by recipes to build packages. For example, suppose you |
| 8 | are developing a patch and you need to experiment a bit to figure out |
| 9 | your solution. After you have initially built the package, you can |
| 10 | iteratively tweak the source code, which is located in the |
| 11 | :term:`Build Directory`, and then you can force a re-compile and quickly |
| 12 | test your altered code. Once you settle on a solution, you can then preserve |
| 13 | your changes in the form of patches. |
| 14 | |
| 15 | During a build, the unpacked temporary source code used by recipes to |
| 16 | build 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 |
| 18 | defined in the ``meta/conf/bitbake.conf`` configuration file in the |
| 19 | :term:`Source Directory`:: |
| 20 | |
| 21 | S = "${WORKDIR}/${BP}" |
| 22 | |
| 23 | You should be aware that many recipes override the |
| 24 | :term:`S` variable. For example, recipes that fetch their source from Git |
| 25 | usually 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 | |
| 35 | The path to the work directory for the recipe |
| 36 | (:term:`WORKDIR`) is defined as |
| 37 | follows:: |
| 38 | |
| 39 | ${TMPDIR}/work/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR} |
| 40 | |
| 41 | The 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 | |
| 59 | As 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 |
| 62 | recipe is named ``foo_1.3.0.bb``. In this case, the work directory the |
| 63 | build 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 | |