nixpkgs/pkgs/tools/backup/borg/default.nix
Martin Weinelt dbff9b5479
borgbackup: 1.1.10 → 1.1.11
Version 1.1.11 (2020-03-08)

Compatibility notes:

    When upgrading from borg 1.0.x to 1.1.x, please note:
        read all the compatibility notes for 1.1.0*, starting from 1.1.0b1.
        borg upgrade: you do not need to and you also should not run it.
        borg might ask some security-related questions once after upgrading. You can answer them either manually or via environment variable. One known case is if you use unencrypted repositories, then it will ask about a unknown unencrypted repository one time.
        your first backup with 1.1.x might be significantly slower (it might completely read, chunk, hash a lot files) - this is due to the --files-cache mode change (and happens every time you change mode). You can avoid the one-time slowdown by using the pre-1.1.0rc4-compatible mode (but that is less safe for detecting changed files than the default). See the --files-cache docs for details.
    1.1.11 removes WSL autodetection (Windows 10 Subsystem for Linux). If WSL still has a problem with sync_file_range, you need to set BORG_WORKAROUNDS=basesyncfile in the borg process environment to work around the WSL issue.

Fixes:

    fixed potential index corruption / data loss issue due to bug in hashindex_set, #4829 Please read and follow the more detailled notes close to the top of this document.
    upgrade bundled xxhash to 0.7.3, #4891 0.7.2 is the minimum requirement for correct operations on ARMv6 in non-fixup mode, where unaligned memory accesses cause bus errors. 0.7.3 adds some speedups and libxxhash 0.7.3 even has a pkg-config file now.
    upgrade bundled lz4 to 1.9.2
    upgrade bundled zstd to 1.4.4
    fix crash when upgrading erroneous hints file, #4922
    extract:
        fix KeyError for "partial" extraction, #4607
        fix "partial" extract for hardlinked contentless file types, #4725
        fix preloading for old (0.xx) remote servers, #4652
        fix confusing output of borg extract --list --strip-components, #4934
    delete: after double-force delete, warn about necessary repair, #4704
    create: give invalid repo error msg if repo config not found, #4411
    mount: fix FUSE mount missing st_birthtime, #4763 #4767
    check: do not stumble over invalid item key, #4845
    info: if the archive doesn't exist, print a pretty message, #4793
    SecurityManager.known(): check all files, #4614
    Repository.open: use stat() to check for repo dir, #4695
    Repository.check_can_create_repository: use stat() to check, #4695
    fix invalid archive error message
    fix optional/non-optional location arg, #4541
    commit-time free space calc: ignore bad compact map entries, #4796
    ignore EACCES (errno 13) when hardlinking the old config, #4730
    --prefix / -P: fix processing, avoid argparse issue, #4769

New features:

    enable placeholder usage in all extra archive arguments
    new BORG_WORKAROUNDS mechanism, basesyncfile, #4710
    recreate: support --timestamp option, #4745
    support platforms without os.link (e.g. Android with Termux), #4901 if we don't have os.link, we just extract another copy instead of making a hardlink.
    support linux platforms without sync_file_range (e.g. Android 7 with Termux), #4905

Other:

    ignore --stats when given with --dry-run, but continue, #4373
    add some ProgressIndicator msgids to code / fix docs, #4935
    elaborate on "Calculating size" message
    argparser: always use REPOSITORY in metavar, also use more consistent help phrasing.
    check: improve error output for matching index size, see #4829
    docs:
        changelog: add advisory about hashindex_set bug #4829
        better describe BORG_SECURITY_DIR, BORG_CACHE_DIR, #4919
        infos about cache security assumptions, #4900
        add FAQ describing difference between a local repo vs. repo on a server.
        document how to test exclusion patterns without performing an actual backup
        timestamps in the files cache are now usually ctime, #4583
        fix bad reference to borg compact (does not exist in 1.1), #4660
        create: borg 1.1 is not future any more
        extract: document limitation "needs empty destination", #4598
        how to supply a passphrase, use crypto devices, #4549
        fix osxfuse github link in installation docs
        add example of exclude-norecurse rule in help patterns
        update macOS Brew link
        add note about software for automating backups, #4581
        AUTHORS: mention copyright+license for bundled msgpack
        fix various code blocks in the docs, #4708
        updated docs to cover use of temp directory on remote, #4545
        add restore docs, #4670
        add a pull backup / push restore how-to, #1552
        add FAQ how to retain original paths, #4532
        explain difference between --exclude and --pattern, #4118
        add FAQs for SSH connection issues, #3866
        improve password FAQ, #4591
        reiterate that 'file cache names are absolute' in FAQ
    tests:
        cope with ANY error when importing pytest into borg.testsuite, #4652
        fix broken test that relied on improper zlib assumptions
        test_fuse: filter out selinux xattrs, #4574
    travis / vagrant:
        misc python versions removed / changed (due to openssl 1.1 compatibility) or added (3.7 and 3.8, for better borg compatibility testing)
        binary building is on python 3.5.9 now
    vagrant:
        add new boxes: ubuntu 18.04 and 20.04, debian 10
        update boxes: openindiana, darwin, netbsd
        remove old boxes: centos 6
        darwin: updated osxfuse to 3.10.4
        use debian/ubuntu pip/virtualenv packages
        rather use python 3.6.2 than 3.6.0, fixes coverage/sqlite3 issue
        use requirements.d/development.lock.txt to avoid compat issues
    travis:
        darwin: backport some install code / order from master
        remove deprecated keyword "sudo" from travis config
        allow osx builds to fail, #4955 this is due to travis-ci frequently being so slow that the OS X builds just fail because they exceed 50 minutes and get killed by travis.
2020-03-08 14:00:40 +01:00

72 lines
2.0 KiB
Nix

{ stdenv, python3, acl, libb2, lz4, zstd, openssl, openssh }:
python3.pkgs.buildPythonApplication rec {
pname = "borgbackup";
version = "1.1.11";
src = python3.pkgs.fetchPypi {
inherit pname version;
sha256 = "190gjzx83b6p64nqj840x382dgz9gfv0gm7wj585lnkrpa90j29n";
};
nativeBuildInputs = with python3.pkgs; [
# For building documentation:
sphinx guzzle_sphinx_theme
];
buildInputs = [
libb2 lz4 zstd openssl python3.pkgs.setuptools_scm
] ++ stdenv.lib.optionals stdenv.isLinux [ acl ];
propagatedBuildInputs = with python3.pkgs; [
cython llfuse
];
preConfigure = ''
export BORG_OPENSSL_PREFIX="${openssl.dev}"
export BORG_LZ4_PREFIX="${lz4.dev}"
export BORG_LIBB2_PREFIX="${libb2}"
export BORG_LIBZSTD_PREFIX="${zstd}"
'';
makeWrapperArgs = [
''--prefix PATH ':' "${openssh}/bin"''
];
postInstall = ''
make -C docs singlehtml
mkdir -p $out/share/doc/borg
cp -R docs/_build/singlehtml $out/share/doc/borg/html
make -C docs man
mkdir -p $out/share/man
cp -R docs/_build/man $out/share/man/man1
mkdir -p $out/share/bash-completion/completions
cp scripts/shell_completions/bash/borg $out/share/bash-completion/completions/
mkdir -p $out/share/fish/vendor_completions.d
cp scripts/shell_completions/fish/borg.fish $out/share/fish/vendor_completions.d/
mkdir -p $out/share/zsh/site-functions
cp scripts/shell_completions/zsh/_borg $out/share/zsh/site-functions/
'';
checkInputs = with python3.pkgs; [
pytest
];
checkPhase = ''
HOME=$(mktemp -d) py.test --pyargs borg.testsuite
'';
# 64 failures, needs pytest-benchmark
doCheck = false;
meta = with stdenv.lib; {
description = "A deduplicating backup program (attic fork)";
homepage = https://www.borgbackup.org;
license = licenses.bsd3;
platforms = platforms.unix; # Darwin and FreeBSD mentioned on homepage
maintainers = with maintainers; [ flokli dotlambda globin ];
};
}