Quilt is a powerful tool that allows you to capture source code changes without having a clean source tree. This section outlines the typical workflow you can use to modify temporary source code, test changes, and then preserve the changes in the form of a patch all using Quilt.
Follow these general steps:
Find the Source Code: The temporary source code used by the OpenEmbedded build system is kept in the Build Directory. See the "Finding the Temporary Source Code" section to learn how to locate the directory that has the temporary source code for a particular package.
Change Your Working Directory:
You need to be in the directory that has the temporary source code.
That directory is defined by the
S
variable.
Create a New Patch:
Before modifying source code, you need to create a new patch.
To create a new patch file, use quilt new
as below:
$ quilt new my_changes.patch
Notify Quilt and Add Files: After creating the patch, you need to notify Quilt about the files you plan to edit. You notify Quilt by adding the files to the patch you just created:
$ quilt add file1.c file2.c file3.c
Edit the Files: Make your changes in the temporary source code to the files you added to the patch.
Test Your Changes:
Once you have modified the source code, the easiest way to
your changes is by calling the
do_compile
task as shown in the
following example:
$ bitbake -c compile -f name_of_package
The -f
or --force
option forces the specified task to execute.
If you find problems with your code, you can just keep editing and
re-testing iteratively until things work as expected.
do_clean
or
do_cleanall
tasks using BitBake (i.e.
bitbake -c clean name_of_package
and
bitbake -c cleanall name_of_package
).
Modifications will also disappear if you use the rm_work
feature as described in the
"Building an Image"
section of the Yocto Project Quick Start.
Generate the Patch: Once your changes work as expected, you need to use Quilt to generate the final patch that contains all your modifications.
$ quilt refresh
At this point, the my_changes.patch
file has all your edits made
to the file1.c
, file2.c
, and
file3.c
files.
You can find the resulting patch file in the patches/
subdirectory of the source (S
) directory.
Copy the Patch File:
For simplicity, copy the patch file into a directory named files
,
which you can create in the same directory that holds the recipe
(.bb
) file or the
append (.bbappend
) file.
Placing the patch here guarantees that the OpenEmbedded build system will find
the patch.
Next, add the patch into the
SRC_URI
of the recipe.
Here is an example:
SRC_URI += "file://my_changes.patch"
Increment the Recipe Revision Number:
Finally, don't forget to 'bump' the
PR
value in the recipe since the resulting packages have changed.