summaryrefslogtreecommitdiffstats
path: root/pkgs/by-name/uc/ucarp/package.nix
blob: f683584288ec48a17ee3107413c7e4ab8cbe5a4c (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
{
  stdenv,
  lib,
  fetchurl,
  libpcap,
  nixosTests,
}:

stdenv.mkDerivation (finalAttrs: {
  pname = "ucarp";
  version = "1.5.2";

  src = fetchurl {
    url = "https://download.pureftpd.org/pub/ucarp/ucarp-${finalAttrs.version}.tar.bz2";
    sha256 = "0qidz5sr55nxlmnl8kcbjsrff2j97b44h9l1dmhvvjl46iji7q7j";
  };

  buildInputs = [ libpcap ];

  # Workaround build failure on -fno-common toolchains like upstream
  # gcc-10. Otherwise build fails as:
  #   ld: daemonize.o:/build/ucarp-1.5.2/src/ip_carp.h:73: multiple definition of
  #     `__packed'; ucarp.o:/build/ucarp-1.5.2/src/ip_carp.h:73: first defined here
  env.NIX_CFLAGS_COMPILE = "-fcommon";

  passthru.tests = { inherit (nixosTests) ucarp; };

  meta = {
    description = "Userspace implementation of CARP";
    longDescription = ''
      UCARP allows a couple of hosts to share common virtual IP addresses in
      order to provide automatic failover. It is a portable userland
      implementation of the secure and patent-free Common Address Redundancy
      Protocol (CARP, OpenBSD's alternative to the patents-bloated VRRP).

      Warning: This package has not received any upstream updates for a long
      time and can be considered as unmaintained.
    '';
    license = with lib.licenses; [
      isc
      bsdOriginal
      bsd2
      gpl2Plus
    ];
    maintainers = [ ];
    mainProgram = "ucarp";
  };
})