Skip to content

new(zsync2): delta-update file transfer (used by AppImage)#13082

Merged
jhheider merged 7 commits into
pkgxdev:mainfrom
tannevaled:new/zsync2
Jun 11, 2026
Merged

new(zsync2): delta-update file transfer (used by AppImage)#13082
jhheider merged 7 commits into
pkgxdev:mainfrom
tannevaled:new/zsync2

Conversation

@tannevaled

Copy link
Copy Markdown
Contributor

C++17 rewrite of the classic zsync. Used by AppImage for in-place updates fetching only the diff between local and remote.

🤖 Generated with Claude Code

tannevaled and others added 6 commits May 29, 2026 16:52
Modernized rsync-like protocol used by AppImage for in-place updates —
fetches only the diff between a local file and a remote .zsync control
file. C++17 rewrite of the original zsync (sourceforge), built via
CMake with system libcurl + openssl + libssh2.

Provides zsync2 (client) and zsyncmake2 (server-side .zsync generator).
libgcrypt's pkg-config declares libgpg-error as a Requires.private,
so pkg_check_modules(libgcrypt) failed at configure time with
"Package 'gpg-error', required by 'libgcrypt', not found".

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
zsync.c:950 passes `off_t *` to a `long long *` parameter — modern
clang treats the type mismatch as an error by default. Add
-Wno-error=incompatible-pointer-types to CFLAGS/CXXFLAGS via cmake
to unblock the build.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
darwin build fails on `error: no member named 'st_mtim' in 'stat'`
(POSIX field name; darwin uses st_mtimespec) and zsclient.cpp:472
`error: TODO: implement openGzFile() for this platform!`.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Re-enables darwin platforms with two inline source patches:

  - src/zsutil.cpp: st_mtim is glibc-only; replace with st_mtimespec
    (darwin's equivalent — sed restricted to darwin builds via if:).
  - src/zsclient.cpp: replace the #error TODO with `return NULL;`.
    openGzFile() relies on fopencookie which is glibc-only. Returning
    NULL is a graceful fallback: zsync falls back to fetching all
    blocks from the server when the seed is .gz. Non-gz seeds work
    normally on darwin.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Remove redundant platforms list and implicit build dependencies.
Consolidate Darwin source patches into a dedicated run block with `working-directory` for clearer execution.
Simplify test commands.
@jhheider jhheider merged commit 1292338 into pkgxdev:main Jun 11, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants