(!) Current status: Completed. pkg_patch.tbz

Additional information:

Brainstorming for the pkg_patch project

Per SoC proposal comment, the scope of the project is reduced not to deal with the "ABI stability" aspect of the ports tree, though it will probably be necessary to make binary patches actually usable.

The project contains these general steps:

  1. A tool to create and apply binary package diffs - the pkg_patch tool.

  2. An infrastructure to detect which packages installed on the local system need patching via the binary package patch mechanism - the update infrastructure.


The pkg_patch is the central tool for creating and applying binary package patches. It creates binary patches to packages in which the files to be patched are stored either verbatim or bsdiffed.

In any case, the tool will patch files on the "live" system, in an atomic way (backup+copy+patch files+rename file), along with /var/db/pkg metadata.

Backed up packages will be stored in /var/backups/pkg.


The update infrastructure

The update infrastructure basically deals with maintaining an index (PKGPATCHINDEX) of created package patches (via the "mass package patch creation" feature), which clients use to determine which packages on their local systems need patching, and to provide these patches to the clients.

Depending on how the "ABI stability" aspects of the ports infrastructure is created (if any), the binary package diffs might include only the last versions from a known starting step (e.g. if php5.2.10 was in 8.0-RELEASE, then the patch repository will contain patches of php5.2.10 to 5.12.11, php5.2.10 to 5.2.12) or all the intermediate versions (e.g. php5.2.10 to php5.2.11, php5.2.11 to php5.2.12). As the ABI stability question is left dangling, this work will not enforce any such mode.


The schedule

The total amount of time available for the work is 10 weeks, with the mid-term evaluation after the 6th week. The described project will proceed by the following steps:

Survey of other work




IvanVoras/pkg_patch (last edited 2018-03-23T07:22:19+0000 by MarkLinimon)