12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- // -*- mode:doc -*- ;
- [[customize-patches]]
- === Adding project-specific patches
- It is sometimes useful to apply 'extra' patches to packages - on top of
- those provided in Buildroot. This might be used to support custom
- features in a project, for example, or when working on a new
- architecture.
- The +BR2_GLOBAL_PATCH_DIR+ configuration option can be used to specify
- a space separated list of one or more directories containing package
- patches. By specifying multiple global patch directories, a user could
- implement a layered approach to patches. This could be useful when a
- user has multiple boards that share a common processor architecture.
- It is often the case that a subset of patches for a package need to be
- shared between the different boards a user has. However, each board
- may require specific patches for the package that build on top of the
- common subset of patches.
- For a specific version +<packageversion>+ of a specific package
- +<packagename>+, patches are applied from +BR2_GLOBAL_PATCH_DIR+ as
- follows:
- . For every directory - +<global-patch-dir>+ - that exists in
- +BR2_GLOBAL_PATCH_DIR+, a +<package-patch-dir>+ will be determined as
- follows:
- +
- * +<global-patch-dir>/<packagename>/<packageversion>/+ if the
- directory exists.
- +
- * Otherwise, +<global-patch-dir>/<packagename>+ if the directory
- exists.
- . Patches will then be applied from a +<package-patch-dir>+ as
- follows:
- +
- * If a +series+ file exists in the package directory, then patches are
- applied according to the +series+ file;
- +
- * Otherwise, patch files matching +<packagename>-*.patch+
- are applied in alphabetical order.
- So, to ensure they are applied in the right order, it is highly
- recommended to name the patch files like this:
- +<packagename>-<number>-<description>.patch+, where +<number>+
- refers to the 'apply order'.
- For information about how patches are applied for a package, see
- xref:patch-apply-order[]
- The +BR2_GLOBAL_PATCH_DIR+ option is the preferred method for
- specifying a custom patch directory for packages. It can be used to
- specify a patch directory for any package in buildroot. It should also
- be used in place of the custom patch directory options that are
- available for packages such as U-Boot and Barebox. By doing this, it
- will allow a user to manage their patches from one top-level
- directory.
- The exception to +BR2_GLOBAL_PATCH_DIR+ being the preferred method for
- specifying custom patches is +BR2_LINUX_KERNEL_PATCH+.
- +BR2_LINUX_KERNEL_PATCH+ should be used to specify kernel patches that
- are available at an URL. *Note:* +BR2_LINUX_KERNEL_PATCH+ specifies kernel
- patches that are applied after patches available in +BR2_GLOBAL_PATCH_DIR+,
- as it is done from a post-patch hook of the Linux package.
- An example directory structure for where a user has multiple
- directories specified for +BR2_GLOBAL_PATCH_DIR+ may look like this:
- -----
- board/
- +-- common-fooarch
- | +-- patches
- | +-- linux
- | | +-- linux-patch1.patch
- | | +-- linux-patch2.patch
- | +-- uboot
- | +-- foopkg
- +-- fooarch-board
- +-- patches
- +-- linux
- | +-- linux-patch3.patch
- +-- uboot
- +-- foopkg
- -----
- If the user has the +BR2_GLOBAL_PATCH_DIR+ configuration option set as
- follows:
- -----
- BR2_GLOBAL_PATCH_DIR="board/common-fooarch/patches board/fooarch-board/patches"
- -----
- Then the patches would applied as follows for the Linux kernel:
- . board/common-fooarch/patches/linux/linux-patch1.patch
- . board/common-fooarch/patches/linux/linux-patch2.patch
- . board/fooarch-board/patches/linux/linux-patch3.patch
|