225 Commits
Author SHA1 Message Date
Thomas WaldmannandClaude Opus 5.5 dca232741b require borgstore 0.7.0
borgstore 0.7.0 adds Store.gather (many byte ranges with one call, one
roundtrip for REST) and fixes partial loads with a negative offset from
cached namespaces.

Store.defrag now requires all sources to be items of the given namespace,
which borg's defrag calls (hex pack names in "packs") already satisfy.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-26 12:04:56 +02:00
Thomas WaldmannandClaude Opus 5.5 4164c094fd repository: clear error for borg 1.x repositories, fixes crash w/o --from-borg1
Opening a borg 1.x repository without --from-borg1 crashed with a traceback while
loading the config/config store object, because a borg 1.x repository has a config
*file* where borg 2 has the config/ namespace (NotADirectoryError for a local
repository, HTTP 500 via ssh://; InvalidRepository on Windows).

borgstore 0.6.4 reports a name below an object as ObjectNotFound on all platforms,
so require it. If config/config is not found, look at "config" via the store
backend and raise Repository.LegacyRepository (rc 29) if it is a file, telling the
user to use --from-borg1 (e.g. with borg transfer).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-24 20:31:01 +02:00
Thomas WaldmannandClaude Fable 5.1 0e316b1b52 mount: support Windows using WinFsp (via mfusepy), fixes #2316
mfusepy already knows how to talk to the FUSE 2 API of WinFsp, so this is
about the borg side:

- mountpoint: WinFsp mounts on an unused drive (X:) or creates (and later
  removes) the mountpoint directory, so it must not exist yet.
- there is no fork: borg mount always stays in the foreground. Ctrl-C or
  Ctrl-Break unmount. borg umount is not supported there.
- WinFsp ignores the "ro" mount option, a read-only volume has to be
  requested from the init callback (FSP_FUSE_CAP_READ_ONLY).
- WinFsp makes a security descriptor from uid / gid / mode and checks all
  access against it. The archived uids / gids do not mean anything on
  Windows, so the uid and gid mount options are left to WinFsp and default
  to -1 (the user who mounts).
- volname gives the volume label (default: borgfs).
- st_birthtime is given to mfusepy, WinFsp uses it as the creation time.
- readlink of something that is not a symlink fails with EINVAL (WinFsp
  tries that for "/" to find out whether symlinks are supported).

Tests: on Windows, fuse_mount runs borg mount as a child process and stops
it like Ctrl-Break does. WinFsp does not support hard link counts. With
mfusepy 3.1.1, symlinks show up as regular files, because WinFsp has getdir
and readlink in a different order in struct fuse_operations than libfuse has.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-19 14:17:09 +02:00
Thomas WaldmannandClaude Fable 5 14c1ddcc1f docs: fix shell syntax in the pyenv virtualenv example
${pyenv which python} is parameter expansion and a "bad substitution"
error in bash/zsh; command substitution $(pyenv which python) was meant.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-08-29 14:36:34 +02:00
TW 4159deba7a Merge pull request #10259 from ThomasWaldmann/simplify-binary-install-docs
docs: simplify the standalone binary section in installation.rst
2026-08-29 00:06:18 +02:00
Thomas WaldmannandClaude Fable 5 fa53fda92e docs: simplify the standalone binary section in installation.rst
Remove the specific glibc / OS release version numbers (they rot every
time the build hosts change) and the outdated third-party ARM binaries
pointer; refer to the 00_README.txt released alongside the binaries for
the exact platform requirements.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-08-28 23:30:20 +02:00
Thomas WaldmannandClaude Fable 5 4f05a079d1 docs: fix the man page install command in installation.rst
install -D with a glob of 56 man pages and a single-file target cannot
work (and -D is GNU-only). Create the man1 directory first and install
the pages into it; works with both GNU and BSD/macOS install.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-08-28 23:25:13 +02:00
Thomas WaldmannandClaude Fable 5 076171b740 docs: fix outdated dependencies, paths and links in installation.rst
- borgstore extras: 0.3.0 -> 0.6.1 (matching pyproject.toml), add the
  missing rclone backend and the cockpit extra, add a note that a Rust
  toolchain is only needed when pip must build blake3 from source.
- macOS: the pkg-config example pointed at the long-dead Homebrew
  [email protected] (and Intel-only /usr/local); use
  "$(brew --prefix openssl@3)" which works on both architectures.
  Recommend the mfusepy extra (FUSE 2 + 3, first choice of the default
  BORG_FUSE_IMPL) instead of llfuse-only for macFUSE.
- Cygwin: python39 packages -> python311 (borg requires Python >= 3.11).
- Replace dead links: Guix package search, nixpkgs by-name path,
  OpenBSD ports on GitHub, macfuse/macfuse (renamed from osxfuse),
  archlinux.org package URL.
- mention mfusepy in the pip/git install examples.
- remove a stray blank line that made a bullet list render loose.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-08-28 09:54:35 +02:00
Thomas WaldmannandClaude Opus 5 8d81cfabb7 use argon2 from openssl >= 3.2, drop argon2-cffi, fixes #7963
- src/borg/crypto/low_level.pyx: implement `argon2_hash` using OpenSSL's
  `EVP_KDF` API for ARGON2 (requires OpenSSL >= 3.2.0).
- src/borg/crypto/key.py: switch to the native `argon2_hash` implementation,
  removing `argon2-cffi` dependency.
- setup.py: require OpenSSL >= 3.2.0 for the crypto extension to ensure
  ARGON2 KDF support is available.
- pyproject.toml: drop `argon2-cffi` dependency.
- docs: update installation requirements and security documentation to
  reflect the transition to OpenSSL for Argon2.

The lanes are computed in parallel via OpenSSL's thread pool: OpenSSL's
Argon2 only uses threads if OSSL_set_max_threads() enabled the thread pool
and a "threads" parameter > 1 is given. Passing threads=1 would compute the
4 lanes of our default parallelism=4 sequentially, and unlocking would get
slower than it was with argon2-cffi, which used real threads for the lanes.
The thread count only affects speed, never the derived key (only the lanes
parameter does), so this is fully compatible with existing keys.
Apple M-series (OpenSSL 3.6.3), borg defaults (t=3, m=64 MiB, p=4):
threads=1: 83 ms, threads=4: 29 ms (2.8x faster).

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-08-23 17:50:13 +02:00
Thomas WaldmannandClaude Fable 5 2927349210 mount: tell why FUSE support is unavailable, see #8657
- fuse_impl: record the import error of each FUSE implementation that
  failed to load. also catch non-ImportError failures: mfusepy raises
  OSError at import time if libfuse is missing (and AttributeError /
  NotImplementedError in other cases), which previously crashed borg
  with a traceback instead of a clean error.
- borg mount: show the recorded errors, so users see the actual cause
  (e.g. a missing shared library) instead of just "no FUSE support".
- sysinfo: report mfusepy as the active FUSE implementation (it showed
  "fuse: None" although mounting worked) and include the recorded
  import errors if no implementation loaded, so debug output pasted
  into issues shows why.
- docs: note that third-party binaries might lack FUSE support.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-08-21 12:40:38 +02:00
Thomas Waldmann dd4ba13066 remove python 3.10 support (master branch), fixes #9707 2026-06-06 15:34:05 +02:00
trxvorr d7bbcfb98b archiver: warn about MSYS2 path translation, fixes #9339
This adds a runtime warning when running under MSYS2/Git Bash without the necessary environment variables to disable automatic path translation. The documentation is also updated to explain this behavior and how to mitigate it.
2026-03-15 20:54:59 +05:30
Thomas Waldmann 0f1e3f90fe CI: use locked requirements, add canary job, fixes #9361 2026-03-12 15:01:00 +01:00
Suryansh Pal ba6706395a use xxhash from PyPI, fixes #6535 2026-03-08 13:06:01 +01:00
defnvary 4344eb37d1 use zstd from python stdlib or backport.zstd, closes #9261 2026-02-23 00:33:21 +05:30
Mrityunjay Raj d712776b42 docs: replace insecure http:// links with https://, fixes #9302 2026-02-13 01:59:19 +05:30
Fabian Fröhlich c7073ca06d Add a note that you need to install boto3 if you want to use s3/b2 URLs in the docs (#9273) 2026-01-25 21:08:22 +01:00
Thomas Waldmann 661d2b6c5d docs: mfusepy >= 3.1.0 is required 2025-12-23 16:13:50 +01:00
Thomas Waldmann 43c7878a56 docs: update installation requirements and BORG_FUSE_IMPL about mfusepy 2025-12-20 19:31:51 +01:00
Thomas Waldmann 3120f9cd1c fixed typos and grammar (AI)
this was done by Junie AI.
2025-09-23 14:56:23 +02:00
TW 5b85f47618 Merge pull request #9015 from PhrozenByte/docs-build-src-version
Update install docs to include `SETUPTOOLS_SCM_PRETEND_VERSION`
2025-09-21 15:43:12 +02:00
Daniel Rudolf 5b765b9ec5 Add Arch Linux to installing from source docs
Note that Arch Linux usually has no separate `-dev` packages, but ships development headers with the normal package.
2025-09-19 16:55:45 +02:00
Daniel Rudolf 8f63d984be Update install docs to include SETUPTOOLS_SCM_PRETEND_VERSION 2025-09-13 20:37:52 +02:00
Thomas Waldmann 5c3d9dec4b remove support for / testing on Python 3.9
Python 3.9 will run out of upstream support 2025-10 anyway.
So we can also drop it right now and have faster CI testing.
2025-04-24 22:29:55 +02:00
Thomas Waldmann 2d033e7155 docs: update install docs, fixes #8342.
the python package pkgconfig does not need to be "preinstalled"
anymore, because our pyproject.toml cares for that. otoh, the cli tool
pkg-config must be preinstalled so that libs and headers can be found
automagically.

Also be a bit more clear about the FUSE stuff.
2024-12-29 18:08:42 +01:00
Andreas Gruhler 9e0023c218 doc(installation): libffi required for argon2-cffi-bindings 2024-12-15 21:36:52 +01:00
Andreas Gruhler ca25453e10 doc(installation): add libffi-dev dependency 2024-12-15 16:08:27 +01:00
Thomas Waldmann 4c1a0b1ca0 msys2: disable SETUPTOOLS_USE_DISTUTILS=stdlib hack
The msys2 changelog says it is only needed for setuptools < 70.2.0:

https://www.msys2.org/docs/python/#known-issues

https://setuptools.pypa.io/en/stable/history.html#v70-2-0
2024-09-19 12:36:18 +02:00
Cthulhux a0f23f97e1 Update installation.rst
Moved..
2024-06-07 03:40:17 +02:00
Cthulhux de21d79e3d Fixed openSUSE dependencies in installation.rst
Tested with today's Tumbleweed
2024-06-06 22:32:41 +02:00
tree-wall 7bc6f90dd3 Installation: update Arch Linux repo name
The "community" repository was merged into the "extra" repo last year.

https://archlinux.org/news/git-migration-completed/
2024-06-02 19:21:48 +01:00
Thomas Waldmann 48afc4c519 requirements are defined in pyproject.toml 2024-02-09 17:37:42 +01:00
Stephen 438f1ddef7 docs: add brew bundle instructions (macOS) 2024-01-14 17:14:42 +01:00
Marc Kohaupt a6b016f894 feat(docs): use virtualenv on Cygwin
Hint for Cygwin users to make sure they use a virtual environment.
Not using a virtual environment will be likely troublesome if there is already a Python installed on Windows.
2023-10-09 12:35:33 +02:00
Thomas Waldmann be731334c3 docs: update macOS hint about full disk access 2023-07-04 23:55:06 +02:00
Rayyan Ansari 3174904ce3 docs: installation: Add instructions for Windows
Remove the old Windows README while we're at it.
2023-03-12 20:53:11 +00:00
Thomas Waldmann 506652d4b2 docs: remove OS directory from install docs
- links did not work that way
- each OS has its own headline and can be discovered easily without
  that directory
2023-03-11 18:50:22 +01:00
abebeos f9f33044cc add link to OS dependencies
The "Building a development environment" section links to the
"Using git" section. This can result in developers overseeing
the os dependencies necessity.

re #7356
2023-03-10 16:44:01 +00:00
Andreas Vögele 4b18980768 Installation: Update Fedora in distribution list
Fixes #7357
2023-02-16 18:27:48 +01:00
Paul D 8ada680c87 'Want' fixes
aka who are you to presume what I want?
2022-12-29 22:26:55 +00:00
Paul D 253d8e8d4e Docs grammar fixes
joined split infinitives, and relocated adverbs appropriately.
2022-12-29 22:26:54 +00:00
Thomas Waldmann ad7c7159b2 Merge branch 'master' into borg2 2022-07-27 13:49:50 +02:00
remyabel2 ddb805cd10 docs: add info on man page installation (#6888)
docs: add info about man page installation, fixes #6661
2022-07-27 12:48:27 +02:00
Thomas Waldmann 5c8a5f111f stop using libdeflate
borg2's new repo format does not need computing crc32 over big amounts of
(content) data any more (we now use xxh64 for that).

thus, having a quick crc32 implementation via libdeflate is not important
enough any more to rectify having libdeflate as a requirement.
2022-07-04 20:33:59 +02:00
Thomas Waldmann 51cf85e627 build_usage / build_man / doc updates 2022-06-25 21:58:19 +02:00
targhs 35c031ed2c Correct shell syntax for installation using git 2022-06-12 20:19:31 +05:30
Thomas Waldmann c592b20262 use openssl on openbsd, fixes #6474 2022-04-14 19:31:55 +02:00
Thomas Waldmann 359a347fdd docs: update link to ubuntu packages, fixes #6485 2022-03-26 18:06:08 +01:00
Thomas Waldmann b2ab823fea docs: update cygwin install notes to python 3.9 2022-03-26 17:56:54 +01:00
Thomas Waldmann 07cf06f9e1 docs: add libdeflate requirement to install docs, fixes #6446
there was no change required due to argon2-cffi, because that will be automatically installed by pip.
2022-03-26 17:52:46 +01:00