blob: fc515e90813fed65cdd0c11f4d5542bf27572c50 [file] [log] [blame]
SUMMARY = "OpenvSwitch"
DESCRIPTION = "\
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) \
"
HOMEPAGE = "http://openvswitch.org/"
SECTION = "networking"
LICENSE = "Apache-2"
DEPENDS += "bridge-utils openssl python perl"
RDEPENDS_${PN} += "util-linux-uuidgen util-linux-libuuid coreutils \
python perl perl-module-strict ${PN}-switch \
bash"
RDEPENDS_${PN}-testcontroller = "${PN} lsb ${PN}-pki"
RDEPENDS_${PN}-switch = "${PN} openssl procps util-linux-uuidgen"
RDEPENDS_${PN}-pki = "${PN}"
RDEPENDS_${PN}-brcompat = "${PN} ${PN}-switch"
# Some installers will fail because of an install order based on
# rdeps. E.g. ovs-pki calls sed in the postinstall. sed may be
# queued for install later.
RDEPENDS_${PN} += "sed gawk grep"
SRC_URI = "\
file://openvswitch-switch \
file://openvswitch-switch-setup \
file://openvswitch-testcontroller \
file://openvswitch-testcontroller-setup \
file://openvswitch-add-target-python-handling.patch \
file://openvswitch-add-target-perl-handling.patch \
"
EXTRA_OECONF += "\
TARGET_PYTHON=${bindir}/python \
TARGET_PERL=${bindir}/perl \
"
CONFIGUREOPT_DEPTRACK = ""
# Don't compile kernel modules by default since it heavily depends on
# kernel version. Use the in-kernel module for now.
# distro layers can enable with EXTRA_OECONF_pn_openvswitch += ""
# EXTRA_OECONF = "--with-linux=${STAGING_KERNEL_DIR} KARCH=${TARGET_ARCH}"
ALLOW_EMPTY_${PN}-pki = "1"
PACKAGES =+ "${PN}-testcontroller ${PN}-switch ${PN}-brcompat ${PN}-pki"
FILES_${PN}-testcontroller = "\
${sysconfdir}/init.d/openvswitch-testcontroller \
${sysconfdir}/default/openvswitch-testcontroller \
${sysconfdir}/openvswitch-testcontroller \
${bindir}/ovs-testcontroller \
"
FILES_${PN}-brcompat = "${sbindir}/ovs-brcompatd"
FILES_${PN}-switch = "\
${sysconfdir}/init.d/openvswitch-switch \
${sysconfdir}/default/openvswitch-switch \
${systemd_unitdir}/system/openvswitch.service \
${systemd_unitdir}/system/openvswitch-nonetwork.service \
"
# silence a warning
FILES_${PN} += "${datadir}/ovsdbmonitor"
FILES_${PN} += "/run"
inherit autotools update-rc.d systemd
SYSTEMD_PACKAGES = "${PN}-switch"
SYSTEMD_SERVICE_${PN}-switch = " \
openvswitch-nonetwork.service \
openvswitch-switch.service \
"
INITSCRIPT_PACKAGES = "${PN}-switch ${PN}-testcontroller"
INITSCRIPT_NAME_${PN}-switch = "openvswitch-switch"
INITSCRIPT_PARAMS_${PN}-switch = "defaults 71"
INITSCRIPT_NAME_${PN}-testcontroller = "openvswitch-testcontroller"
INITSCRIPT_PARAMS_${PN}-testcontroller = "defaults 72"
do_install_append() {
install -d ${D}/${sysconfdir}/default/
install -m 660 ${WORKDIR}/openvswitch-switch-setup ${D}/${sysconfdir}/default/openvswitch-switch
install -d ${D}/${sysconfdir}/openvswitch-testcontroller
install -m 660 ${WORKDIR}/openvswitch-testcontroller-setup ${D}/${sysconfdir}/default/openvswitch-testcontroller
install -d ${D}/${sysconfdir}/init.d/
install -m 755 ${WORKDIR}/openvswitch-testcontroller ${D}/${sysconfdir}/init.d/openvswitch-testcontroller
install -m 755 ${WORKDIR}/openvswitch-switch ${D}/${sysconfdir}/init.d/openvswitch-switch
true || rm -fr ${D}/${datadir}/${PN}/pki
install -d ${D}/${systemd_unitdir}/system/
install -m 644 ${S}/rhel/usr_lib_systemd_system_openvswitch.service \
${D}/${systemd_unitdir}/system/openvswitch-switch.service
install -m 644 ${S}/rhel/usr_lib_systemd_system_openvswitch-nonetwork.service \
${D}/${systemd_unitdir}/system/openvswitch-nonetwork.service
oe_runmake modules_install INSTALL_MOD_PATH=${D}
}
pkg_postinst_${PN}-pki () {
# can't do this offline
if [ "x$D" != "x" ]; then
exit 1
fi
if test ! -d $D/${datadir}/${PN}/pki; then
ovs-pki init --dir=$D/${datadir}/${PN}/pki
fi
}
pkg_postinst_${PN}-testcontroller () {
# can't do this offline
if [ "x$D" != "x" ]; then
exit 1
fi
if test ! -d $D/${datadir}/${PN}/pki; then
ovs-pki init --dir=$D/${datadir}/${PN}/pki
fi
cd $D/${sysconfdir}/openvswitch-testcontroller
if ! test -e cacert.pem; then
ln -s $D/${datadir}/${PN}/pki/switchca/cacert.pem cacert.pem
fi
if ! test -e privkey.pem || ! test -e cert.pem; then
oldumask=$(umask)
umask 077
ovs-pki req+sign --dir=$D/${datadir}/${PN}/pki tmp controller >/dev/null
mv tmp-privkey.pem privkey.pem
mv tmp-cert.pem cert.pem
mv tmp-req.pem req.pem
chmod go+r cert.pem req.pem
umask $oldumask
fi
}