Address review findings on feat/rsync-parity: - confine --temp-dir below the receive root (reject absolute/.. like backup-dir/partial-dir); keep EXDEV non-atomic fallback - floor server session I/O deadlines at SERVER_IO_TIMEOUT_SEC (60s) and install it on the socket layer at startup (slow-loris) - charge each --delete-missing-args directory removal once and clamp the extras-walk remaining budget so it can never underflow past --max-delete - normalize --compress-choice=auto to zstd client-side and accept it on receive so auto transfers no longer fail - map received --max-alloc=0 to MAX_SERVER_ALLOC (receive path only) - zero File.dest_state; include log-file-format in report_dest_info; add STATUS_DELETE_LIMIT name; recognize --skip-compress as a separate-value option; OOM-guard send_list_only root entry; drop the dead -M= branch; record the bare relative protected prefix for -R size-prunes in both scanners; refresh delete-manifest comment - pin the rsync tarball sha256 and bump integrator image to v11 Tests: temp-dir rejection/relative/cross-device, server timeout floor, delete-missing dir budget regression, compress-choice=auto e2e, max-alloc=0 receive mapping, dest_state, report_dest_info modes, skip-compress dash value, -M short forms, -R root size-prune mirror protection (rsync 3.4.1 confirmed).
24 lines
1.2 KiB
Docker
24 lines
1.2 KiB
Docker
FROM ubuntu:24.04
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
gcc g++ make libc6-dev cmake libzstd-dev libssl-dev git ca-certificates curl cppcheck clang-format \
|
|
python3 python3-pip python3-venv openssl openssh-client \
|
|
lcov valgrind clang libclang-rt-18-dev \
|
|
acl attr zlib1g-dev liblz4-dev libxxhash-dev && \
|
|
pip3 install --break-system-packages pytest pytest-xdist && \
|
|
curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
|
|
apt-get install -y --no-install-recommends nodejs && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
# rsync is used as the reference implementation for drop-in parity tests.
|
|
# Ubuntu 24.04 ships 3.2.7, so build the pinned 3.4.1 reference from source.
|
|
ARG RSYNC_VERSION=3.4.1
|
|
ARG RSYNC_SHA256=2924bcb3a1ed8b551fc101f740b9f0fe0a202b115027647cf69850d65fd88c52
|
|
RUN curl -fsSL "https://download.samba.org/pub/rsync/src/rsync-${RSYNC_VERSION}.tar.gz" -o /tmp/rsync.tar.gz && \
|
|
echo "${RSYNC_SHA256} /tmp/rsync.tar.gz" | sha256sum -c - && \
|
|
tar -xzf /tmp/rsync.tar.gz -C /tmp && \
|
|
cd "/tmp/rsync-${RSYNC_VERSION}" && \
|
|
./configure --enable-zstd --enable-xxhash --enable-lz4 && \
|
|
make -j"$(nproc)" && \
|
|
make install && \
|
|
rm -rf "/tmp/rsync-${RSYNC_VERSION}" /tmp/rsync.tar.gz
|