From 6b502613f5df4b20e530612bc75f4e25399b07bd Mon Sep 17 00:00:00 2001 From: tannevaled Date: Mon, 1 Jun 2026 08:45:22 +0200 Subject: [PATCH 1/2] 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 From 34933228f2a3a51bcb27fdc2e305f1302e18c6e5 Mon Sep 17 00:00:00 2001 From: Jacob Heider Date: Fri, 12 Jun 2026 21:59:52 -0400 Subject: [PATCH 2/2] refactor --- projects/github.com/jmacd/xdelta/package.yml | 29 +++++++------------- 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/projects/github.com/jmacd/xdelta/package.yml b/projects/github.com/jmacd/xdelta/package.yml index 3fe434cca1..9eb4a79954 100644 --- a/projects/github.com/jmacd/xdelta/package.yml +++ b/projects/github.com/jmacd/xdelta/package.yml @@ -15,29 +15,21 @@ # interest only. distributable: - url: https://github.com/jmacd/xdelta/archive/refs/tags/v{{version}}.tar.gz + url: https://github.com/jmacd/xdelta/archive/refs/tags/{{version.tag}}.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: '*' + gnu.org/autoconf: "*" + gnu.org/automake: "*" + gnu.org/libtool: "*" linux: - gnu.org/gcc: '*' + gnu.org/gcc: "*" script: - autoreconf -fi - ./configure --prefix={{prefix}} @@ -49,9 +41,8 @@ provides: 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 + - 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 target.txt out.txt