Generating a Patch Using diff
1. Extract the Original Source
Ensure you have a pristine copy of the original source for comparison. You can extract it from the tarball in the dl directory:
tar -xf dl/<package>-<version>.tar.gz -C /tmp/
This will create a directory like /tmp/<package>-<version>/.
Using buildroot’s mechanism
Clean the build directory and apply current patches of buildroot
make <pkg>-dirclean # Remove <pkg> build directory
make <pkg>-extract # Extract <pkg> sources
make <pkg>-patch # Apply patches to <pkg> (Optional)
cp -r output/build/<package> /tmp/
2. Generate the Patch
Use the diff command to create a unified diff between the original and modified sources:
diff -Naur /tmp/<package>/ output/build/<package>/ > 0001-custom-changes.patch
# OR
git diff --no-index /tmp/<package> output/build/<package > 0001-custom-changes.patch
-N: Treat absent files as empty.-a: Treat all files as text.-u: Output in unified format.-r: Recursively compare directories.
3. Place the Patch in Buildroot’s Package Directory
Move the generated patch to the appropriate location within Buildroot:
mv 0001-custom-changes.patch package/<package>/
Buildroot automatically applies patches in this directory during the build process.
4. Rebuild the Package
To apply the patch and rebuild the package:
make <package>-rebuild
Considerations
- Patch Naming: Prefix your patch files with numbers (e.g.,
0001-,0002-) to ensure they are applied in the correct order. - Patch Description: It’s good practice to include a header in your patch file describing the changes and their purpose.