new(zsync2): delta-update file transfer (used by AppImage)#13082
Merged
Conversation
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>
4 tasks
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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