From 663732c8bda5d83848c7736cf6544754e796e6cb Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Sat, 20 Dec 2025 18:55:28 +0100 Subject: [PATCH 1/2] move ENOATTR definition to borg.platform.base That also gets imported into borg.platform, so it is easily available from there. --- src/borg/platform/base.py | 6 +++++- src/borg/platform/xattr.py | 7 ------- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/borg/platform/base.py b/src/borg/platform/base.py index 5798607b5..e044b0f95 100644 --- a/src/borg/platform/base.py +++ b/src/borg/platform/base.py @@ -24,7 +24,11 @@ API_VERSION = "1.2_05" fdatasync = getattr(os, "fdatasync", os.fsync) has_posix_fadvise = hasattr(os, "posix_fadvise") -from .xattr import ENOATTR +try: + ENOATTR = errno.ENOATTR # type: ignore[attr-defined] +except AttributeError: + # on some platforms, ENOATTR is missing, use ENODATA there + ENOATTR = errno.ENODATA # type: ignore[attr-defined] def listxattr(path, *, follow_symlinks=False): diff --git a/src/borg/platform/xattr.py b/src/borg/platform/xattr.py index fe679bca9..6bca47054 100644 --- a/src/borg/platform/xattr.py +++ b/src/borg/platform/xattr.py @@ -4,13 +4,6 @@ import os from ..helpers import Buffer -try: - ENOATTR = errno.ENOATTR # type: ignore[attr-defined] -except AttributeError: - # on some platforms, ENOATTR is missing, use ENODATA there - ENOATTR = errno.ENODATA # type: ignore[attr-defined] - - buffer = Buffer(bytearray, limit=2**24) From 9ae6da88aac1d0f299f66343be24bc6d27a50773 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Sat, 20 Dec 2025 19:00:38 +0100 Subject: [PATCH 2/2] import ENOATTR from borg.platform --- src/borg/fuse.py | 4 ++-- src/borg/testsuite/archiver/mount_cmds_test.py | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/borg/fuse.py b/src/borg/fuse.py index 44c17c134..14e714213 100644 --- a/src/borg/fuse.py +++ b/src/borg/fuse.py @@ -12,7 +12,7 @@ from signal import SIGINT from .constants import ROBJ_FILE_STREAM, zeros from .fuse_impl import llfuse, has_pyfuse3 - +from .platform import ENOATTR if has_pyfuse3: import trio @@ -638,7 +638,7 @@ class FuseOperations(llfuse.Operations, FuseBackend): try: return item.get("xattrs", {})[name] or b"" except KeyError: - raise llfuse.FUSEError(llfuse.ENOATTR) from None + raise llfuse.FUSEError(ENOATTR) from None @async_wrapper def lookup(self, parent_inode, name, ctx=None): diff --git a/src/borg/testsuite/archiver/mount_cmds_test.py b/src/borg/testsuite/archiver/mount_cmds_test.py index 2bee80200..6209ad708 100644 --- a/src/borg/testsuite/archiver/mount_cmds_test.py +++ b/src/borg/testsuite/archiver/mount_cmds_test.py @@ -7,6 +7,7 @@ import pytest from ... import xattr, platform from ...constants import * # NOQA +from ...platform import ENOATTR from ...storelocking import Lock from ...helpers import flags_noatime, flags_normal from .. import has_lchflags, llfuse @@ -155,7 +156,7 @@ def test_fuse(archivers, request): try: xattr.getxattr(out_fn, b"user.foo") except OSError as e: - assert e.errno == llfuse.ENOATTR + assert e.errno == ENOATTR else: assert False, "expected OSError(ENOATTR), but no error was raised" except OSError as err: