From f1f2b87fdd64c08c7b8625ffcdefa5fa7628e735 Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Wed, 20 Jan 2016 08:00:06 +0100 Subject: [PATCH] snapper: various tweaks and fixes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- pkgs/tools/misc/snapper/default.nix | 51 +++++++++++++++++++---------- 1 file changed, 33 insertions(+), 18 deletions(-) diff --git a/pkgs/tools/misc/snapper/default.nix b/pkgs/tools/misc/snapper/default.nix index 1a0c805a2ec..933788f5785 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 ]; }; }