BuildRoot自定义HelloWorld补丁未生效问题求助
Let’s break down what’s going wrong with your patch setup and get it working properly:
1. Use the Correct Patch Variable Name
You’re using HELLOWORLD_PATCH (singular) in your helloworld.mk, but BuildRoot’s generic-package infrastructure expects the plural version HELLOWORLD_PATCHES. The singular variable isn’t recognized, so BuildRoot is completely skipping your patch.
Update that line in your .mk file:
HELLOWORLD_PATCHES = 18-helloworld-testing.patch
2. Fix Version/Source Filename Mismatch
Your package version is set to 1.0.0, but your source tarball is helloworld-1.1.tar.gz. These mismatched versions confuse BuildRoot when it looks for patches associated with the package. Align them to be consistent:
HELLOWORLD_VERSION = 1.1 HELLOWORLD_SOURCE = helloworld-$(HELLOWORLD_VERSION).tar.gz
Using the variable for the source filename also makes future version updates easier.
3. Validate Your Patch Directory Structure
When you set a global patch directory via make menuconfig, BuildRoot looks for patches in a strict path structure:
<global-patch-dir>/<package-name>/<package-version>/
Double-check your path matches exactly:
- Package name must be all lowercase
helloworld(matching your.mkfilename and config option) - Version must match the corrected
HELLOWORLD_VERSION(1.1, not 1.0.0) - Patch filename must match what you’ve defined in
HELLOWORLD_PATCHES
Your final patch path should be:
/home/Downloads/buildroot/buildroot-2017.11/patches/helloworld/1.1/18-helloworld-testing.patch
4. Clean Existing Build Files
Before re-running make, clean the HelloWorld build directory to ensure BuildRoot starts fresh (it won’t re-apply patches if the source was already extracted without them):
make helloworld-dirclean
Then run make again—this time BuildRoot will re-extract the source and apply your patch.
5. (Optional) Explicit Patch Path
If you want to avoid relying on the global patch directory, you can specify the full path directly in your .mk file. This removes any ambiguity about where BuildRoot should look:
HELLOWORLD_PATCHES = $(TOPDIR)/patches/helloworld/1.1/18-helloworld-testing.patch
After making these changes, your patch should be applied to the source in output/build/helloworld-1.1 during the build process.
内容的提问来源于stack exchange,提问作者TamiL

