Applying local patches after updating FreeBSD source

Maxim Khitrov max at
Tue Jan 24 13:39:58 UTC 2012

On Mon, Jan 23, 2012 at 2:13 PM, Maxim Khitrov <max at> wrote:
> On Mon, Jan 23, 2012 at 1:25 PM, Matthew Seaman
> <m.seaman at> wrote:
>> On 23/01/2012 18:03, Maxim Khitrov wrote:
>>> Hi all,
>>> When I need to apply a custom patch to a port, I can set EXTRA_PATCHES
>>> make variable in /usr/local/etc/ports.conf (when using portconf), and
>>> the patch will be automatically applied whenever that port is built.
>>> Is there equivalent functionality for building FreeBSD world and
>>> kernel?
>>> When I run 'make update' in /usr/src, csup overwrites all local
>>> changes. There is a LOCAL_PATCHES variable, but it seems to apply only
>>> to 'make release'.
>>> If possible, I would like to avoid writing custom scripts for updating
>>> and building world, because at some point I will forget to use the
>>> script and build everything without the patches. How can I preserve
>>> the current behavior of running 'make update && make buildworld
>>> buildkernel' while automatically applying custom patches in between?
>> Check the system sources out of svn?
>> This way, you can apply your patches and the result is automatically
>> merged when you update the sources by 'svn up' -- unless there has been
>> a conflicting commit to the same file, when you may be required to
>> intervene manually.
> I don't have subversion installed on any of my servers and that's a
> dependency that I would prefer to do without.
> Are there any changes I could make to /etc/make.conf that would allow
> me to execute an arbitrary command after the 'update' task is
> finished?
> - Max

For anyone else that might be interested in doing this, the solution
is to create a shell script that is executed instead of csup when
running 'make update'. The script to execute is specified in


I'm pretty sure that this is safe to do. Just in case, the script
checks the current working directory to make sure that patches are
only applied when updating /usr/src. You could also perform this check
in make.conf.

The script template is below. Feel free to adapt it for your own needs.


/usr/bin/csup "$@" || exit
test "`pwd`" = '/usr/obj/usr/src' || exit 0

cd /usr/src
echo '--------------------------------------------------------------'
echo '>>> Applying local patches'
echo '--------------------------------------------------------------'

# <your code here>

- Max

More information about the freebsd-questions mailing list