aboutsummaryrefslogtreecommitdiffstats
path: root/pkgs/populate/tests/rsync.nix
blob: 6c14048500c6dc79f001ff952e0aeccb2615af7a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# rsync versions whose behaviour around .rsync-filter files differs: 3.4.1
# reads them like the files it transfers, and 3.5.0 opens them more
# strictly.  The tests run the scenarios depending on that with each,
# whatever version nixpkgs has.  rsync's own test suite doesn't run: these
# builds only need to behave like the releases.
{ lib, stdenv, fetchurl, fetchpatch, perl, updateAutotoolsGnuConfigScriptsHook
, acl, libiconv, popt, zlib
}:

let
  rsync = { version, hash, patches ? [] }: stdenv.mkDerivation {
    pname = "rsync";
    inherit version patches;
    src = fetchurl {
      # signed with key 9FEF 112D CE19 A0DC 7E88  2CB8 1BB2 4997 A853 5F6F
      url = "mirror://samba/rsync/src/rsync-${version}.tar.gz";
      inherit hash;
    };
    nativeBuildInputs = [ perl updateAutotoolsGnuConfigScriptsHook ];
    # With ACLs and extended attributes, which backups use (rsync -aAX).
    buildInputs = [ acl libiconv popt zlib ];
    configureFlags = [
      "--disable-lz4"
      "--disable-openssl"
      "--disable-xxhash"
      "--disable-zstd"
      "--enable-ipv6"
      "--with-included-zlib=no"
      "--with-nobody-group=nogroup"
    ];
    enableParallelBuilding = true;
    meta.mainProgram = "rsync";
  };
in {
  "3.4.1" = rsync {
    version = "3.4.1";
    hash = "sha256-KSS8s6Hti1UfwQH3QLnw/gogKxFQJ2R89phQ1l/YjFI=";
    patches = [
      # Compilation with GCC 15.
      (fetchpatch {
        url = "https://github.com/RsyncProject/rsync/commit/a4b926dcdce96b0f2cc0dc7744e95747b233500a.patch";
        hash = "sha256-UiEQJ+p2gtIDYNJqnxx4qKgItKIZzCpkHnvsgoxBmSE=";
      })
    ];
  };
  "3.5.0" = rsync {
    version = "3.5.0";
    hash = "sha256-x//R72U+mVQPZh5HywC3+crR7muXI5mxb5PWcmVuDTM=";
  };
}