From d5394f6c3868b30146117329b2122b344314bd90 Mon Sep 17 00:00:00 2001 From: tannevaled Date: Sun, 31 May 2026 20:58:18 +0200 Subject: [PATCH 1/4] new(google/open-vcdiff): VCDIFF (RFC 3284) encoder/decoder Canonical Google C++ implementation of the VCDIFF generic differencing format (RFC 3284). Used by Chrome's SDCH, Google's update protocol, and various delta-compression schemes. Upstream archived 2023-08-26; this remains the reference implementation. Apache-2.0. Co-Authored-By: Claude Opus 4.7 --- .../github.com/google/open-vcdiff/package.yml | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 projects/github.com/google/open-vcdiff/package.yml diff --git a/projects/github.com/google/open-vcdiff/package.yml b/projects/github.com/google/open-vcdiff/package.yml new file mode 100644 index 0000000000..ed7377ba08 --- /dev/null +++ b/projects/github.com/google/open-vcdiff/package.yml @@ -0,0 +1,60 @@ +# open-vcdiff — VCDIFF (RFC 3284) encoder/decoder by Google. +# +# Generic-differencing format used by Chrome's SDCH (Shared Dictionary +# Compression over HTTP), Google's Update protocol, and various delta +# compression schemes. Apache-2.0. +# +# Upstream marked the repo archived on 2023-08-26 — no active +# development but it's RFC-compliant and remains the canonical +# reference C++ implementation. Worth packaging precisely because +# nothing replaces it. + +distributable: + url: https://github.com/google/open-vcdiff/archive/refs/tags/{{version.tag}}.tar.gz + strip-components: 1 + +versions: + github: google/open-vcdiff + # Tag scheme changed historically: older releases used + # `open-vcdiff-X.Y` (dashes), recent ones use `openvcdiff-X.Y.Z` + # (no dash). Strip both. + strip: + - /^openvcdiff-/ + - /^open-vcdiff-/ + +platforms: + - linux/x86-64 + - linux/aarch64 + - darwin/x86-64 + - darwin/aarch64 + +build: + dependencies: + gnu.org/autoconf: '*' + gnu.org/automake: '*' + gnu.org/libtool: '*' + gnu.org/make: '*' + freedesktop.org/pkg-config: '*' + linux: + gnu.org/gcc: '*' + script: + # Upstream ships configure.ac only; run autoreconf to generate + # configure. The recipe also vendors gtest as a git submodule + # which isn't in the archive tarball, but the build only links + # gtest for unit tests (disabled by default in the install path). + - autoreconf -fi + - ./configure --prefix={{prefix}} + - make --jobs {{ hw.concurrency }} + - make install + +provides: + - bin/vcdiff + +test: + # Round-trip: create dict, target; encode; decode; check identity. + - run: | + printf 'the quick brown fox jumps over the lazy dog\n' > dict.txt + printf 'the quick brown FOX jumps over the lazy DOG\n' > target.txt + vcdiff encode -dictionary dict.txt -target target.txt -delta delta.vcdiff + vcdiff decode -dictionary dict.txt -delta delta.vcdiff -target out.txt + diff -q target.txt out.txt From e0d4f1af26e3349ebf173f4f28ca67c03c794d15 Mon Sep 17 00:00:00 2001 From: tannevaled Date: Sun, 31 May 2026 21:02:08 +0200 Subject: [PATCH 2/4] fix(open-vcdiff): single combined strip regex (list form rejected in github mode) --- projects/github.com/google/open-vcdiff/package.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/projects/github.com/google/open-vcdiff/package.yml b/projects/github.com/google/open-vcdiff/package.yml index ed7377ba08..05862a2629 100644 --- a/projects/github.com/google/open-vcdiff/package.yml +++ b/projects/github.com/google/open-vcdiff/package.yml @@ -15,12 +15,11 @@ distributable: versions: github: google/open-vcdiff - # Tag scheme changed historically: older releases used - # `open-vcdiff-X.Y` (dashes), recent ones use `openvcdiff-X.Y.Z` - # (no dash). Strip both. - strip: - - /^openvcdiff-/ - - /^open-vcdiff-/ + # Tag scheme changed: older releases used `open-vcdiff-X.Y` (dashes), + # recent ones use `openvcdiff-X.Y.Z` (no dash). Single combined regex + # handles both; previous list-form was rejected by libpkgx in github + # mode (`not-found: version` on first CI run). + strip: /^open-?vcdiff-/ platforms: - linux/x86-64 From 2051bb6381584d07a4dde790885bb373f8ee13ad Mon Sep 17 00:00:00 2001 From: tannevaled Date: Sun, 31 May 2026 21:36:27 +0200 Subject: [PATCH 3/4] fix(open-vcdiff): use /tags endpoint + ignore 2-part tag MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two compounding bugs in version resolution: 1. Upstream publishes git tags but ZERO GitHub Releases. Default `github: ` mode queries /releases — empty. Switched to `github: google/open-vcdiff/tags`. 2. Tag `open-vcdiff-0.8` is 2-part — strict semver rejects. Added to `ignore:`. Co-Authored-By: Claude Opus 4.7 --- projects/github.com/google/open-vcdiff/package.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/projects/github.com/google/open-vcdiff/package.yml b/projects/github.com/google/open-vcdiff/package.yml index 05862a2629..4af09e10b1 100644 --- a/projects/github.com/google/open-vcdiff/package.yml +++ b/projects/github.com/google/open-vcdiff/package.yml @@ -14,12 +14,16 @@ distributable: strip-components: 1 versions: - github: google/open-vcdiff + # Upstream publishes git tags but ZERO GitHub Releases. Default + # `github: ` mode queries /releases and returns empty + # (hence `not-found: version` on first CI runs). Force /tags. + github: google/open-vcdiff/tags # Tag scheme changed: older releases used `open-vcdiff-X.Y` (dashes), - # recent ones use `openvcdiff-X.Y.Z` (no dash). Single combined regex - # handles both; previous list-form was rejected by libpkgx in github - # mode (`not-found: version` on first CI run). + # recent ones use `openvcdiff-X.Y.Z` (no dash). Single combined regex. strip: /^open-?vcdiff-/ + # First tag `open-vcdiff-0.8` is 2-part — invalid strict semver. + ignore: + - /^open-vcdiff-0\.8$/ platforms: - linux/x86-64 From f5f7971a35b15d4b917b88e29a6a611b90a2c290 Mon Sep 17 00:00:00 2001 From: tannevaled Date: Sun, 31 May 2026 22:08:39 +0200 Subject: [PATCH 4/4] fix(open-vcdiff): mkdir gflags/m4 before autoreconf (submodules absent) --- projects/github.com/google/open-vcdiff/package.yml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/projects/github.com/google/open-vcdiff/package.yml b/projects/github.com/google/open-vcdiff/package.yml index 4af09e10b1..dc164beddd 100644 --- a/projects/github.com/google/open-vcdiff/package.yml +++ b/projects/github.com/google/open-vcdiff/package.yml @@ -42,9 +42,13 @@ build: gnu.org/gcc: '*' script: # Upstream ships configure.ac only; run autoreconf to generate - # configure. The recipe also vendors gtest as a git submodule - # which isn't in the archive tarball, but the build only links - # gtest for unit tests (disabled by default in the install path). + # configure. Submodules (`gflags`, `gtest`) are NOT in the + # GitHub archive tarball — autoreconf's `aclocal` scans + # `gflags/m4` and bails with "no such file" without them. + # Create the empty directories so autoreconf proceeds; the + # actual gflags/gtest content is only needed for the test + # suite which we don't run. + - mkdir -p gflags/m4 gtest - autoreconf -fi - ./configure --prefix={{prefix}} - make --jobs {{ hw.concurrency }}