From 95b0bb2d5a660f9cc705d805a7d56487fd6646ec Mon Sep 17 00:00:00 2001 From: Ihar Hrachyshka Date: Tue, 16 Sep 2025 17:30:24 -0400 Subject: [PATCH] ovn: use ovs-lib and ovs client tools from openvswitch derivation In-tree ovs (from submodule) is not meant to be used except for linking .so/.a to ovn binaries. --- pkgs/by-name/ov/ovn/package.nix | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/pkgs/by-name/ov/ovn/package.nix b/pkgs/by-name/ov/ovn/package.nix index 6b31afc65586..a9f06b176eeb 100644 --- a/pkgs/by-name/ov/ovn/package.nix +++ b/pkgs/by-name/ov/ovn/package.nix @@ -14,6 +14,8 @@ python3, unbound, xdp-tools, + openvswitch, + makeWrapper, }: let withOpensslConfigureFlag = "--with-openssl=${lib.getLib openssl.dev}"; @@ -47,6 +49,7 @@ stdenv.mkDerivation (finalAttrs: { autoreconfHook pkg-config python3 + makeWrapper ]; buildInputs = [ @@ -88,23 +91,13 @@ stdenv.mkDerivation (finalAttrs: { ]; postInstall = '' - mkdir -vp $out/share/openvswitch/scripts - mkdir -vp $out/etc/ovn - cp ovs/ovsdb/ovsdb-client $out/bin - cp ovs/ovsdb/ovsdb-server $out/bin - cp ovs/ovsdb/ovsdb-tool $out/bin - cp ovs/vswitchd/ovs-vswitchd $out/bin - cp ovs/utilities/ovs-appctl $out/bin - cp ovs/utilities/ovs-vsctl $out/bin - cp ovs/utilities/ovs-ctl $out/share/openvswitch/scripts - cp ovs/utilities/ovs-lib $out/share/openvswitch/scripts - cp ovs/utilities/ovs-kmod-ctl $out/share/openvswitch/scripts - cp ovs/vswitchd/vswitch.ovsschema $out/share/openvswitch - sed -i "s#/usr/local/etc#/var/lib#g" $out/share/openvswitch/scripts/ovs-lib - sed -i "s#/usr/local/bin#$out/bin#g" $out/share/openvswitch/scripts/ovs-lib - sed -i "s#/usr/local/sbin#$out/bin#g" $out/share/openvswitch/scripts/ovs-lib - sed -i "s#/usr/local/share#$out/share#g" $out/share/openvswitch/scripts/ovs-lib sed -i '/chown -R $INSTALL_USER:$INSTALL_GROUP $ovn_etcdir/d' $out/share/ovn/scripts/ovn-ctl + + mkdir -vp $out/share/openvswitch/scripts + ln -s ${openvswitch}/share/openvswitch/scripts/ovs-lib $out/share/openvswitch/scripts/ovs-lib + + wrapProgram $out/share/ovn/scripts/ovn-ctl \ + --prefix PATH : ${lib.makeBinPath [ openvswitch ]} ''; env = {