about summary refs log tree commit diff
path: root/pkgs/tools/misc/snapper
diff options
context:
space:
mode:
authorTobias Geerinckx-Rice <tobias.geerinckx.rice@gmail.com>2016-01-20 08:00:06 +0100
committerTobias Geerinckx-Rice <tobias.geerinckx.rice@gmail.com>2016-01-20 09:21:44 +0100
commitf1f2b87fdd64c08c7b8625ffcdefa5fa7628e735 (patch)
treee6d14f9d5c5e8649dc276157edc3d137834c90ff /pkgs/tools/misc/snapper
parent72cd96a0e14775a92e677bc82841e95206f5d5a6 (diff)
snapper: various tweaks and fixes
Fix numerous configuration files referring to ‘/usr’ and ‘/lib’.

Some paths were still ending up in ‘/nix/store/.../nix/store/...’,
despite some well-intended hacks meant to avoid that. Replace them
with other hacks. It's all very fragile and ugly, so snapper should
feel right at home.

Oh, and `snapper create-config ~` still won't actually *do*
anything, because D-Bus (#12452). Use `--no-dbus` and add files
to ‘/etc’ as long as it complains.

Only fair that I help maintain this mess.
Diffstat (limited to 'pkgs/tools/misc/snapper')
-rw-r--r--pkgs/tools/misc/snapper/default.nix51
1 files changed, 33 insertions, 18 deletions
diff --git a/pkgs/tools/misc/snapper/default.nix b/pkgs/tools/misc/snapper/default.nix
index 1a0c805a2ec62..933788f57855d 100644
--- a/pkgs/tools/misc/snapper/default.nix
+++ b/pkgs/tools/misc/snapper/default.nix
@@ -1,16 +1,16 @@
 { stdenv, fetchFromGitHub
 , autoreconfHook, pkgconfig, docbook_xsl, libxslt, docbook_xml_dtd_45
 , acl, attr, boost, btrfs-progs, dbus_libs, diffutils, e2fsprogs, libxml2
-, lvm2, pam, utillinux }:
+, lvm2, pam, python, utillinux }:
 
 stdenv.mkDerivation rec {
-  name = "snapper-${ver}";
-  ver = "0.2.8";
+  name = "snapper-${version}";
+  version = "0.2.8";
 
   src = fetchFromGitHub {
     owner = "openSUSE";
     repo = "snapper";
-    rev = "v${ver}";
+    rev = "v${version}";
     sha256 = "1rj8vy6hq140pbnc7mjjb34mfqdgdah1dmlv2073izdgakh7p38j";
   };
 
@@ -20,33 +20,48 @@ stdenv.mkDerivation rec {
   ];
   buildInputs = [
     acl attr boost btrfs-progs dbus_libs diffutils e2fsprogs libxml2
-    lvm2 pam utillinux
+    lvm2 pam python utillinux
   ];
 
-  patchPhase = ''
-    # work around missing btrfs/version.h; otherwise, use "-DHAVE_BTRFS_VERSION_H"
-    substituteInPlace snapper/Btrfs.cc --replace "define BTRFS_LIB_VERSION (100)" "define BTRFS_LIB_VERSION (200)";
+  postPatch = ''
+    # Hard-coded root paths, hard-coded root paths everywhere...
+    for file in {client,data,pam,scripts}/Makefile.am; do
+      substituteInPlace $file \
+        --replace '$(DESTDIR)/usr' "$out" \
+        --replace "DESTDIR" "out" \
+        --replace "/usr" "$out"
+    done
+    substituteInPlace pam/Makefile.am \
+      --replace '/`basename $(libdir)`' "$out/lib"
   '';
 
-  configurePhase = ''
-    ./configure --disable-silent-rules --disable-ext4 --disable-btrfs-quota --prefix=$out
-    '';
+  configureFlags = [
+    "--disable-ext4"	# requires patched kernel & e2fsprogs
+  ];
 
-  makeFlags = "DESTDIR=$(out)";
+  enableParallelBuilding = true;
 
-  NIX_CFLAGS_COMPILE = [ "-I${libxml2}/include/libxml2" ];
+  NIX_CFLAGS_COMPILE = [
+    "-I${libxml2}/include/libxml2"
+  ];
 
-  # Probably a hack, but using DESTDIR and PREFIX makes everything work!
   postInstall = ''
-    cp -r $out/$out/* $out
-    rm -r $out/nix
-    '';
+    rm -r $out/etc/cron.*
+    patchShebangs $out/lib/zypp/plugins/commit/*
+    for file in \
+      $out/lib/pam_snapper/* \
+      $out/lib/systemd/system/* \
+      $out/share/dbus-1/system-services/* \
+    ; do
+      substituteInPlace $file --replace "/usr" "$out"
+    done
+  '';
 
   meta = with stdenv.lib; {
     description = "Tool for Linux filesystem snapshot management";
     homepage = http://snapper.io;
     license = licenses.gpl2;
     platforms = platforms.linux;
-    maintainers = [ maintainers.tstrobel ];
+    maintainers = with maintainers; [ nckx tstrobel ];
   };
 }