summaryrefslogtreecommitdiffstats
path: root/external/meta-virtualization/recipes-networking/openvswitch/openvswitch.inc
diff options
context:
space:
mode:
Diffstat (limited to 'external/meta-virtualization/recipes-networking/openvswitch/openvswitch.inc')
-rw-r--r--external/meta-virtualization/recipes-networking/openvswitch/openvswitch.inc162
1 files changed, 162 insertions, 0 deletions
diff --git a/external/meta-virtualization/recipes-networking/openvswitch/openvswitch.inc b/external/meta-virtualization/recipes-networking/openvswitch/openvswitch.inc
new file mode 100644
index 00000000..8aab739b
--- /dev/null
+++ b/external/meta-virtualization/recipes-networking/openvswitch/openvswitch.inc
@@ -0,0 +1,162 @@
+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 python3 perl python3-six-native coreutils-native"
+
+RDEPENDS_${PN} += "util-linux-uuidgen util-linux-libuuid coreutils \
+ python3 perl perl-module-strict ${PN}-switch \
+ bash python3-twisted python3-six"
+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 \
+ "
+
+EXTRA_OECONF += "\
+ PYTHON=python3 \
+ PYTHON3=python3 \
+ 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/ovs-vswitchd.service \
+ ${systemd_unitdir}/system/openvswitch.service \
+ ${systemd_unitdir}/system/ovsdb-server.service \
+ ${sysconfdir}/sysconfig/openvswitch \
+ ${sysconfdir}/openvswitch/default.conf \
+ "
+
+# silence a warning
+FILES_${PN} += "${datadir}/ovsdbmonitor"
+FILES_${PN} += "/run"
+
+FILES_${PN} += "${libdir}/python${PYTHON_BASEVERSION}/"
+inherit autotools update-rc.d systemd python3native
+
+SYSTEMD_PACKAGES = "${PN}-switch"
+SYSTEMD_SERVICE_${PN}-switch = " \
+ ovsdb-server.service \
+ ovs-vswitchd.service \
+ openvswitch.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_configure_prepend() {
+ # Work around the for Makefile CC=$(if ....) by swapping out any
+ # "-Wa," assembly directives with "-Xassembler
+ CC=`echo '${CC}' | sed 's/-Wa,/-Xassembler /g'`
+}
+
+do_install_prepend() {
+ SERVICE_FILE="${S}/rhel/usr_lib_systemd_system_ovs-vswitchd.service"
+ ${S}/build-aux/dpdkstrip.py \
+ ${@bb.utils.contains('PACKAGECONFIG','dpdk','--dpdk','--nodpdk',d)} \
+ < ${S}/rhel/usr_lib_systemd_system_ovs-vswitchd.service.in \
+ > ${SERVICE_FILE}
+}
+
+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}/${sysconfdir}/sysconfig
+ install -m 644 ${S}/rhel/usr_share_openvswitch_scripts_systemd_sysconfig.template \
+ ${D}/${sysconfdir}/sysconfig/openvswitch
+
+ install -d ${D}/${sysconfdir}/openvswitch
+ install -m 644 ${S}/rhel/etc_openvswitch_default.conf \
+ ${D}/${sysconfdir}/openvswitch/default.conf
+
+ install -d ${D}/${systemd_unitdir}/system/
+ install -m 644 ${S}/rhel/usr_lib_systemd_system_ovs-vswitchd.service \
+ ${D}/${systemd_unitdir}/system/ovs-vswitchd.service
+ install -m 644 ${S}/rhel/usr_lib_systemd_system_openvswitch.service \
+ ${D}/${systemd_unitdir}/system/openvswitch.service
+ install -m 644 ${S}/rhel/usr_lib_systemd_system_ovsdb-server.service \
+ ${D}/${systemd_unitdir}/system/ovsdb-server.service
+
+ oe_runmake modules_install INSTALL_MOD_PATH=${D}
+ install -d ${D}${libdir}/python${PYTHON_BASEVERSION}/site-packages
+ cp -r ${S}/python/ovstest/ ${D}${libdir}/python${PYTHON_BASEVERSION}/site-packages/
+}
+
+pkg_postinst_ontarget_${PN}-pki () {
+ if test ! -d $D/${datadir}/${PN}/pki; then
+ ovs-pki init --dir=$D/${datadir}/${PN}/pki
+ fi
+}
+
+pkg_postinst_ontarget_${PN}-testcontroller () {
+ 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
+}