From 0c085950d76762a01acefc714b6d627c65df94c4 Mon Sep 17 00:00:00 2001 From: Rail Aliiev Date: Mon, 23 Mar 2020 15:52:40 -0400 Subject: [PATCH 1/2] znapzend: 0.18.0 -> 0.20.0 * Update znapzend and the dependencies * add autoreconfHook --- pkgs/tools/backup/znapzend/default.nix | 39 +++++++++++++------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/pkgs/tools/backup/znapzend/default.nix b/pkgs/tools/backup/znapzend/default.nix index b44564efb82..ecfc19d3ef3 100644 --- a/pkgs/tools/backup/znapzend/default.nix +++ b/pkgs/tools/backup/znapzend/default.nix @@ -1,27 +1,28 @@ -{ stdenv, fetchFromGitHub, fetchurl, perl, perlPackages, wget, autoconf, automake }: +{ stdenv, fetchFromGitHub, fetchurl, perl, perlPackages, wget, autoconf, automake, autoreconfHook }: let - # when upgrade znapzend, check versions of Perl libs here: https://github.com/oetiker/znapzend/blob/master/PERL_MODULES - Mojolicious-6-46 = perlPackages.buildPerlPackage rec { + # when upgrade znapzend, check versions of Perl libs here: https://github.com/oetiker/znapzend/blob/master/cpanfile + # pinned versions are listed at https://github.com/oetiker/znapzend/blob/master/thirdparty/cpanfile-5.26.1.snapshot + Mojolicious-8-35 = perlPackages.buildPerlPackage rec { pname = "Mojolicious"; - version = "6.46"; + version = "8.35"; src = fetchurl { url = "mirror://cpan/authors/id/S/SR/SRI/${pname}-${version}.tar.gz"; - sha256 = "0i3axmx4506fx5gms148pj65x6ys7flaz1aqjd8hd9zfkd8pzdfr"; + sha256 = "1bll0ahh5v1y3x0ql29klwsa68cj46wzqc385srsnn2m8kh2ak8h"; }; }; - MojoIOLoopForkCall-0-17 = perlPackages.buildPerlModule rec { + MojoIOLoopForkCall-0-20 = perlPackages.buildPerlModule rec { pname = "Mojo-IOLoop-ForkCall"; - version = "0.17"; + version = "0.20"; src = fetchurl { url = "mirror://cpan/authors/id/J/JB/JBERGER/${pname}-${version}.tar.gz"; - sha256 = "090qxz1nbah2qxvfg4whl6yp6q03qkx7a42751iai521nk1yavc8"; + sha256 = "19pih5x0ayxs2m8j29qwdpi6ky3w4ghv6vrmax3ix9r59hj6569b"; }; - propagatedBuildInputs = [ perlPackages.IOPipely Mojolicious-6-46 ]; + propagatedBuildInputs = [ perlPackages.IOPipely Mojolicious-8-35 ]; }; - version = "0.18.0"; - checksum = "1nlvw56viwgafma506slywfg54z6009jmzc9q6wljgr6mqfmmchd"; + version = "0.20.0"; + checksum = "15lb5qwksa508m9bj6d3n4rrjpakfaas9qxspg408bcqfp7pqjw3"; in stdenv.mkDerivation { pname = "znapzend"; @@ -34,9 +35,9 @@ stdenv.mkDerivation { sha256 = checksum; }; - buildInputs = [ wget perl MojoIOLoopForkCall-0-17 perlPackages.TAPParserSourceHandlerpgTAP ]; + buildInputs = [ wget perl MojoIOLoopForkCall-0-20 perlPackages.TAPParserSourceHandlerpgTAP ]; - nativeBuildInputs = [ autoconf automake ]; + nativeBuildInputs = [ autoconf automake autoreconfHook ]; preConfigure = '' sed -i 's/^SUBDIRS =.*$/SUBDIRS = lib/' Makefile.am @@ -55,23 +56,23 @@ stdenv.mkDerivation { postInstall = '' substituteInPlace $out/bin/znapzend --replace "${perl}/bin/perl" \ "${perl}/bin/perl \ - -I${Mojolicious-6-46}/${perl.libPrefix} \ + -I${Mojolicious-8-35}/${perl.libPrefix} \ -I${perlPackages.TAPParserSourceHandlerpgTAP}/${perl.libPrefix} \ - -I${MojoIOLoopForkCall-0-17}/${perl.libPrefix} \ + -I${MojoIOLoopForkCall-0-20}/${perl.libPrefix} \ -I${perlPackages.IOPipely}/${perl.libPrefix} \ " substituteInPlace $out/bin/znapzendzetup --replace "${perl}/bin/perl" \ "${perl}/bin/perl \ - -I${Mojolicious-6-46}/${perl.libPrefix} \ + -I${Mojolicious-8-35}/${perl.libPrefix} \ -I${perlPackages.TAPParserSourceHandlerpgTAP}/${perl.libPrefix} \ - -I${MojoIOLoopForkCall-0-17}/${perl.libPrefix} \ + -I${MojoIOLoopForkCall-0-20}/${perl.libPrefix} \ -I${perlPackages.IOPipely}/${perl.libPrefix} \ " substituteInPlace $out/bin/znapzendztatz --replace "${perl}/bin/perl" \ "${perl}/bin/perl \ - -I${Mojolicious-6-46}/${perl.libPrefix} \ + -I${Mojolicious-8-35}/${perl.libPrefix} \ -I${perlPackages.TAPParserSourceHandlerpgTAP}/${perl.libPrefix} \ - -I${MojoIOLoopForkCall-0-17}/${perl.libPrefix} \ + -I${MojoIOLoopForkCall-0-20}/${perl.libPrefix} \ -I${perlPackages.IOPipely}/${perl.libPrefix} \ " ''; From ba7e3c6cbafcf4c40db0580ac36996d5e65d6397 Mon Sep 17 00:00:00 2001 From: Rail Aliiev Date: Mon, 23 Mar 2020 16:13:06 -0400 Subject: [PATCH 2/2] Add new znapzend features to modules --- nixos/modules/services/backup/znapzend.nix | 35 ++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/nixos/modules/services/backup/znapzend.nix b/nixos/modules/services/backup/znapzend.nix index 203631a577f..98cd647f61a 100644 --- a/nixos/modules/services/backup/znapzend.nix +++ b/nixos/modules/services/backup/znapzend.nix @@ -372,6 +372,41 @@ in and zfs8 for more info. ''; + features.sendRaw = mkEnableOption '' + sendRaw feature which adds the options -w to the + zfs send command. For encrypted source datasets this + instructs zfs not to decrypt before sending which results in a remote + backup that can't be read without the encryption key/passphrase, useful + when the remote isn't fully trusted or not physically secure. This + option must be used consistently, raw incrementals cannot be based on + non-raw snapshots and vice versa. + ''; + features.skipIntermediates = mkEnableOption '' + Enable the skipIntermediates feature to send a single increment + between latest common snapshot and the newly made one. It may skip + several source snaps if the destination was offline for some time, and + it should skip snapshots not managed by znapzend. Normally for online + destinations, the new snapshot is sent as soon as it is created on the + source, so there are no automatic increments to skip. + ''; + features.lowmemRecurse = mkEnableOption '' + use lowmemRecurse on systems where you have too many datasets, so a + recursive listing of attributes to find backup plans exhausts the + memory available to znapzend: instead, go the slower + way to first list all impacted dataset names, and then query their + configs one by one. + ''; + features.zfsGetType = mkEnableOption '' + use zfsGetType if your zfs get supports a + -t argument for filtering by dataset type at all AND + lists properties for snapshots by default when recursing, so that there + is too much data to process while searching for backup plans. + If these two conditions apply to your system, the time needed for a + --recursive search for backup plans can literally + differ by hundreds of times (depending on the amount of snapshots in + that dataset tree... and a decent backup plan will ensure you have a lot + of those), so you would benefit from requesting this feature. + ''; }; };