1
0
Fork 0
mirror of https://github.com/borgbackup/borg.git synced 2025-02-22 22:22:27 +00:00
Commit graph

270 commits

Author SHA1 Message Date
Thomas Waldmann
a255e91988 cythonize: set language_level to 3, fixes #4214 2018-12-15 18:52:26 +01:00
Thomas Waldmann
07f89d4518 msgpack: also allow version 0.6.0 2018-12-11 01:55:18 +01:00
Thomas Waldmann
2be5446098 Revert "drop support for python 3.5, fixes #3919"
This reverts commit 55314f807e.
2018-12-11 00:53:43 +01:00
Thomas Waldmann
751cd2caed add python 3.7 to pypi metadata 2018-08-06 17:48:27 +02:00
Thomas Waldmann
55314f807e drop support for python 3.5, fixes #3919
if you do not have python 3.6.x, you can still use borg 1.1.x or 1.0.x.

another option is to use the fat binary from github releases, which
includes python 3.6 and all other stuff needed.
2018-06-30 21:02:19 +02:00
Thomas Waldmann
06f2378458 setup.py: move build_man / build_usage code to setup_docs.py
brings setup.py down from 800 to 300 lines.
2018-06-12 21:06:01 +02:00
Thomas Waldmann
39a7078741 modernize / simplify llfuse requirements
DO NOT BACKPORT TO 1.1-maint / 1.0-maint.

master branch will still take a while until next release,
so we can safely require llfuse >= 1.1 (May 2016).
2018-06-12 20:49:23 +02:00
Thomas Waldmann
d0bed00e9a remove pyzmq package requirement, not used yet 2018-06-12 20:38:21 +02:00
Thomas Waldmann
715c3d6824 switch to "msgpack" pypi pkg name, fixes #3890
MASTER BRANCH ONLY, DO NOT BACKPORT TO 1.1 or 1.0!

As there are no 0.4.x msgpack releases (under this new name, 0.4.x
used to be named "msgpack-python"), currently only 0.5.6 can be
recommended. See comments for other versions that are acceptable
under certain conditions.

We will add new msgpack versions later, after testing them.
2018-06-12 19:34:40 +02:00
Eli Schwartz
b5d22b5fba
Embrace environment markers (a.k.a. PEP 508 compliance)!
Failure to use environment markers means the dependencies are
unconditionally added at build time based on the host instead of being
always present and evaluated at runtime on the target; e.g. wheels have
the wrong information.

Also use python_requires. This teaches pip how to natively comprehend
when the current version of python is not supported by borg.

Returns errors in the format:
borgbackup requires Python '>=3.5' but the running Python is $oldver
2018-06-11 22:29:16 -04:00
Thomas Waldmann
ab6e6314dd revert to using system compression libs, fixes #3797
we temporarily used the updated, bundled lz4 and zstd code for testing
purposes, but now going back to using system provided libs by default.

(cherry picked from commit 66084c7234)
2018-06-10 09:49:04 +05:30
Thomas Waldmann
60a5d6e59e temporarily prefer bundled lz4 to test it
(cherry picked from commit bf6fa04650)
2018-06-08 17:03:35 +05:30
Thomas Waldmann
89c7093048 fix package long description, fixes #3854
(cherry picked from commit a318c3bb66)
2018-05-26 23:30:21 +02:00
Thomas Waldmann
d2884d3317 temporarily prefer bundled zstd to test it
(cherry picked from commit 6a6ad89f5b)
2018-05-18 22:30:38 +02:00
Thomas Waldmann
2c47b4596f update msgpack requirement, fixes #3753
(cherry picked from commit 5be756a0c6)
2018-05-18 19:30:24 +02:00
Rémi Oudin
318fa2e473 Add a version hint for llfuse for python3.7
Python 3.7 requires llfuse >= 1.3.4.
Fixes https://github.com/borgbackup/borg/issues/3804
2018-05-14 20:22:23 +02:00
Nic Donaldson
83c8734d70 Update setup.py to use a newer Cython/setuptools API for compiling .pyx -> .c (#3788)
update build process to use newer Cython/setuptools APIs

Cython.Distutils.build_ext has been deprecated, and the recommended replacement
is Cython.Build.cythonize.

setuptools.Extension will convert the file extension .pyx -> .c so there's no
need to duplicate the functionality. This allows the removal of the special
Sdist logic when cython is available.

cythonize will compile .pyx -> .c, but the resulting Extension's files won't be
included in sdist unless the Extension is in ext_modules. We don't want the
platform extensions in ext_modules though because that will break compilation,
so the platform .c files were added to the manifest.

- removed some unnecessary distutils imports and moved some imports for better
  visibility

- stop cythonize from running in some common use cases like 'clean'
2018-04-28 18:06:10 +02:00
Thomas Waldmann
9cf8d57f51 do .h file content checks in binary mode, fixes #3544
we can't know the encoding header file authors will use,
so using binary for our simple checks is the safest way.
2018-01-27 19:49:42 +01:00
Thomas Waldmann
a71a83c380 require msgpack >= 0.4.6 and < 0.6.0, forbid 0.5.0.
maybe this is the easiest way for us to deal with msgpack compatibility.

0.5.0 release had some troubles:
- FutureWarning on stderr disturbing other output there, breaking tests
- pip install -U broken due to a pip issue with the transisition pkg
  which was needed due to the package rename (ImportError for msgpack)
- some linux dists not packaging the transition pkg
2018-01-10 07:23:57 +01:00
Thomas Waldmann
4a2fec32b6 crypto.low_level extension: build blake2 like zstd, see #3415 2017-12-18 01:06:30 +01:00
Thomas Waldmann
fe48caf853 fix lz4 deprecation warning, require lz4 >= 1.7.0 (r129)
as we bundle lz4 1.8.0 now, platform not having a recent liblz4 can
now just use the bundled code.
2017-12-18 00:53:26 +01:00
Thomas Waldmann
9b6924d27f rename BORG_LZ4_PREFIX env var to BORG_LIBLZ4_PREFIX
consistency:
we also have BORG_LIBB2_PREFIX and BORG_LIBZSTD_PREFIX.
2017-12-18 00:53:26 +01:00
Thomas Waldmann
73a70082c2 compress extension: build lz4 like zstd, see #3415 2017-12-18 00:53:26 +01:00
TW
e203b8739b
Merge pull request #3411 from ThomasWaldmann/zstd
add zstd compression
2017-12-15 01:55:20 +01:00
Thomas Waldmann
34b92ffdaa support code to build bundled zstd code into the compress extension
setup_zstd.py modified so it is just amending the Extension() kwargs,
but the Extension is initialized by the caller.

this way, amending can happend multiple times (e.g. for multiple
compression algorithms).

also:
- move include/library dirs processing for system-library case
- move system zstd prefix detection to setup_zstd module
- cosmetic: setup.py whitespace fixes
- prefer system zstd option, document zstd min. requirement
2017-12-15 00:29:26 +01:00
Thomas Waldmann
aec36f64a2 zstd: use own Cython-based binding, remove python-zstandard dep
currently requires an externally available libzstd >= 1.3.0,
no bundled zstd yet.
2017-12-15 00:29:26 +01:00
Thomas Waldmann
11b2311e6e add zstd compression
based on willyvmm's work in PR #3116, but some changes:

- removed any mulithreading changes
- add zstandard in setup.py install_requires
- tests
- fix: minimum compression level is 1 (not 0)
- use 3 for the default compression level
- use ID 03 00 for zstd
- only convert to bytes if we don't have bytes yet
- move zstd code so that code blocks are ordered by ID
- other cosmetic fixes
2017-12-15 00:29:26 +01:00
Thomas Waldmann
1f5b8c9219 fix building the "borg prune" man page, fixes #3398
will fix all ".. highlight:: none" issues (just killing it).

also a slight punctuation fix, so there is a dot at the end of
the prune man page.
2017-12-13 04:33:50 +01:00
Milkey Mouse
897c003588
Don't generate HTML docs page for borgfs (fixes #3404) 2017-12-02 12:52:37 -08:00
Milkey Mouse
559ec0062e
Use name of command for "virtual man page" name
This makes it slightly easier to debug manpage issues without removing
the virtmanpage hack.
2017-11-25 17:06:02 -08:00
Thomas Waldmann
feb428b4e0 clean up and simplify packaging
1.1.2 was released with a sdist that included quite some files that
did not belong into the package (I tried nuitka at some time).

This was because the old MANIFEST.in / setup.py included all the stuff
in the package dir.

Now, setuptools_scm is to automatically deal with the INCLUDES and
MANIFEST.in only handles the EXCLUDES, so only committed files get
into the sdist (minus some we do not want).

Also, no .c .h .pyx files will be installed - they are not needed as
they have been compiled into binary files.
2017-11-25 13:48:46 +01:00
Milkey Mouse
17d5c794d3
Generate man page for borgfs (fixes #3216) 2017-11-10 11:25:19 -08:00
Thomas Waldmann
bf3f8e5672 implement simple "issue" role for manpage generation, fixes #3075 2017-10-07 04:11:29 +02:00
TW
902581a96c Merge pull request #3090 from ThomasWaldmann/fuse-version-comments
add some comments about recent fuse versions to setup.py
2017-10-06 20:25:41 +02:00
Thomas Waldmann
ce956fa0af add some comments about recent fuse versions to setup.py 2017-10-06 20:01:17 +02:00
Thomas Waldmann
be9fb349de check for py 3.5 minimum requirement in setup.py
we do not test on 3.4 any more and have dropped support for it.
so we better enforce it in setup.py also.
2017-10-06 19:38:28 +02:00
Thomas Waldmann
a5c6a50ebe increase Python minimum requirement to 3.5.0
also:
- drop testing on 3.4
- add some TODO for the docs and vagrant machines
2017-07-29 20:55:04 +02:00
enkore
5abfa0b266 Merge pull request #2887 from enkore/f/mt-1a
multithreading: add pyzmq dep, chunker GIL
2017-07-29 14:36:01 +02:00
Marian Beermann
55e0c43c53 add zeromq dependency 2017-07-29 11:58:01 +02:00
Thomas Waldmann
92080f9572 crypto: add functions missing in openssl 1.0.x 2017-07-27 23:22:31 +02:00
Thomas Waldmann
73e5ac4a2b setup.py: fix same loop variables
lgtm:
Nested loops in which the target variable is the same for each loop make
the behavior of the loops difficult to understand.

(not really here, just wanted to get rid of lgtm warning)
2017-07-22 02:03:42 +02:00
enkore
12fd244801 Merge pull request #2748 from enkore/f/cleanup-argparse2
archiver: more argparse cleanup, redundant options, missing metavars
2017-06-27 10:05:21 +02:00
Marian Beermann
12bcccc0d6 docs: html: include group description in output 2017-06-26 23:10:12 +02:00
Thomas Waldmann
8aba5772b5 include attic.tar.gz when installing the package 2017-06-26 22:23:02 +02:00
Marian Beermann
88ae1ebf33 docs: format metavars more accurately 2017-06-21 00:13:33 +02:00
Marian Beermann
a9059a64bd docs: use DOM ready event, not document loaded event 2017-06-20 15:48:30 +02:00
Marian Beermann
9d33ff1720 docs: skip empty option groups 2017-06-20 15:30:20 +02:00
Marian Beermann
e76fae0545 docs: uniform tables for listing options (HTML only) 2017-06-20 15:23:52 +02:00
Marian Beermann
a1a92bf00f docs: less space waste following "Common options" 2017-06-20 11:53:36 +02:00
Marian Beermann
6290b73863 docs: more compact options formatting 2017-06-20 11:48:46 +02:00
Marian Beermann
48e815883f docs: usage: fix unintended block quota in common options 2017-06-18 02:07:37 +02:00
enkore
d06ee5648c Merge pull request #2572 from enkore/f/fastcachesync
Improve cache sync speed
2017-06-10 17:12:51 +02:00
Marian Beermann
3f8a0221ee Revert "move chunker to borg.algorithms"
This reverts commit 956b50b29c.

# Conflicts:
#	setup.py
#	src/borg/archive.py
#	src/borg/helpers.py
2017-06-07 23:51:42 +02:00
Marian Beermann
0d6064e7f3 docs: fix build_man for relocated examples 2017-06-07 16:29:37 +02:00
Marian Beermann
13adc80cde docs: usage: avoid bash highlight, [options] instead of <options> 2017-06-07 00:44:53 +02:00
Marian Beermann
8fb7db71bc docs: split usage 2017-06-07 00:38:48 +02:00
Marian Beermann
c786a5941e CacheSynchronizer: redo as quasi FSM on top of unpack.h
This is a (relatively) simple state machine running in the
data callbacks invoked by the msgpack unpacking stack machine
(the same machine is used in msgpack-c and msgpack-python,
changes are minor and cosmetic, e.g. removal of msgpack_unpack_object,
removal of the C++ template thus porting to C and so on).

Compared to the previous solution this has multiple advantages
- msgpack-c dependency is removed
- this approach is faster and requires fewer and smaller
  memory allocations

Testability of the two solutions does not differ in my
professional opinion(tm).

Two other changes were rolled up; _hashindex.c can be compiled
without Python.h again (handy for fuzzing and testing);
a "small" bug in the cache sync was fixed which allocated too
large archive indices, leading to excessive archive.chunks.d
disk usage (that actually gave me an idea).
2017-06-02 17:43:15 +02:00
Marian Beermann
740898d83b CacheSynchronizer 2017-06-02 17:43:14 +02:00
Marian Beermann
6c91a750d1 algorithms: rename crc32 to checksums 2017-06-01 21:26:42 +02:00
Marian Beermann
0a295dd753 setup.py clean to remove compiled files 2017-05-25 17:58:57 +02:00
enkore
226d1f6094 Revert "docs: borg_domain for custom priority index entries" 2017-05-22 20:45:29 +02:00
Marian Beermann
7284413e3f docs: borg_domain for custom priority index entries 2017-05-22 20:08:11 +02:00
Marian Beermann
d5edb011f0 support common options 2017-05-14 18:45:20 +02:00
Marian Beermann
c99de523ea remove duplicated setup.py line 2017-05-05 14:42:41 +02:00
Marian Beermann
a976e11a63 create crypto package with key, keymanager, low_level 2017-05-02 20:49:27 +02:00
Marian Beermann
956b50b29c move chunker to borg.algorithms 2017-05-02 19:15:01 +02:00
Marian Beermann
fa381ffcbe create package borg.algorithms with borg.algorithms.crc32 module 2017-05-02 18:53:54 +02:00
Marian Beermann
475d53d9ef docs: kill api page 2017-03-25 15:41:11 +01:00
Marian Beermann
788b608aa9 setup.py build_usage/build_man fixes 2017-02-14 23:02:56 +01:00
Marian Beermann
44798e0edd setup.py: build_api: sort file list for determinism
# Conflicts:
#	docs/api.rst
#	setup.py

Original-Commit: e208d115
2017-02-13 21:24:33 +01:00
Martin Hostettler
179f1bc147 Add qr html export mode to key export command 2017-02-13 21:24:33 +01:00
Marian Beermann
1d9378f12c man pages: generate page for subparsers, eg. borg-key(1)
Conflicts:
	docs/man/borg-key.1
2017-02-12 15:28:59 +01:00
Marian Beermann
fa24e1f38f man pages: add borg(1) master/intro page 2017-02-12 15:28:59 +01:00
Marian Beermann
0710bbd40e docs: create: move item flags to main doc 2017-02-12 15:28:58 +01:00
Marian Beermann
83bb25d848 man pages: add EXAMPLES
hacky, but works. Better would be to make a separate docs/examples dir
with only the examples in them, separated by command.

Or, putting these different sections; DESCRIPTION, EXAMPLES and NOTES
into the --help doc, but separately of course, so that they can be aptly
formatted for different media (html, --help, man).
2017-02-05 15:46:46 +01:00
Marian Beermann
e5ea876f90 man pages: remove reference to borg(1) -- would have to be written first
A compact introduction and perhaps a condensed quickstart would
be good for borg(1).
2017-02-05 15:46:44 +01:00
Marian Beermann
c7106e756e create real nice man pages 2017-02-05 15:46:09 +01:00
Marian Beermann
eace147611 setup.py: add crc32.c to sdist 2017-01-14 22:27:39 +01:00
Thomas Waldmann
e4c5db4efc posix platform module: only build / import on non-win32 platforms, fixes #2041
rather use a inverted check like "not windows".
also: add a base implementation for this stuff, just raising NotImplementedError
2017-01-14 14:48:49 +01:00
Marian Beermann
ecad0ed53a Merge branch '1.0-maint' into merge/1.0-maint
# Conflicts: ... everywhere ...
#	.travis.yml
#	Vagrantfile
#	borg/testsuite/key.py
#	docs/changes.rst
#	docs/quickstart.rst
#	docs/usage.rst
#	docs/usage/upgrade.rst.inc
#	src/borg/archive.py
#	src/borg/archiver.py
#	src/borg/crypto.pyx
#	src/borg/helpers.py
#	src/borg/key.py
#	src/borg/remote.py
#	src/borg/repository.py
#	src/borg/testsuite/archive.py
#	src/borg/testsuite/archiver.py
#	src/borg/testsuite/crypto.py
#	src/borg/testsuite/helpers.py
#	src/borg/testsuite/repository.py
#	src/borg/upgrader.py
#	tox.ini
2017-01-12 15:01:41 +01:00
Thomas Waldmann
7d4d7e7901 setup.py: add Python 3.6 qualifier 2017-01-04 01:03:18 +01:00
Marian Beermann
9afebead84 two fast CRC implementations
CRC slice by 8 for generic CPUs outperforms zlib CRC32 on ppc
and x86 (ARM untested but expected to as well).

PCLMULQDQ derived from Intel's zlib patches outperforms every other
CRC implementation by a huge margin.
2017-01-02 15:54:14 +01:00
Marian Beermann
5e1cb9d899 Add tertiary authentication for metadata (TAM) 2016-12-20 22:53:53 +01:00
Thomas Waldmann
c855c687eb Merge branch '1.0-maint' 2016-12-14 03:33:53 +01:00
Marian Beermann
b885841c39 make item native code
This makes an surprisingly large difference. Test case: ~70000 empty files.
(Ie. little data shoveling, lots of metadata shoveling). Before: 9.1 seconds
+- 0.1 seconds. After: 8.4 seconds +- 0.1 seconds.). That's a huge
win for changing a few lines.

I'd expect that this improves performance in almost all areas that touch
the items (list, delete, prune).
2016-12-03 00:11:36 +01:00
Marian Beermann
288cac788c setup.py: build_usage: don't generate includes for debug commands 2016-12-02 13:28:49 +01:00
Marian Beermann
1c261f6b7b setup.py: fix build_usage not processing all commands 2016-12-02 13:25:24 +01:00
Thomas Waldmann
c83a124e65 Merge branch '1.0-maint' (into master) 2016-11-28 02:23:32 +01:00
Antoine Beaupré
fbada18b0d display README correctly on PyPI
I have discovered that PyPI is way more sensitive to RST warnings than
other platforms: warnings and errors will make the document not show
up correctly, which is currently the case here:

https://pypi.python.org/pypi/borgbackup/

the suggested changes remove Sphinx-specific markup from the output,
namely the badges and `|replacement|` patterns, but also the
`higlight` directive. this also requires adding tags to the README to
mark the badges to remove and removal of the `none` argument for the
`.. code-block::` element which was not having any significant in
Sphinx anyways.
2016-11-24 09:09:15 -05:00
Marian Beermann
c380d91805 fixes for flake 3.1.1 2016-11-14 21:50:20 +01:00
Marian Beermann
a31ca4f022
crypto: link against system libb2, if possible 2016-11-11 03:08:11 +01:00
Thomas Waldmann
09e74af7bf Merge branch '1.0-maint' 2016-10-24 21:41:20 +02:00
Thomas Waldmann
f10700841f add comment about requiring llfuse, fixes #1726 2016-10-19 00:56:22 +02:00
Thomas Waldmann
47cf501bc1 Merge branch '1.0-maint' into merge-1.0-maint 2016-09-27 22:35:30 +02:00
Martin Hostettler
fe9816d8d4 setup.py: Fix build_usage to always process all commands. 2016-09-27 22:34:19 +02:00
Thomas Waldmann
2a864be84f Merge branch '1.0-maint' into merge-1.0-maint
# Conflicts:
#	setup.py
#	src/borg/archiver.py
#	src/borg/helpers.py
2016-09-27 21:31:41 +02:00
Martin Hostettler
a11436cfb6 setup.py: Add subcommand support to build_usage. 2016-09-25 17:11:56 +02:00
Thomas Waldmann
3baa8a3728 Merge branch '1.0-maint'
# Conflicts:
#	docs/changes.rst
#	docs/usage/mount.rst.inc
#	src/borg/archive.py
#	src/borg/archiver.py
#	src/borg/fuse.py
#	src/borg/testsuite/archiver.py
2016-07-11 01:23:27 +02:00
Thomas Waldmann
5660cd1f96 fix most non-python-source related sphinx warnings
literal blocks must be followed by an empty line

suppressed the non-local image uri warning via sphinx config

the links on the resources page must have different label texts

setup.py: do not generate pointless "::\n" - it does not create a literal block if the stuff below is not indented
2016-07-10 17:25:51 +02:00
Thomas Waldmann
12f55f4e9f Merge branch '1.0-maint' 2016-07-06 01:33:53 +02:00