// -*- mode:doc -*- ; // vim: set syntax=asciidoc: === Adding project-specific patches and hashes [[customize-patches]] ==== Providing extra 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. For a specific version ++ of a specific package ++, patches are applied from +BR2_GLOBAL_PATCH_DIR+ as follows: . For every directory - ++ - that exists in +BR2_GLOBAL_PATCH_DIR+, a ++ will be determined as follows: + * +///+ if the directory exists. + * Otherwise, +/+ if the directory exists. . Patches will then be applied from a ++ as follows: + * If a +series+ file exists in the package directory, then patches are applied according to the +series+ file; + * Otherwise, patch files matching +*.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: +-.patch+, where ++ 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 a 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. [[customize-hashes]] ==== Providing extra hashes Buildroot bundles a xref:adding-packages-hash[list of hashes] against which it checks the integrity of the downloaded archives, or of those it generates locally from VCS checkouts. However, it can only do so for the known versions; for packages where it is possible to specify a custom version (e.g. a custom version string, a remote tarball URL, or a VCS repository location and changeset), Buildroot can't carry hashes for those. For users concerned with the integrity of such downloads, it is possible to provide a list of hashes that Buildroot can use to check arbitrary downloaded files. Those extra hashes are looked up similarly to the extra patches (above); for each directory in +BR2_GLOBAL_PATCH_DIR+, the first file to exist is used to check a package download: * +///.hash+ * +//.hash+ The +utils/add-custom-hashes+ script can be used to generate these files.