From 217cf995216ae8797079fdfd41e6398455d4a4ed Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Sun, 20 Nov 2022 13:42:11 +0100 Subject: [PATCH] openvswitch: generalize builder --- .../os-specific/linux/openvswitch/default.nix | 113 +--------------- .../os-specific/linux/openvswitch/generic.nix | 123 ++++++++++++++++++ pkgs/os-specific/linux/openvswitch/lts.nix | 118 +---------------- 3 files changed, 127 insertions(+), 227 deletions(-) create mode 100644 pkgs/os-specific/linux/openvswitch/generic.nix diff --git a/pkgs/os-specific/linux/openvswitch/default.nix b/pkgs/os-specific/linux/openvswitch/default.nix index f5bc64168ce0..9d902fe9b70f 100644 --- a/pkgs/os-specific/linux/openvswitch/default.nix +++ b/pkgs/os-specific/linux/openvswitch/default.nix @@ -1,113 +1,4 @@ -{ lib -, stdenv -, fetchurl -, installShellFiles -, iproute2 -, kernel ? null -, libcap_ng -, openssl -, perl -, pkg-config -, procps -, python3 -, sphinxHook -, util-linux -, which -}: - -let - _kernel = kernel; -in stdenv.mkDerivation rec { +import ./generic.nix { version = "3.0.1"; - pname = "openvswitch"; - - kernel = lib.optional (_kernel != null) _kernel.dev; - - src = fetchurl { - url = "https://www.openvswitch.org/releases/${pname}-${version}.tar.gz"; - hash = "sha256-5KEXFtCRn1syOSKLMrrcEJtWGl/maLlUfhQ7CxlbvWg="; - }; - - outputs = [ - "out" - "man" - ]; - - patches = [ - # 8: vsctl-bashcomp - argument completion FAILED (completion.at:664) - ./patches/disable-bash-arg-completion-test.patch - ]; - - nativeBuildInputs = [ - installShellFiles - 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; - }; + hash = "sha256-5KEXFtCRn1syOSKLMrrcEJtWGl/maLlUfhQ7CxlbvWg="; } diff --git a/pkgs/os-specific/linux/openvswitch/generic.nix b/pkgs/os-specific/linux/openvswitch/generic.nix new file mode 100644 index 000000000000..c3d180bcbb7f --- /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; + }; +} diff --git a/pkgs/os-specific/linux/openvswitch/lts.nix b/pkgs/os-specific/linux/openvswitch/lts.nix index fba63a338da1..453d05a5afc1 100644 --- a/pkgs/os-specific/linux/openvswitch/lts.nix +++ b/pkgs/os-specific/linux/openvswitch/lts.nix @@ -1,118 +1,4 @@ -{ 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 { +import ./generic.nix { version = "2.17.3"; - pname = "openvswitch"; - - kernel = lib.optional (_kernel != null) _kernel.dev; - - src = fetchurl { - url = "https://www.openvswitch.org/releases/${pname}-${version}.tar.gz"; - hash = "sha256-RGgR/JGuJFzDGQSmk3H7C/BEb3sk6yOaA320ADUwEcA="; - }; - - 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; - }; + hash = "sha256-RGgR/JGuJFzDGQSmk3H7C/BEb3sk6yOaA320ADUwEcA="; }