Commit Graph

7337 Commits

Author SHA1 Message Date
Thomas Waldmann 4bb42d2a00
do not return the rc from Archiver methods
this is not needed and getting rid of it makes
the code / behaviour simpler to understand:

if a fatal error is detected, we throw an exception.

if we encounter something warning worthy, we emit and collect the warning.

in a few cases, we directly call set_ec to set the
exit code as needed, e.g. if passing it through
from a subprocess.

also:
- get rid of Archiver.exit_code
- assert that return value of archiver methods is None
- fix a print_warning call to use the correct formatting method
2023-12-27 13:49:06 +01:00
Thomas Waldmann f81c6b5963
update frontends.rst error/warning list 2023-12-27 13:48:58 +01:00
Thomas Waldmann 69072f0c17
BackupErrors get caught and give warning RCs
also: use more union operators rather than .union()
2023-12-27 13:48:55 +01:00
Thomas Waldmann 83bf4d8c7d
raise BackupOSError subclasses 2023-12-27 13:48:52 +01:00
Thomas Waldmann 82f147f63f
add NotFoundWarning 2023-12-27 13:48:49 +01:00
Thomas Waldmann ead9fe4763
print_warning*: support warning msgids, fixes #7080 2023-12-27 13:48:47 +01:00
Thomas Waldmann 775b9f5560
extend errorlist script to warnings, update docs 2023-12-27 13:48:41 +01:00
Thomas Waldmann 2fda86ce61
more detailled warnings for source file OSErrors 2023-12-27 13:48:14 +01:00
Thomas Waldmann 53291a4ac0
BackupError->BackupWarning, BackupOSError->BackupOSWarning 2023-12-27 13:48:12 +01:00
Thomas Waldmann c2e8bb0468
move Backup*Error to errors module 2023-12-27 13:48:11 +01:00
Thomas Waldmann 482ac47ed8
new warnings infrastructure to support modern exit codes
- implement updating exit code based on severity, including modern codes
- extend print_warning with kwargs wc (warning code) and wt (warning type)
- update a global warnings_list with warning_info elements
- create a class hierarchy below BorgWarning class similar to Error class
- diff: change harmless warnings about speed to rc == 0
- delete --force --force: change harmless warnings to rc == 0

Also:

- have BackupRaceConditionError as a more precise subclass of BackupError
2023-12-27 13:47:52 +01:00
Thomas Waldmann 770f4117a5
get rid of some rare error classes, use RTError instead 2023-12-27 13:46:15 +01:00
Thomas Waldmann f6279eac9d
shorten TAMRequiredError error msg
Users using recently created repos (after borg 1.0.9) or
who followed the upgrade procedure of 1.0.9 or >1.2.4 will
never see this error msg.

So, have it as short as and similar to the ArchiveTAMRequiredError.
2023-12-27 13:46:13 +01:00
Thomas Waldmann 41351af635
fix dealing with remote repo Locking Exceptions
previously, this was handled in RPCError handler and always resulted in rc 2.

now re-raise Lock Exceptions locally, so it gives rc 2 (legacy) or 7x (modern).
2023-12-27 13:46:12 +01:00
Thomas Waldmann add7a22581
refactor set_ec usage
- _export_tar: remove unneeded call to set_ec
  print_warning() already sets the exit code to EXIT_WARNING.

- msgpack version check: raise Error instead of calling set_ec
2023-12-27 13:46:11 +01:00
Thomas Waldmann 74954faec8
use print_warning also in borg delete ::archive --force --force 2023-12-27 13:46:04 +01:00
Thomas Waldmann 62ad0369ef
update "modern" error RCs (docs and code) 2023-12-27 13:45:48 +01:00
Thomas Waldmann 422d1ba4ca
scripts/errorlist.py: improve error list docs generation
- also output modern rc and traceback yes/no
- recursive list of Error subclasses
2023-12-27 13:41:58 +01:00
Thomas Waldmann 2a13268e05
BORG_EXIT_CODES=modern can be set to get more specific process exit codes
If not set, it will default to "legacy" (always return 2 for errors).

This commit only changes the Error exception class and its subclasses.

The more specific exit codes need to be defined via .exit_mcode in the subclasses.
2023-12-27 13:41:46 +01:00
TW 94c461974d
Merge pull request #8005 from ThomasWaldmann/do-not-accept-empty-paths-1.4
PATH: do not accept empty strings, fixes #4221
2023-12-27 09:51:12 +01:00
Thomas Waldmann 8ad7a9ae77
PATH: do not accept empty strings, fixes #4221 2023-12-27 04:14:58 +01:00
TW 82cba46345
Merge pull request #8003 from ThomasWaldmann/vagrant-updates3-1.4
vagrant updates3 (1.4-maint)
2023-12-26 23:57:51 +01:00
Thomas Waldmann bd9d12c0ba
vagrant: use openssl 3.0 on macOS 2023-12-26 22:15:59 +01:00
Thomas Waldmann 8ce3f23dca
vagrant: use openssl 3.0 on openbsd 2023-12-26 22:11:00 +01:00
Thomas Waldmann f2b70cf0a6
vagrant: remove outdated comment 2023-12-26 22:10:59 +01:00
Thomas Waldmann e80fa4a189
vagrant: use generic/openbsd7 box 2023-12-26 22:10:53 +01:00
TW 60dcd53130
Merge pull request #8001 from ThomasWaldmann/move-conftest.py-1.4
move conftest.py to src/borg/testsuite, see #6386
2023-12-26 20:59:41 +01:00
TW 6ce8bd6fff
Merge pull request #8002 from ThomasWaldmann/remove-dateutil-1.4
get rid of dateutil
2023-12-26 20:59:02 +01:00
Thomas Waldmann 2d97dcf250
get rid of dateutil 2023-12-26 19:12:00 +01:00
Thomas Waldmann 63848349c0
move conftest.py to src/borg/testsuite, see #6386
there, it will be packaged and installed, so
that when one runs the testsuite after installing
the pypi package, it will find the conftest.py.
2023-12-26 18:55:05 +01:00
TW 68109e7af9
Merge pull request #7999 from ThomasWaldmann/fix-msgpack-version-check
msgpack version check: use same versions as pyproject.toml
2023-12-26 18:49:47 +01:00
Thomas Waldmann 0ab26a04b7
msgpack version check: use same versions as pyproject.toml 2023-12-26 17:15:45 +01:00
TW 218160a914
Merge pull request #7993 from ThomasWaldmann/latest-pyinstaller-1.4
use pyinstaller 6.3.0
2023-12-26 01:01:12 +01:00
Thomas Waldmann 7efef07db1
use pyinstaller 6.3.0 2023-12-26 00:08:37 +01:00
TW 453c8eda07
Merge pull request #7998 from ThomasWaldmann/vagrant-updates2-1.4
Vagrant updates2 (1.4-maint)
2023-12-25 20:34:11 +01:00
Thomas Waldmann b3d0b0abf6
vagrant: netbsd: test on py311 only
the netbsd vagrant machine tends to segfault, guess due to some kernel or virtualbox issue.

 thus, rather only do 1 tox run, so there is less output to review.
2023-12-25 20:02:08 +01:00
Thomas Waldmann 0c89f2c07b
vagrant: use python 3.9.4
3.9.3 was withdrawn by python.org and pyenv devs.
2023-12-25 19:25:49 +01:00
Thomas Waldmann 8088125f5c
vagrant: remove ubuntu 20.04 "focal" box
there are multiple issues with that box:
- it has a OpenSSL 1.x that is out of upstream support.
- has python 3.8

also:
- conservative users who did not upgrade yet to 22.04 will likely not jump onto borg 1.4 soon, but rather use borg 1.2.x.

We'll try to keep this box alive for borg 1.2.x, but for borg 1.4 it is "game over".
2023-12-25 16:36:13 +01:00
Thomas Waldmann 3d856a1c1e
vagrant: remove debian 9 "stretch" box
there are multiple issues with that box:
- debian 9 is out of support by debian, out of even lts support since 2022
- it has a OpenSSL 1.x that is also out of support and noone will care for it.
- has python 3.5

We'll try to keep this box alive for borg 1.2.x, but for borg 1.4 it is "game over".
2023-12-25 16:24:56 +01:00
TW 4f958ab5fe
Merge pull request #7997 from ThomasWaldmann/move-to-pyproj-1.4
move to pyproject.toml (1.4-maint)
2023-12-25 15:57:49 +01:00
TW 043294226b
Merge pull request #7996 from ThomasWaldmann/pyupgrade-py39-1.4
pyupgrade py39 (1.4-maint)
2023-12-25 04:21:41 +01:00
Thomas Waldmann 915e58653b
replace flake8 by ruff 2023-12-25 04:20:15 +01:00
Thomas Waldmann d4f6f137c3
move most settings to pyproject.toml
except: flake8, which will get replaced by ruff.
2023-12-25 03:45:44 +01:00
TW 0e446170a6
Merge pull request #7994 from ThomasWaldmann/update-docs-1.4
Update docs (1.4-maint)
2023-12-25 02:55:07 +01:00
TW c7ae13cb2a
Merge pull request #7995 from ThomasWaldmann/require-cython3-1.4
require Cython>=3 (1.4-maint)
2023-12-25 02:54:47 +01:00
Thomas Waldmann e3198b1df3
cosmetic: make code closer to master branch 2023-12-25 02:44:15 +01:00
Thomas Waldmann 8d2fd2a30e
ran pyupgrade --py39-plus ./**/*.py 2023-12-25 02:34:44 +01:00
Thomas Waldmann 2f541cedee
require Cython>=3 2023-12-25 02:20:50 +01:00
Thomas Waldmann d9061e9a07
update CHANGES 2023-12-25 02:13:05 +01:00
Thomas Waldmann c4571f4181
update SECURITY.md about borg 1.4 2023-12-25 02:13:03 +01:00