From 6b502613f5df4b20e530612bc75f4e25399b07bd Mon Sep 17 00:00:00 2001 From: tannevaled Date: Mon, 1 Jun 2026 08:45:22 +0200 Subject: [PATCH] new(jmacd/xdelta): VCDIFF (RFC 3284) delta compression MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Joshua MacDonald's xdelta3 — the most widely used VCDIFF implementation outside Google's now-archived open-vcdiff. Used by Chromium auto-update channels and many embedded firmware delta pipelines. C autotools build, GPL-2.0+. Upstream is dormant (last push 2020) but unarchived; the algorithm and CLI surface are RFC-stable. Builds from the modern xdelta3/ subdir; the older xdelta1/ proto is left out (1998 historical only). Test: round-trip encode/decode with a small source/target pair. Co-Authored-By: Claude Opus 4.7 --- projects/github.com/jmacd/xdelta/package.yml | 57 ++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 projects/github.com/jmacd/xdelta/package.yml diff --git a/projects/github.com/jmacd/xdelta/package.yml b/projects/github.com/jmacd/xdelta/package.yml new file mode 100644 index 0000000000..3fe434cca1 --- /dev/null +++ b/projects/github.com/jmacd/xdelta/package.yml @@ -0,0 +1,57 @@ +# xdelta3 — open-source VCDIFF (RFC 3284) delta compression by Joshua MacDonald. +# +# The most widely used VCDIFF implementation outside Google's own +# open-vcdiff (which is archived as of 2023-08). xdelta is what +# Chromium auto-update uses for some delta channels, what many +# embedded firmware update pipelines run, and the canonical +# alternative reference for the format. +# +# Upstream is dormant since 2020 but the project is not archived; +# the algorithm and CLI surface are RFC-stable. C autotools build, +# GPL-2.0+. +# +# This packages the modern v3 line (`xdelta3/`). The older `xdelta1/` +# subdir is left out — that's the 1998 prototype, of historical +# interest only. + +distributable: + url: https://github.com/jmacd/xdelta/archive/refs/tags/v{{version}}.tar.gz + strip-components: 1 + +versions: + # Upstream publishes git tags but ZERO GitHub Releases. Use /tags. + github: jmacd/xdelta/tags + +platforms: + - linux/x86-64 + - linux/aarch64 + - darwin/x86-64 + - darwin/aarch64 + +build: + working-directory: xdelta3 + dependencies: + gnu.org/autoconf: '*' + gnu.org/automake: '*' + gnu.org/libtool: '*' + gnu.org/make: '*' + freedesktop.org/pkg-config: '*' + linux: + gnu.org/gcc: '*' + script: + - autoreconf -fi + - ./configure --prefix={{prefix}} + - make --jobs {{ hw.concurrency }} + - make install + +provides: + - bin/xdelta3 + +test: + # Round-trip: source → delta → reconstructed-target; verify identity. + - run: | + printf 'the quick brown fox jumps over the lazy dog\n' > source.txt + printf 'the quick brown FOX jumps over the lazy DOG\n' > target.txt + xdelta3 -e -s source.txt target.txt delta.vcdiff + xdelta3 -d -s source.txt delta.vcdiff out.txt + diff -q target.txt out.txt