Make borg.platform a package

This commit is contained in:
Marian Beermann 2016-05-31 02:35:54 +02:00
parent 0333f91eb2
commit 0ca1a18b33
No known key found for this signature in database
GPG Key ID: 9B8450B91D1362C1
10 changed files with 62 additions and 50 deletions

View File

@ -45,10 +45,22 @@ compress_source = 'src/borg/compress.pyx'
crypto_source = 'src/borg/crypto.pyx'
chunker_source = 'src/borg/chunker.pyx'
hashindex_source = 'src/borg/hashindex.pyx'
platform_posix_source = 'src/borg/platform_posix.pyx'
platform_linux_source = 'src/borg/platform_linux.pyx'
platform_darwin_source = 'src/borg/platform_darwin.pyx'
platform_freebsd_source = 'src/borg/platform_freebsd.pyx'
platform_posix_source = 'src/borg/platform/posix.pyx'
platform_linux_source = 'src/borg/platform/linux.pyx'
platform_darwin_source = 'src/borg/platform/darwin.pyx'
platform_freebsd_source = 'src/borg/platform/freebsd.pyx'
cython_sources = [
compress_source,
crypto_source,
chunker_source,
hashindex_source,
platform_posix_source,
platform_linux_source,
platform_freebsd_source,
platform_darwin_source,
]
try:
from Cython.Distutils import build_ext
@ -56,7 +68,7 @@ try:
class Sdist(sdist):
def __init__(self, *args, **kwargs):
for src in glob('src/borg/*.pyx'):
for src in cython_sources:
cython_compiler.compile(src, cython_compiler.default_options)
super().__init__(*args, **kwargs)
@ -66,10 +78,10 @@ try:
'src/borg/crypto.c',
'src/borg/chunker.c', 'src/borg/_chunker.c',
'src/borg/hashindex.c', 'src/borg/_hashindex.c',
'src/borg/platform_posix.c',
'src/borg/platform_linux.c',
'src/borg/platform_freebsd.c',
'src/borg/platform_darwin.c',
'src/borg/platform/posix.c',
'src/borg/platform/linux.c',
'src/borg/platform/freebsd.c',
'src/borg/platform/darwin.c',
])
super().make_distribution()
@ -295,14 +307,14 @@ if not on_rtd:
Extension('borg.hashindex', [hashindex_source])
]
if sys.platform.startswith(('linux', 'freebsd', 'darwin')):
ext_modules.append(Extension('borg.platform_posix', [platform_posix_source]))
ext_modules.append(Extension('borg.platform.posix', [platform_posix_source]))
if sys.platform == 'linux':
ext_modules.append(Extension('borg.platform_linux', [platform_linux_source], libraries=['acl']))
ext_modules.append(Extension('borg.platform.linux', [platform_linux_source], libraries=['acl']))
elif sys.platform.startswith('freebsd'):
ext_modules.append(Extension('borg.platform_freebsd', [platform_freebsd_source]))
ext_modules.append(Extension('borg.platform.freebsd', [platform_freebsd_source]))
elif sys.platform == 'darwin':
ext_modules.append(Extension('borg.platform_darwin', [platform_darwin_source]))
ext_modules.append(Extension('borg.platform.darwin', [platform_darwin_source]))
setup(
name='borgbackup',

View File

@ -1,24 +0,0 @@
import sys
"""
Platform-specific APIs.
Public APIs are documented in platform_base.
"""
from .platform_base import acl_get, acl_set
from .platform_base import set_flags, get_flags
from .platform_base import SyncFile, sync_dir, fdatasync
from .platform_base import swidth, API_VERSION
if sys.platform.startswith('linux'): # pragma: linux only
from .platform_linux import acl_get, acl_set
from .platform_linux import set_flags, get_flags
from .platform_linux import SyncFile
from .platform_linux import swidth, API_VERSION
elif sys.platform.startswith('freebsd'): # pragma: freebsd only
from .platform_freebsd import acl_get, acl_set
from .platform_freebsd import swidth, API_VERSION
elif sys.platform == 'darwin': # pragma: darwin only
from .platform_darwin import acl_get, acl_set
from .platform_darwin import swidth, API_VERSION

View File

@ -0,0 +1,24 @@
import sys
"""
Platform-specific APIs.
Public APIs are documented in platform.base.
"""
from .base import acl_get, acl_set
from .base import set_flags, get_flags
from .base import SyncFile, sync_dir, fdatasync
from .base import swidth, API_VERSION
if sys.platform.startswith('linux'): # pragma: linux only
from .linux import acl_get, acl_set
from .linux import set_flags, get_flags
from .linux import SyncFile
from .linux import swidth, API_VERSION
elif sys.platform.startswith('freebsd'): # pragma: freebsd only
from .freebsd import acl_get, acl_set
from .freebsd import swidth, API_VERSION
elif sys.platform == 'darwin': # pragma: darwin only
from .darwin import acl_get, acl_set
from .darwin import swidth, API_VERSION

View File

@ -1,8 +1,8 @@
import os
from .helpers import user2uid, group2gid
from .helpers import safe_decode, safe_encode
from .platform_posix import swidth
from ..helpers import user2uid, group2gid
from ..helpers import safe_decode, safe_encode
from .posix import swidth
API_VERSION = 3

View File

@ -1,8 +1,8 @@
import os
from .helpers import posix_acl_use_stored_uid_gid
from .helpers import safe_encode, safe_decode
from .platform_posix import swidth
from ..helpers import posix_acl_use_stored_uid_gid
from ..helpers import safe_encode, safe_decode
from .posix import swidth
API_VERSION = 3

View File

@ -3,11 +3,11 @@ import re
import resource
import stat
from .helpers import posix_acl_use_stored_uid_gid
from .helpers import user2uid, group2gid
from .helpers import safe_decode, safe_encode
from .platform_base import SyncFile as BaseSyncFile
from .platform_posix import swidth
from ..helpers import posix_acl_use_stored_uid_gid
from ..helpers import user2uid, group2gid
from ..helpers import safe_decode, safe_encode
from .base import SyncFile as BaseSyncFile
from .posix import swidth
from libc cimport errno
from libc.stdint cimport int64_t

View File

@ -55,7 +55,7 @@ class Repository:
established by a COMMIT.
Note that the COMMIT can't establish consistency by itself, but only manages to do so with proper support from
the platform (including the hardware). See platform_base.SyncFile for details.
the platform (including the hardware). See platform.base.SyncFile for details.
A PUT inserts a key-value pair. The value is stored in the log entry, hence the repository implements
full data logging, meaning that all data is consistent, not just metadata (which is common in file systems).

View File

@ -102,7 +102,7 @@ class PlatformLinuxTestCase(BaseTestCase):
self.assert_in(group_entry_numeric, acl_access_numeric)
def test_utils(self):
from ..platform_linux import acl_use_local_uid_gid
from ..platform.linux import acl_use_local_uid_gid
self.assert_equal(acl_use_local_uid_gid(b'user:nonexistent1234:rw-:1234'), b'user:1234:rw-')
self.assert_equal(acl_use_local_uid_gid(b'group:nonexistent1234:rw-:1234'), b'group:1234:rw-')
self.assert_equal(acl_use_local_uid_gid(b'user:root:rw-:0'), b'user:0:rw-')