diff options
Diffstat (limited to 'pkgs/os-specific/linux/openvswitch/generic.nix')
-rw-r--r-- | pkgs/os-specific/linux/openvswitch/generic.nix | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/pkgs/os-specific/linux/openvswitch/generic.nix b/pkgs/os-specific/linux/openvswitch/generic.nix new file mode 100644 index 0000000000000..c3d180bcbb7f8 --- /dev/null +++ b/pkgs/os-specific/linux/openvswitch/generic.nix @@ -0,0 +1,123 @@ +{ version +, hash +}: + +{ lib +, stdenv +, fetchurl +, autoconf +, automake +, installShellFiles +, iproute2 +, kernel ? null +, libcap_ng +, libtool +, openssl +, perl +, pkg-config +, procps +, python3 +, sphinxHook +, util-linux +, which +}: + +let + _kernel = kernel; +in stdenv.mkDerivation rec { + pname = "openvswitch"; + inherit version; + + kernel = lib.optional (_kernel != null) _kernel.dev; + + src = fetchurl { + url = "https://www.openvswitch.org/releases/${pname}-${version}.tar.gz"; + inherit hash; + }; + + outputs = [ + "out" + "man" + ]; + + patches = [ + # 8: vsctl-bashcomp - argument completion FAILED (completion.at:664) + ./patches/disable-bash-arg-completion-test.patch + ]; + + nativeBuildInputs = [ + autoconf + automake + installShellFiles + libtool + pkg-config + sphinxHook + ]; + + sphinxBuilders = [ + "man" + ]; + + sphinxRoot = "./Documentation"; + + buildInputs = [ + libcap_ng + openssl + perl + procps + python3 + util-linux + which + ]; + + preConfigure = "./boot.sh"; + + configureFlags = [ + "--localstatedir=/var" + "--sharedstatedir=/var" + "--sbindir=$(out)/bin" + ] ++ (lib.optionals (_kernel != null) ["--with-linux"]); + + # Leave /var out of this! + installFlags = [ + "LOGDIR=$(TMPDIR)/dummy" + "RUNDIR=$(TMPDIR)/dummy" + "PKIDIR=$(TMPDIR)/dummy" + ]; + + enableParallelBuilding = true; + + postInstall = '' + installShellCompletion --bash utilities/ovs-appctl-bashcomp.bash + installShellCompletion --bash utilities/ovs-vsctl-bashcomp.bash + ''; + + doCheck = true; + + checkInputs = [ + iproute2 + ] ++ (with python3.pkgs; [ + netaddr + pyparsing + pytest + ]); + + meta = with lib; { + changelog = "https://www.openvswitch.org/releases/NEWS-${version}.txt"; + description = "A multilayer virtual switch"; + longDescription = '' + Open vSwitch is a production quality, multilayer virtual switch + licensed under the open source Apache 2.0 license. It is + designed to enable massive network automation through + programmatic extension, while still supporting standard + management interfaces and protocols (e.g. NetFlow, sFlow, SPAN, + RSPAN, CLI, LACP, 802.1ag). In addition, it is designed to + support distribution across multiple physical servers similar + to VMware's vNetwork distributed vswitch or Cisco's Nexus 1000V. + ''; + homepage = "https://www.openvswitch.org/"; + license = licenses.asl20; + maintainers = with maintainers; [ netixx kmcopper ]; + platforms = platforms.linux; + }; +} |