summary refs log tree commit diff
path: root/pkgs/os-specific/linux/openvswitch/generic.nix
diff options
context:
space:
mode:
authorMartin Weinelt <hexa@darmstadt.ccc.de>2022-11-20 13:42:11 +0100
committerMartin Weinelt <hexa@darmstadt.ccc.de>2022-11-20 15:40:29 +0100
commit217cf995216ae8797079fdfd41e6398455d4a4ed (patch)
tree4385da1302bdeb747e86a3438d96c3e3418387ed /pkgs/os-specific/linux/openvswitch/generic.nix
parent92097927de79f25e165e9e24a7a7a75b9206d18c (diff)
downloadnixpkgs-217cf995216ae8797079fdfd41e6398455d4a4ed.tar
nixpkgs-217cf995216ae8797079fdfd41e6398455d4a4ed.tar.gz
nixpkgs-217cf995216ae8797079fdfd41e6398455d4a4ed.tar.bz2
nixpkgs-217cf995216ae8797079fdfd41e6398455d4a4ed.tar.lz
nixpkgs-217cf995216ae8797079fdfd41e6398455d4a4ed.tar.xz
nixpkgs-217cf995216ae8797079fdfd41e6398455d4a4ed.tar.zst
nixpkgs-217cf995216ae8797079fdfd41e6398455d4a4ed.zip
openvswitch: generalize builder
Diffstat (limited to 'pkgs/os-specific/linux/openvswitch/generic.nix')
-rw-r--r--pkgs/os-specific/linux/openvswitch/generic.nix123
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 00000000000..c3d180bcbb7
--- /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;
+  };
+}