fuse_impl.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. """
  2. Loads the library for the FUSE implementation.
  3. """
  4. import os
  5. import types
  6. from .platform import ENOATTR # noqa
  7. BORG_FUSE_IMPL = os.environ.get("BORG_FUSE_IMPL", "mfusepy,pyfuse3,llfuse")
  8. hlfuse: types.ModuleType | None = None
  9. llfuse: types.ModuleType | None = None
  10. for FUSE_IMPL in BORG_FUSE_IMPL.split(","):
  11. FUSE_IMPL = FUSE_IMPL.strip()
  12. if FUSE_IMPL == "pyfuse3":
  13. try:
  14. import pyfuse3
  15. except ImportError:
  16. pass
  17. else:
  18. llfuse = pyfuse3
  19. has_llfuse = False
  20. has_pyfuse3 = True
  21. has_mfusepy = False
  22. has_any_fuse = True
  23. hlfuse = None # noqa
  24. break
  25. elif FUSE_IMPL == "llfuse":
  26. try:
  27. import llfuse as llfuse_module
  28. except ImportError:
  29. pass
  30. else:
  31. llfuse = llfuse_module
  32. has_llfuse = True
  33. has_pyfuse3 = False
  34. has_mfusepy = False
  35. has_any_fuse = True
  36. hlfuse = None # noqa
  37. break
  38. elif FUSE_IMPL == "mfusepy":
  39. try:
  40. import mfusepy
  41. except ImportError:
  42. pass
  43. else:
  44. hlfuse = mfusepy
  45. has_llfuse = False
  46. has_pyfuse3 = False
  47. has_mfusepy = True
  48. has_any_fuse = True
  49. break
  50. elif FUSE_IMPL == "none":
  51. pass
  52. else:
  53. raise RuntimeError("Unknown FUSE implementation in BORG_FUSE_IMPL: '%s'." % BORG_FUSE_IMPL)
  54. else:
  55. has_llfuse = False
  56. has_pyfuse3 = False
  57. has_mfusepy = False
  58. has_any_fuse = False