conan.tools.files
conan.tools.files.patch()
def patch(conanfile, base_path=None, patch_file=None, patch_string=None,
strip=0, fuzz=False, **kwargs):
Applies a diff from file (patch_file) or string (patch_string) in base_path directory. If base_path is not passed it is applied in the current directory.
- Parameters:
base_path: Base path where the patch should be applied.
patch_file: Patch file that should be applied.
patch_string: Patch string that should be applied.
strip: Number of folders to be stripped from the path.
output: Stream object.
fuzz: Should accept fuzzy patches.
kwargs: Extra parameters that can be added and will contribute to output information.
conan.tools.files.apply_conandata_patches()
def apply_conandata_patches(conanfile):
Applies patches stored in conanfile.conan_data
(read from conandata.yml
file). It will apply
all the patches under patches
entry that matches the given conanfile.version
. If versions are
not defined in conandata.yml
it will apply all the patches directly under patches
keyword.
Example of conandata.yml
without versions defined:
patches:
- patch_file: "patches/0001-buildflatbuffers-cmake.patch"
base_path: "source_subfolder"
- patch_file: "patches/0002-implicit-copy-constructor.patch"
base_path: "source_subfolder"
patch_type: backport
patch_source: https://github.com/google/flatbuffers/pull/5650
patch_description: Needed to build with modern clang compilers.
Example of conandata.yml
with different patches for different versions:
patches:
"1.11.0":
- patch_file: "patches/0001-buildflatbuffers-cmake.patch"
base_path: "source_subfolder"
- patch_file: "patches/0002-implicit-copy-constructor.patch"
base_path: "source_subfolder"
patch_type: backport
patch_source: https://github.com/google/flatbuffers/pull/5650
patch_description: Needed to build with modern clang compilers.
"1.12.0":
- patch_file: "patches/0001-buildflatbuffers-cmake.patch"
base_path: "source_subfolder"