Commit graph

10222 commits

Author SHA1 Message Date
Thomas Waldmann
17aecfef6e
move PathNotAllowed to helpers/errors.py
PathNotAllowed lived in borg.legacy.remote, but borg serve --rest
(non-legacy) now also raises it via check_rest_restrictions, which made
non-legacy code import from the legacy package just for an exception.

It is a generic "repository path not allowed" error, so move it next to
the other cross-cutting Error subclasses in helpers/errors.py and
re-export it from helpers. Pure relocation; exit code stays 83.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 00:49:47 +02:00
Thomas Waldmann
2741265463
CI: make the rest repo test use "borg serve --rest"
A rest:// repository is now served by "borg serve --rest" spawned over ssh
rather than borgstore's "borgstore-server-rest".

CI: chmod o+x $HOME so the rest test's ssh user (sftpuser) can run borg

The rest repo test starts "borg serve --rest" over ssh as sftpuser, which runs
the borg under test from the tox venv under the runner $HOME.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 00:47:11 +02:00
TW
2ba43a1d74
Merge pull request #9718 from Tawfeeqshaik/feature/enable-strict-warnings-9140
Enable strict compiler warnings for C and Cython levels
2026-06-08 23:13:42 +02:00
TawfeeqShaik
7fe2d56a9f Build: enable strict Cython warnings and clean up compiler flags 2026-06-08 21:31:48 +05:30
TW
12a0c54448
Merge pull request #9733 from ThomasWaldmann/test-transfer-legacy-ssh
Some checks are pending
Lint / lint (push) Waiting to run
CI / lint (push) Waiting to run
CI / security (push) Waiting to run
CI / asan_ubsan (push) Blocked by required conditions
CI / native_tests (push) Blocked by required conditions
CI / vm_tests (NetBSD, false, netbsd, 10.1) (push) Blocked by required conditions
CI / vm_tests (OmniOS, false, omnios, r151056) (push) Blocked by required conditions
CI / vm_tests (OpenBSD, false, openbsd, 7.8) (push) Blocked by required conditions
CI / vm_tests (borg-freebsd-14-x86_64-gh, FreeBSD, true, freebsd, 14.3) (push) Blocked by required conditions
CI / windows_tests (push) Blocked by required conditions
CodeQL / Analyze (push) Waiting to run
tests: cover borg transfer --from-borg1 from an ssh:// borg 1.x repo
2026-06-08 15:12:28 +02:00
Thomas Waldmann
5415062564 borg serve --rest: serve rest:// repositories with borg
Make `borg serve` able to be the server-side component of a rest:// repository,
selected with a new --rest option. Plain `borg serve` (no option) keeps serving
legacy borg-1.x repos and stays command-line compatible with borg 1.x.

- serve_cmd.py: add --rest and --backend. With --rest, serve the given
  --backend FILE:<path> on stdio via borgstore.server.rest.serve(); honor
  --restrict-to-path/--restrict-to-repository (validated against the FILE path)
  and --permissions (mapped via borg_permissions). Without --rest, run the legacy
  RepositoryServer as before.
- repository.py: for rest:// locations, build the borgstore REST backend with a
  command that runs `borg serve --rest --backend FILE:<path>` (locally via
  sys.executable, or over ssh reusing borgstore's ssh_cmd / BORG_REMOTE_PATH),
  instead of borgstore's hardcoded `borgstore-server-rest`. So a remote only needs
  borg installed. Extracted the permissions string->dict mapping into the reusable
  borg_permissions().
- tests: unit tests for the rest serve command builder. The existing
  remote_archiver (rest:///) suite now runs against `borg serve --rest`.
- docs: changelog + quickstart updated.

Legacy serve and the legacy ssh client are unchanged (client still spawns plain
`borg serve`).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 14:52:41 +02:00
Thomas Waldmann
25f25797df tests: cover borg transfer --from-borg1 from an ssh:// borg 1.x repo
The existing --from-borg1 transfer tests only use a local v1 repo, so they
exercise LegacyRepository but never the ssh path (LegacyRemoteRepository +
borg serve / RepositoryServer) that this branch preserves.

Add test_transfer_from_borg1_ssh: extract the repo12.tar.gz borg 1.2 repo and
transfer from it via --other-repo=ssh://__testsuite__/<abspath> --from-borg1.
The __testsuite__ host makes the legacy client spawn a local "borg serve"
(no real ssh), driving the full client -> serve -> LegacyRepository chain, then
asserts all archives transferred. Local/non-win32 only, like the sibling tests.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 13:39:49 +02:00
TW
5246d2b51e
Merge pull request #9732 from ThomasWaldmann/remove-ssh-remote-repo
Some checks are pending
Lint / lint (push) Waiting to run
CI / lint (push) Waiting to run
CI / security (push) Waiting to run
CI / asan_ubsan (push) Blocked by required conditions
CI / native_tests (push) Blocked by required conditions
CI / vm_tests (NetBSD, false, netbsd, 10.1) (push) Blocked by required conditions
CI / vm_tests (OmniOS, false, omnios, r151056) (push) Blocked by required conditions
CI / vm_tests (OpenBSD, false, openbsd, 7.8) (push) Blocked by required conditions
CI / vm_tests (borg-freebsd-14-x86_64-gh, FreeBSD, true, freebsd, 14.3) (push) Blocked by required conditions
CI / windows_tests (push) Blocked by required conditions
CodeQL / Analyze (push) Waiting to run
Remove ssh:// and socket:// remote repository for current repos (use rest://)
2026-06-08 12:52:17 +02:00
Thomas Waldmann
6565b44f55 dissolve borg.remote: server -> legacy.remote, cache helpers -> repository
borg.remote no longer fit its name: it held the legacy-only borg serve server
plus generic repository cache wrappers used by current repos. Split by purpose
and remove the module:

- Move RepositoryServer into borg.legacy.remote (it only serves legacy v1 ssh
  repositories). It reuses the exception classes (PathNotAllowed,
  InvalidRPCMethod, UnexpectedRPCDataFormatFromClient) and BORG_VERSION / MSGID
  constants already defined there; open() uses the module-level LegacyRepository.
  serve_cmd.py now imports RepositoryServer from ..legacy.remote.
- Move RepositoryNoCache and cache_if_remote into borg.repository (they wrap a
  Repository and are used by Archive.check and mount of current repos).
  archive.py and mount_cmds.py import them from ..repository now.
- Move the cache_if_remote tests into repository_test.py; delete remote_test.py.
- Delete src/borg/remote.py; fix the stale BUFSIZE comment in constants.py.

Pure relocation, no behavior change.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 09:26:51 +02:00
Thomas Waldmann
2cdb9cebc3 remove unused caching trio from legacy/remote.py
borg.legacy.remote.cache_if_remote (and the RepositoryCache / RepositoryNoCache
classes it returns) are dead code: nothing imports or calls them. Every
cache_if_remote consumer (archive check, mount, tests) uses the non-legacy
borg.remote version, and legacy repos never reach it (Archive.check rejects
legacy repos). The trio was copied wholesale during the borg.legacy split (#9556).

Delete RepositoryNoCache, RepositoryCache and cache_if_remote, plus the imports
that only they used (shutil, struct, tempfile, xxhash.xxh64, compress.Compressor,
helpers.safe_unlink). LegacyRemoteRepository and the rest of the module are
unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 09:04:19 +02:00
Thomas Waldmann
4a4a8e4e72 remove now-dead RepositoryCache / force_cache from remote.py
After removing the modern RemoteRepository, cache_if_remote always returned
RepositoryNoCache in production (the only RepositoryCache path was the removed
isinstance(RemoteRepository) check; force_cache=True was used only by a test).

Delete the vestigial RepositoryCache class and simplify cache_if_remote: drop
the pack/unpack/force_cache parameters and the LZ4/xxh64 cache-file machinery,
keep building the decrypted_cache -> transform closure, and always return
RepositoryNoCache. Remove the imports that only RepositoryCache used.

Replace the RepositoryCache tests with a focused test of the surviving
cache_if_remote path (plain passthrough and decrypted (csize, plaintext) tuples).

The legacy copy in borg/legacy/remote.py is intentionally left untouched (its
RepositoryCache is still used for LegacyRemoteRepository).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 08:44:53 +02:00
Thomas Waldmann
cac7237d3f remove ssh:// and socket:// remote repository for current repos
The modern client/server transport (RemoteRepository served by `borg serve`
over an msgpack RPC protocol) is now redundant for current (borg 2) repos:
its functionality is replaced by rest:// (which can tunnel over ssh to a
remote borgstore REST server).

Remove the modern RemoteRepository (both ssh:// and socket://) entirely.
Legacy v1 (borg 1.x) repos remain reachable over ssh:// via the separate
LegacyRemoteRepository client, and `borg serve` / RepositoryServer is kept,
trimmed to the legacy-only path, so a remote borg2 can still serve a v1 repo
for `borg transfer --from-borg1`.

Details:
- remote.py: delete RemoteRepository, SleepingBandwidthLimiter and the `api`
  decorator; trim RepositoryServer to legacy-only (drop modern _rpc_methods,
  socket serving, non-legacy open() branch); keep cache_if_remote /
  RepositoryCache / RepositoryNoCache (used by all repos).
- get_repository(): non-legacy ssh:// now raises a clear "use rest://" error;
  socket:// route and the global --socket option removed.
- parseformat: drop the socket:// scheme (now an invalid location).
- borg serve: keep the command (serves legacy v1 ssh only); update epilog.
- borg version: drop modern remote query; keep legacy ssh path.
- update isinstance/import sites (cache, archive, fuse/hlfuse, analyze/compact,
  archiver __init__ -> LegacyRemoteRepository.RPCError).
- tests/docs updated; obsolete socket serve test removed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 08:04:59 +02:00
TW
83c3bc8a67
Merge pull request #9730 from ThomasWaldmann/reduce-tmp-usage-master
Some checks are pending
Lint / lint (push) Waiting to run
CI / lint (push) Waiting to run
CI / security (push) Waiting to run
CI / asan_ubsan (push) Blocked by required conditions
CI / native_tests (push) Blocked by required conditions
CI / vm_tests (NetBSD, false, netbsd, 10.1) (push) Blocked by required conditions
CI / vm_tests (OmniOS, false, omnios, r151056) (push) Blocked by required conditions
CI / vm_tests (OpenBSD, false, openbsd, 7.8) (push) Blocked by required conditions
CI / vm_tests (borg-freebsd-14-x86_64-gh, FreeBSD, true, freebsd, 14.3) (push) Blocked by required conditions
CI / windows_tests (push) Blocked by required conditions
CodeQL / Analyze (push) Waiting to run
tests: reduce /tmp space usage
2026-06-07 21:59:50 +02:00
Thomas Waldmann
582c35823f
tests: reduce /tmp space usage 2026-06-07 20:56:22 +02:00
TW
e788eed0be
Merge pull request #9729 from ThomasWaldmann/binary-building2-master
Some checks are pending
Lint / lint (push) Waiting to run
CI / lint (push) Waiting to run
CI / security (push) Waiting to run
CI / asan_ubsan (push) Blocked by required conditions
CI / native_tests (push) Blocked by required conditions
CI / vm_tests (NetBSD, false, netbsd, 10.1) (push) Blocked by required conditions
CI / vm_tests (OmniOS, false, omnios, r151056) (push) Blocked by required conditions
CI / vm_tests (OpenBSD, false, openbsd, 7.8) (push) Blocked by required conditions
CI / vm_tests (borg-freebsd-14-x86_64-gh, FreeBSD, true, freebsd, 14.3) (push) Blocked by required conditions
CI / windows_tests (push) Blocked by required conditions
binary build scripts: use /bin/sh
2026-06-07 16:01:12 +02:00
Thomas Waldmann
44e6ebdcd0
binary build scripts: use /bin/sh
there is no bash on some BSDs
2026-06-07 15:32:19 +02:00
TW
331fcb7bfc
Merge pull request #9727 from ThomasWaldmann/binary-building-master
binary build: pyinstaller 6.20, python 3.14, ubuntu 24.04
2026-06-07 14:05:52 +02:00
Thomas Waldmann
7b522d6dfd
binary build: pyinstaller 6.20, python 3.14, ubuntu 24.04
also change some other gh actions jobs to ubuntu 24.04.
2026-06-07 02:59:13 +02:00
TW
368ea6652f
Merge pull request #9643 from ThomasWaldmann/blake3
Some checks are pending
Lint / lint (push) Waiting to run
CI / lint (push) Waiting to run
CI / security (push) Waiting to run
CI / asan_ubsan (push) Blocked by required conditions
CI / native_tests (push) Blocked by required conditions
CI / vm_tests (NetBSD, false, netbsd, 10.1) (push) Blocked by required conditions
CI / vm_tests (OmniOS, false, omnios, r151056) (push) Blocked by required conditions
CI / vm_tests (OpenBSD, false, openbsd, 7.8) (push) Blocked by required conditions
CI / vm_tests (borg-freebsd-14-x86_64-gh, FreeBSD, true, freebsd, 14.3) (push) Blocked by required conditions
CI / windows_tests (push) Blocked by required conditions
CodeQL / Analyze (push) Waiting to run
add blake3, blake2b is legacy
2026-06-06 22:22:43 +02:00
Thomas Waldmann
939568516b
temp: downgrade py315 to py314 for now until there is a new PyO3
PyO3 does not support 3.15 yet.
2026-06-06 19:45:40 +02:00
Thomas Waldmann
e8c4a517e6
CI: install rust and python-maturin for windows/msys2 2026-06-06 19:34:50 +02:00
Thomas Waldmann
a2ad78dfa0
CI: install rust on omniOS 2026-06-06 19:34:49 +02:00
Thomas Waldmann
ff6d0e8775
fix typos / grammar in transfer docs 2026-06-06 19:34:46 +02:00
Thomas Waldmann
5d8b761a6c
crypto: integrate blake3, blake2b is legacy, fixes #8867
BLAKE3 is generally faster and provides a more modern construction for
keyed hashing (using its internal keyed mode instead of the construction
used for BLAKE2b).

Key types changed:
- authenticated-blake2 -> authenticated-blake3
- {keyfile,repokey}-blake2-aes-ocb -> {keyfile,repokey}-blake3-aes-ocb
- {keyfile,repokey}-blake2-chacha20-poly1305 -> {keyfile,repokey}-blake3-chacha20-poly1305

This also fixes the slightly unusual way how we used blake2b,
it is only supported for importing borg 1.x repos.

New repos either use HMAC-SHA256 or BLAKE3.
2026-06-06 19:34:45 +02:00
Thomas Waldmann
ea13c3329e
blake3: add to requirements and borg benchmark cpu 2026-06-06 19:34:42 +02:00
TW
4e8fa92ec8
Merge pull request #9726 from ThomasWaldmann/drop-py310-support
Some checks are pending
Lint / lint (push) Waiting to run
CI / lint (push) Waiting to run
CI / security (push) Waiting to run
CI / asan_ubsan (push) Blocked by required conditions
CI / native_tests (push) Blocked by required conditions
CI / vm_tests (NetBSD, false, netbsd, 10.1) (push) Blocked by required conditions
CI / vm_tests (OmniOS, false, omnios, r151056) (push) Blocked by required conditions
CI / vm_tests (OpenBSD, false, openbsd, 7.8) (push) Blocked by required conditions
CI / vm_tests (borg-freebsd-14-x86_64-gh, FreeBSD, true, freebsd, 14.3) (push) Blocked by required conditions
CI / windows_tests (push) Blocked by required conditions
CodeQL / Analyze (push) Waiting to run
remove python 3.10 support (master branch), fixes #9707
2026-06-06 19:31:35 +02:00
Thomas Waldmann
30ed2bcbfb
remove haiku from CI matrix
working with r1beta5 (from 2024) is just too much pain.

the system packages only have python 3.10.
if one install python 3.11 from HaikuPorts, it has no ssl support.
if one also installs openssl3 from HaikuPorts, creating a venv fails...

also: rust toolchains issues, thread-local storage ("TLS") issues, as seen in #9463.

thus: no haiku CI until they release next beta and cross-platform-actions have it.
2026-06-06 18:35:36 +02:00
TW
1239068e9d
Merge pull request #9725 from ThomasWaldmann/msgpack-120-master
allow msgpack 1.2.0
2026-06-06 15:38:31 +02:00
Thomas Waldmann
dd4ba13066
remove python 3.10 support (master branch), fixes #9707 2026-06-06 15:34:05 +02:00
TW
e36d58d715
Merge pull request #9724 from ThomasWaldmann/repoobj-integrity-checks
better repoobj integrity checks
2026-06-06 15:08:09 +02:00
Thomas Waldmann
6fb706715d
allow msgpack 1.2.0 2026-06-06 14:52:31 +02:00
Thomas Waldmann
16aeb4fce7
deal with corrupted archive metadata items 2026-06-06 10:37:24 +02:00
Thomas Waldmann
eaf003f3ab
repoobj: reject malformed objects with IntegrityError, not struct.error/assert
RepoObj.extract_crypted_data() / parse_meta() / parse() unpacked the
fixed-size object header without first checking the input length, and
guarded the meta/data sizes only with assert. A too-short object (e.g. a
truncated or malicious repository object) therefore raised an uncaught
struct.error, and a header claiming more meta/data than present raised
AssertionError.

Callers handle repository corruption by catching IntegrityError, so these
unintended exception types escaped that handling and aborted the operation
with a traceback instead of a clean "corrupted object" report.

Validate the input length before unpacking the header and turn the size
consistency checks into IntegrityError.

Add regression tests for too-short objects and inconsistent meta/data sizes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 10:37:22 +02:00
TW
22bc6ee419
Merge pull request #9720 from ThomasWaldmann/pure-hashing-wrapper-master
Some checks failed
Lint / lint (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / security (push) Has been cancelled
CodeQL / Analyze (push) Has been cancelled
CI / asan_ubsan (push) Has been cancelled
CI / native_tests (push) Has been cancelled
CI / vm_tests (Haiku, false, haiku, r1beta5) (push) Has been cancelled
CI / vm_tests (NetBSD, false, netbsd, 10.1) (push) Has been cancelled
CI / vm_tests (OmniOS, false, omnios, r151056) (push) Has been cancelled
CI / vm_tests (OpenBSD, false, openbsd, 7.8) (push) Has been cancelled
CI / vm_tests (borg-freebsd-14-x86_64-gh, FreeBSD, true, freebsd, 14.3) (push) Has been cancelled
CI / windows_tests (push) Has been cancelled
add pure_hash option and tests for SHA256FileHashingWrapper, fixes #9704
2026-06-04 20:58:13 +02:00
TW
68bf6a1c64
Merge pull request #9721 from ThomasWaldmann/binary-build-scripts
Binary build scripts
2026-06-04 20:57:47 +02:00
Thomas Waldmann
fb53f44f0f
nuitka build: also use dist/binary for output 2026-06-04 18:31:57 +02:00
Thomas Waldmann
2768548032
build: add build-borg-using-pyinstaller.sh and use it in ci.yml 2026-06-04 18:25:12 +02:00
Thomas Waldmann
4c6e8fb957
file integrity: add pure_hash option and tests for SHA256FileHashingWrapper, fixes #9704 2026-06-04 18:10:34 +02:00
TW
6b93751a9a
Merge pull request #9719 from ThomasWaldmann/fix-9714
Some checks are pending
Lint / lint (push) Waiting to run
CI / lint (push) Waiting to run
CI / security (push) Waiting to run
CI / asan_ubsan (push) Blocked by required conditions
CI / native_tests (push) Blocked by required conditions
CI / vm_tests (Haiku, false, haiku, r1beta5) (push) Blocked by required conditions
CI / vm_tests (NetBSD, false, netbsd, 10.1) (push) Blocked by required conditions
CI / vm_tests (OmniOS, false, omnios, r151056) (push) Blocked by required conditions
CI / vm_tests (OpenBSD, false, openbsd, 7.8) (push) Blocked by required conditions
CI / vm_tests (borg-freebsd-14-x86_64-gh, FreeBSD, true, freebsd, 14.3) (push) Blocked by required conditions
CI / windows_tests (push) Blocked by required conditions
CodeQL / Analyze (push) Waiting to run
add test for --help rendering, add workaround to nanorst
2026-06-04 13:47:44 +02:00
TW
2743e3716f
Merge pull request #9716 from borgbackup/dependabot/github_actions/actions-487c3c9492
build(deps): bump cross-platform-actions/action from 1.1.0 to 1.2.0 in the actions group
2026-06-04 12:21:20 +02:00
TW
a309f3dc93
Merge pull request #9717 from borgbackup/dependabot/pip/requirements.d/pip-dependencies-ba5c4d1ea1
build(deps): bump the pip-dependencies group in /requirements.d with 6 updates
2026-06-04 12:20:24 +02:00
Thomas Waldmann
1f00a1f4f3
nanorst: do not require 2 empty lines at end of string after code block, fixes #9714 2026-06-04 11:29:23 +02:00
Thomas Waldmann
043628cdd8
tests: invoke --help for all commands to check if it works, see #9714 2026-06-04 11:25:43 +02:00
dependabot[bot]
501e4798b7
build(deps): bump the pip-dependencies group
Bumps the pip-dependencies group in /requirements.d with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [pip](https://github.com/pypa/pip) | `26.1.1` | `26.1.2` |
| [wheel](https://github.com/pypa/wheel) | `0.46.3` | `0.47.0` |
| [build](https://github.com/pypa/build) | `1.4.4` | `1.5.0` |
| [tox](https://github.com/tox-dev/tox) | `4.53.0` | `4.53.1` |
| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.0` |
| [pyinstaller](https://github.com/pyinstaller/pyinstaller) | `6.19.0` | `6.20.0` |


Updates `pip` from 26.1.1 to 26.1.2
- [Changelog](https://github.com/pypa/pip/blob/main/NEWS.rst)
- [Commits](https://github.com/pypa/pip/compare/26.1.1...26.1.2)

Updates `wheel` from 0.46.3 to 0.47.0
- [Release notes](https://github.com/pypa/wheel/releases)
- [Changelog](https://github.com/pypa/wheel/blob/main/docs/news.rst)
- [Commits](https://github.com/pypa/wheel/compare/0.46.3...0.47.0)

Updates `build` from 1.4.4 to 1.5.0
- [Release notes](https://github.com/pypa/build/releases)
- [Changelog](https://github.com/pypa/build/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pypa/build/compare/1.4.4...1.5.0)

Updates `tox` from 4.53.0 to 4.53.1
- [Release notes](https://github.com/tox-dev/tox/releases)
- [Changelog](https://github.com/tox-dev/tox/blob/main/docs/changelog.rst)
- [Commits](https://github.com/tox-dev/tox/compare/4.53.0...4.53.1)

Updates `pre-commit` from 4.5.1 to 4.6.0
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pre-commit/pre-commit/compare/v4.5.1...v4.6.0)

Updates `pyinstaller` from 6.19.0 to 6.20.0
- [Release notes](https://github.com/pyinstaller/pyinstaller/releases)
- [Changelog](https://github.com/pyinstaller/pyinstaller/blob/develop/doc/CHANGES.rst)
- [Commits](https://github.com/pyinstaller/pyinstaller/compare/v6.19.0...v6.20.0)

---
updated-dependencies:
- dependency-name: pip
  dependency-version: 26.1.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: pip-dependencies
- dependency-name: wheel
  dependency-version: 0.47.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: pip-dependencies
- dependency-name: build
  dependency-version: 1.5.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: pip-dependencies
- dependency-name: tox
  dependency-version: 4.53.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: pip-dependencies
- dependency-name: pre-commit
  dependency-version: 4.6.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: pip-dependencies
- dependency-name: pyinstaller
  dependency-version: 6.20.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: pip-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-03 22:33:36 +00:00
dependabot[bot]
ec8fc5281d
build(deps): bump cross-platform-actions/action in the actions group
Bumps the actions group with 1 update: [cross-platform-actions/action](https://github.com/cross-platform-actions/action).


Updates `cross-platform-actions/action` from 1.1.0 to 1.2.0
- [Release notes](https://github.com/cross-platform-actions/action/releases)
- [Changelog](https://github.com/cross-platform-actions/action/blob/master/changelog.md)
- [Commits](https://github.com/cross-platform-actions/action/compare/v1.1.0...v1.2.0)

---
updated-dependencies:
- dependency-name: cross-platform-actions/action
  dependency-version: 1.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-03 22:33:18 +00:00
TW
4496904f48
Merge pull request #9710 from mr-raj12/pack-files-step4-chunkindex-pack-fields
Some checks are pending
Lint / lint (push) Waiting to run
CI / lint (push) Waiting to run
CI / security (push) Waiting to run
CI / asan_ubsan (push) Blocked by required conditions
CI / native_tests (push) Blocked by required conditions
CI / vm_tests (Haiku, false, haiku, r1beta5) (push) Blocked by required conditions
CI / vm_tests (NetBSD, false, netbsd, 10.1) (push) Blocked by required conditions
CI / vm_tests (OmniOS, false, omnios, r151056) (push) Blocked by required conditions
CI / vm_tests (OpenBSD, false, openbsd, 7.8) (push) Blocked by required conditions
CI / vm_tests (borg-freebsd-14-x86_64-gh, FreeBSD, true, freebsd, 14.3) (push) Blocked by required conditions
CI / windows_tests (push) Blocked by required conditions
CodeQL / Analyze (push) Waiting to run
hashindex: add pack_id, pack_offset, pack_size to ChunkIndexEntry
2026-06-03 17:59:00 +02:00
Mrityunjay Raj
8f28844a1e hashindex: add pack_id, obj_offset, obj_size to ChunkIndexEntry, refs #8572
Add three new fields to ChunkIndexEntry and update all call sites:
- pack_id (32 bytes): identifies the pack file containing the chunk
- obj_offset (uint32): byte offset of the chunk within the pack
- obj_size (uint32): stored (compressed) size of the chunk on disk

At N=1 (one chunk per pack), chunk_id == pack_id, obj_offset == 0,
and obj_size == pack_size. All sites use chunk_id as the ChunkIndex
key and extract pack_id as a separate variable with an N=1 comment.

compact_cmd.py: use obj_size (stored size) in repository_size sum.
cache.py: preserve pack fields when serializing the chunk index cache.
repository.py: populate pack_id/obj_size from borgstore object info.
archive.py: extract pack_id on its own line, obj_size=0 for now.
hashindex.pyx: update add(), namedtuple, format string, and docstring.
hashindex.pyi: add new fields to ChunkIndexEntry and CIE type alias.
testsuite/hashindex_test.py: update all ChunkIndexEntry constructions.
2026-06-03 18:21:13 +05:30
TW
6c143e201f
Merge pull request #9713 from ThomasWaldmann/build-nuitka2-master
nuitka build script refinements (master)
2026-06-03 12:59:23 +02:00
Thomas Waldmann
4431759d79
better script name 2026-06-03 12:57:45 +02:00
Thomas Waldmann
38cefed974
nuitka build script: simplify, see #3227
Including cffi is already enough to make it work.

Using --mode=onefile as suggested by Kay.
2026-06-03 12:55:11 +02:00