summary refs log tree commit diff
path: root/pkgs/tools/backup/bup
diff options
context:
space:
mode:
authorMarc Weber <marco-oweber@gmx.de>2013-09-01 02:22:01 +0200
committerMarc Weber <marco-oweber@gmx.de>2013-09-01 02:22:01 +0200
commitc823bc37d6b50dcd4e183963922da829a193f0d7 (patch)
treee732aa0c128d85d504f1e4c4d6ee59401ecc82f8 /pkgs/tools/backup/bup
parent6f6bc030f9e8481220ea908ac9e68da174c225dd (diff)
downloadnixpkgs-c823bc37d6b50dcd4e183963922da829a193f0d7.tar
nixpkgs-c823bc37d6b50dcd4e183963922da829a193f0d7.tar.gz
nixpkgs-c823bc37d6b50dcd4e183963922da829a193f0d7.tar.bz2
nixpkgs-c823bc37d6b50dcd4e183963922da829a193f0d7.tar.lz
nixpkgs-c823bc37d6b50dcd4e183963922da829a193f0d7.tar.xz
nixpkgs-c823bc37d6b50dcd4e183963922da829a193f0d7.tar.zst
nixpkgs-c823bc37d6b50dcd4e183963922da829a193f0d7.zip
backup tools bup, storeBackup: implement sanity check
bup:
- update
- run make test (all tests seem to pass :-)
- add python.modules.readline
- add comment that there is no way to prune old revisions (yet)
Diffstat (limited to 'pkgs/tools/backup/bup')
-rw-r--r--pkgs/tools/backup/bup/default.nix45
1 files changed, 41 insertions, 4 deletions
diff --git a/pkgs/tools/backup/bup/default.nix b/pkgs/tools/backup/bup/default.nix
index e683df5a7fe..63356e5f7c1 100644
--- a/pkgs/tools/backup/bup/default.nix
+++ b/pkgs/tools/backup/bup/default.nix
@@ -1,6 +1,9 @@
 { stdenv, fetchgit, python, pyxattr, pylibacl, setuptools, fuse, git, perl, pandoc, makeWrapper
+, diffutils, writeTextFile, rsync
 , par2cmdline, par2Support ? false }:
 
+# keep in mind you cannot prune older revisions yet! (2013-06)
+
 assert par2Support -> par2cmdline != null;
 
 with stdenv.lib;
@@ -10,12 +13,14 @@ stdenv.mkDerivation {
 
   src = fetchgit {
     url = "https://github.com/bup/bup.git";
-    rev = "96c6fa2a70425fff1e73d2e0945f8e242411ab58";
-    sha256 = "0d9hgyh1g5qcpdvnqv3a5zy67x79yx9qx557rxrnxyzqckp9v75n";
+    rev = "98a8e2ebb775386cb7e66b1953df46cdbd4b4bd3";
+    sha256 = "ab01c70f0caf993c0c05ec3a1008b5940b433bf2f7bd4e9b995d85e81958c1b7";
   };
 
   buildInputs = [ python git ];
-  nativeBuildInputs = [ pandoc perl makeWrapper ];
+  nativeBuildInputs = [ pandoc perl makeWrapper rsync ];
+
+  enableParallelBuilding = true;
 
   patchPhase = ''
     substituteInPlace Makefile --replace "-Werror" ""
@@ -24,6 +29,12 @@ stdenv.mkDerivation {
       substituteInPlace $f --replace "/usr/bin/env python" "${python}/bin/python"
     done
     substituteInPlace Makefile --replace "./format-subst.pl" "perl ./format-subst.pl"
+    for t in t/*.sh t/configure-sampledata t/compare-trees; do
+      substituteInPlace $t --replace "/usr/bin/env bash" "$(type -p bash)"
+    done
+    substituteInPlace wvtestrun --replace "/usr/bin/env perl" "${perl}/bin/perl"
+
+    substituteInPlace t/test.sh --replace "/bin/pwd" "$(type -P pwd)"
   '' + optionalString par2Support ''
     substituteInPlace cmd/fsck-cmd.py --replace "['par2'" "['${par2cmdline}/bin/par2'"
   '';
@@ -40,7 +51,33 @@ stdenv.mkDerivation {
   postInstall = optionalString (elem stdenv.system platforms.linux) ''
     wrapProgram $out/bin/bup --prefix PYTHONPATH : \
       ${stdenv.lib.concatStringsSep ":"
-          (map (path: "$(toPythonPath ${path})") [ pyxattr pylibacl setuptools fuse ])}
+          (map (path: "$(toPythonPath ${path})") [ pyxattr pylibacl setuptools fuse python.modules.readline ])}
+
+    ## test it
+    make test
+
+    # if make test passes the following probably passes, too
+    backup_init(){
+      export BUP_DIR=$TMP/bup
+      PATH=$out/bin:$PATH
+      bup init
+    }
+    backup_make(){
+      ( cd "$1"; tar -cvf - .) | bup split -n backup
+    }
+    backup_restore_latest(){
+      bup join backup | ( cd "$1"; tar -xf - )
+    }
+    backup_verify_integrity_latest(){
+      bup fsck
+    }
+    backup_verify_latest(){
+      # maybe closest would be to mount or use the FTP like server ..
+      true
+    }
+
+    . ${import ../test-case.nix { inherit diffutils writeTextFile; }}
+    backup_test backup 100M
   '';
 
   meta = {