This is an old revision of the document!


Brainstorming for the pkg_patch project

Per SoC proposal comment, scope is reduced not to deal with the “ABI stability” of the ports tree.

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 will be made to support different variations on binary package patches, but the first variation will be for them to contain whole files which need patching, for simplicity and avoidance of miniscule differences between binary packages. A future mode will use bsdiff to generate binary patches to the files need patching.

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.

Brainstorming:

  • It will be built on top of pkg_* infrastructure
  • It will operate on binary .tbz package archives (slow but no feasible alternative - switch to txz?)
  • Package patch filenames in the form php-5.2.10-patch-5.2.11.tbz ?

The update infrastructure is to include, in some way, a list of packages and their most recent versions. Depending on how the “ABI stability” aspects of the ports infrastructure is created (if any), the binary package diffs might include only last versions (e.g. 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).

Brainstorming:

  • Rely on simple text and HTTP protocols for distributing information about everything (list of updates, package patches)
  • ivanvoras/pkg_patch.1273069305.txt.gz
  • Last modified: 2010/05/05 14:21
  • by IvanVoras