summary refs log blame commit diff
path: root/pkgs/os-specific/linux/iputils/default.nix
blob: 57eb09e40cfc5f2e1d6b939acc42083c09a79a42 (plain) (tree)
1
2
3
4
5
6
7
8
9
                                     

                                                           
  
 

                
   
                    







                                                                              
                           
 



                         
                                                                    

    


                                           


                                                                                                         
        


                                                                                                         






                                
                                





                                                                             
                                                                                   
                                         

                                                             
 
          
                                                  
                                                                         
                                                              
                                
                                                           
    
 
{ stdenv, fetchFromGitHub, fetchpatch
, meson, ninja, pkgconfig, gettext, libxslt, docbook_xsl_ns
, libcap, nettle, libidn2, openssl, systemd
}:

with stdenv.lib;

let
  time = "20190515";
  # ninfod probably could build on cross, but the Makefile doesn't pass --host
  # etc to the sub configure...
  withNinfod = stdenv.hostPlatform == stdenv.buildPlatform;
  sunAsIsLicense = {
    fullName = "AS-IS, SUN MICROSYSTEMS license";
    url = "https://github.com/iputils/iputils/blob/s${time}/rdisc.c";
  };
in stdenv.mkDerivation {
  name = "iputils-${time}";

  src = fetchFromGitHub {
    owner = "iputils";
    repo = "iputils";
    rev = "s${time}";
    sha256 = "1k2wzgk0d47d1g9k8c1a5l24ml8h8xxz1vrs0vfbyxr7qghdhn4i";
  };

  # ninfod cannot be build with nettle yet:
  patches =
    [ ./build-ninfod-with-openssl.patch
      (fetchpatch { # build-sys/doc: Fix the dependency on xsltproc
        url = "https://github.com/iputils/iputils/commit/3b013f271931c3fe771e5a2c591f35d617de90f3.patch";
        sha256 = "0ilhlgiqdflry7km3ik8i4h1yymm5f5zmwyl5r029q7x1p8kinfw";
      })
      (fetchpatch { # build-sys: Make setcap really optional
        url = "https://github.com/iputils/iputils/commit/473be6467f995865244e7e68b2fa587a4ee79551.patch";
        sha256 = "0781147qaf0jwa177jbmh474r8hqs0jwgi5vgx9csb43jzdm8hqf";
      })
    ];

  mesonFlags =
    [ "-DUSE_CRYPTO=nettle"
      "-DBUILD_RARPD=true"
      "-DBUILD_TRACEROUTE6=true"
      "-DNO_SETCAP_OR_SUID=true"
      "-Dsystemdunitdir=etc/systemd/system"
    ]
    ++ optional (!withNinfod) "-DBUILD_NINFOD=false"
    # Disable idn usage w/musl (https://github.com/iputils/iputils/pull/111):
    ++ optional stdenv.hostPlatform.isMusl "-DUSE_IDN=false";

  nativeBuildInputs = [ meson ninja pkgconfig gettext libxslt.bin docbook_xsl_ns ];
  buildInputs = [ libcap nettle systemd ]
    ++ optional (!stdenv.hostPlatform.isMusl) libidn2
    ++ optional withNinfod openssl; # TODO: Build with nettle

  meta = {
    homepage = https://github.com/iputils/iputils;
    description = "A set of small useful utilities for Linux networking";
    license = with licenses; [ gpl2Plus bsd3 sunAsIsLicense ];
    platforms = platforms.linux;
    maintainers = with maintainers; [ primeos lheckemann ];
  };
}