Files
infix/doc/override-package.md
T

79 lines
2.3 KiB
Markdown

Package Override
================
This guide demonstrates how the `local.mk` file is utilized to override
a Buildroot package, which can be very useful when fixing bugs, adding
features, or evaluating new releases of packages. As an example we use
`tcpdump` to illustrate this process.
> [!TIP]
> For a comprehensive guide to utilizing Buildroot during development,
> including the `<pkg>_OVERRIDE_SRCDIR` mechanism, shown below, please
> see [Using Buildroot during development][1] in the official docs.
Setup
-----
Since the `output/` directory is often wiped for rebuilds, make sure you
keep the file `local.mk` in the top directory and only symlink it to your
build directory:
~$ cd infix/
~/infix(main)$ touch local.mk
~/infix/output(main)$ ln -s ../local.mk .
~/infix/output(main)$ cd ..
Override
--------
Now edit the file:
~/infix(main)$ editor local.mk
Add an override for `tcpdump`. The file is a Makefile snippet so you
can add a lot of things. Comment out lines with the UNIX comment `#`
character if needed:
```
TCPDUMP_OVERRIDE_SRCDIR = /path/to/tcpdump/repo
```
Building
--------
The execution of `make tcpdump-rebuild all` triggers a process where
Buildroot synchronizes the tcpdump source code from the specified
override directory to `output/build/tcpdump-custom`, followed by the
rebuilding of the entire project.
```
~/infix$(main)$ make tcpdump-rebuild all
```
Buildroot follows a process of downloading and processing tarballs:
extraction, configuration, compilation, and installation. The source
for each package is extracted to a temporary build directory:
output/build/<package>-<version> # e.g., tcpdump-4.99.4
Let's have a look at what we got:
```
~/infix$(main)$ ll /output/build/ | grep tcpdump
drwxr-xr-x 7 group user 20480 Nov 10 18:26 tcpdump-4.99.4/
drwxr-xr-x 7 group user 12288 Nov 10 18:28 tcpdump-custom/
```
As long as your local override is in place, Buildroot will use your
custom version.
> [!NOTE]
> Remember, the build directory is ephemeral, so be careful to change
> any of the files therein. It can be useful though during debugging,
> but just make sure to learn the difference between the various
> Buildroot commands to build, clean, reconfigure, etc.
[1]: https://buildroot.org/downloads/manual/manual.html#_using_buildroot_during_development