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.
This commit is contained in:
Ihar Hrachyshka
2025-09-16 22:39:42 +00:00
parent 761cbe0fd5
commit 95b0bb2d5a
+9 -16
View File
@@ -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 = {