blob: 58e0fcb07cfe34480e27a0c080351910f652785b [file] [log] [blame]
Patrick Williamsd849ec72016-08-17 14:59:38 -05001SUMMARY = "OpenvSwitch"
2DESCRIPTION = "\
3 Open vSwitch is a production quality, multilayer virtual switch \
4 licensed under the open source Apache 2.0 license. It is designed \
5 to enable massive network automation through programmatic extension, \
6 while still supporting standard management interfaces and protocols \
7 (e.g. NetFlow, sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag) \
8 "
9
10HOMEPAGE = "http://openvswitch.org/"
11SECTION = "networking"
12LICENSE = "Apache-2"
13
Brad Bishopd7bf8c12018-02-25 22:55:05 -050014DEPENDS += "bridge-utils openssl python3 perl python3-six-native coreutils-native"
Patrick Williamsd849ec72016-08-17 14:59:38 -050015
16RDEPENDS_${PN} += "util-linux-uuidgen util-linux-libuuid coreutils \
Brad Bishopd7bf8c12018-02-25 22:55:05 -050017 python3 perl perl-module-strict ${PN}-switch \
18 bash python3-twisted python3-six"
Patrick Williamsd849ec72016-08-17 14:59:38 -050019RDEPENDS_${PN}-testcontroller = "${PN} lsb ${PN}-pki"
20RDEPENDS_${PN}-switch = "${PN} openssl procps util-linux-uuidgen"
21RDEPENDS_${PN}-pki = "${PN}"
22RDEPENDS_${PN}-brcompat = "${PN} ${PN}-switch"
23
24# Some installers will fail because of an install order based on
25# rdeps. E.g. ovs-pki calls sed in the postinstall. sed may be
26# queued for install later.
27RDEPENDS_${PN} += "sed gawk grep"
28
29SRC_URI = "\
30 file://openvswitch-switch \
31 file://openvswitch-switch-setup \
32 file://openvswitch-testcontroller \
33 file://openvswitch-testcontroller-setup \
Patrick Williamsd849ec72016-08-17 14:59:38 -050034 "
35
36EXTRA_OECONF += "\
Brad Bishopd7bf8c12018-02-25 22:55:05 -050037 PYTHON=python3 \
Brad Bishop6e60e8b2018-02-01 10:27:11 -050038 PYTHON3=python3 \
39 PERL=${bindir}/perl \
Patrick Williamsd849ec72016-08-17 14:59:38 -050040 "
41CONFIGUREOPT_DEPTRACK = ""
42
43# Don't compile kernel modules by default since it heavily depends on
44# kernel version. Use the in-kernel module for now.
45# distro layers can enable with EXTRA_OECONF_pn_openvswitch += ""
46# EXTRA_OECONF = "--with-linux=${STAGING_KERNEL_DIR} KARCH=${TARGET_ARCH}"
47
48ALLOW_EMPTY_${PN}-pki = "1"
49PACKAGES =+ "${PN}-testcontroller ${PN}-switch ${PN}-brcompat ${PN}-pki"
50
51FILES_${PN}-testcontroller = "\
52 ${sysconfdir}/init.d/openvswitch-testcontroller \
53 ${sysconfdir}/default/openvswitch-testcontroller \
54 ${sysconfdir}/openvswitch-testcontroller \
55 ${bindir}/ovs-testcontroller \
56 "
57
58FILES_${PN}-brcompat = "${sbindir}/ovs-brcompatd"
59
60FILES_${PN}-switch = "\
61 ${sysconfdir}/init.d/openvswitch-switch \
62 ${sysconfdir}/default/openvswitch-switch \
Brad Bishop6e60e8b2018-02-01 10:27:11 -050063 ${systemd_unitdir}/system/ovs-vswitchd.service \
Patrick Williamsd849ec72016-08-17 14:59:38 -050064 ${systemd_unitdir}/system/openvswitch.service \
Brad Bishop6e60e8b2018-02-01 10:27:11 -050065 ${systemd_unitdir}/system/ovsdb-server.service \
Patrick Williamsd849ec72016-08-17 14:59:38 -050066 "
67
68# silence a warning
69FILES_${PN} += "${datadir}/ovsdbmonitor"
70FILES_${PN} += "/run"
71
Patrick Williamse69d2352017-02-23 20:56:04 -060072FILES_${PN} += "${libdir}/python${PYTHON_BASEVERSION}/"
Brad Bishopd7bf8c12018-02-25 22:55:05 -050073inherit autotools update-rc.d systemd python3native
Patrick Williamsd849ec72016-08-17 14:59:38 -050074
75SYSTEMD_PACKAGES = "${PN}-switch"
76SYSTEMD_SERVICE_${PN}-switch = " \
Brad Bishop6e60e8b2018-02-01 10:27:11 -050077 ovsdb-server.service \
78 ovs-vswitchd.service \
79 openvswitch.service \
Patrick Williamsd849ec72016-08-17 14:59:38 -050080"
81
82INITSCRIPT_PACKAGES = "${PN}-switch ${PN}-testcontroller"
83INITSCRIPT_NAME_${PN}-switch = "openvswitch-switch"
84INITSCRIPT_PARAMS_${PN}-switch = "defaults 71"
85
86INITSCRIPT_NAME_${PN}-testcontroller = "openvswitch-testcontroller"
87INITSCRIPT_PARAMS_${PN}-testcontroller = "defaults 72"
88
Brad Bishopd7bf8c12018-02-25 22:55:05 -050089do_configure_prepend() {
90 # Work around the for Makefile CC=$(if ....) by swapping out any
91 # "-Wa," assembly directives with "-Xassembler
92 CC=`echo '${CC}' | sed 's/-Wa,/-Xassembler /g'`
93}
94
Patrick Williamsd849ec72016-08-17 14:59:38 -050095do_install_append() {
96 install -d ${D}/${sysconfdir}/default/
97 install -m 660 ${WORKDIR}/openvswitch-switch-setup ${D}/${sysconfdir}/default/openvswitch-switch
98 install -d ${D}/${sysconfdir}/openvswitch-testcontroller
99 install -m 660 ${WORKDIR}/openvswitch-testcontroller-setup ${D}/${sysconfdir}/default/openvswitch-testcontroller
100
101 install -d ${D}/${sysconfdir}/init.d/
102 install -m 755 ${WORKDIR}/openvswitch-testcontroller ${D}/${sysconfdir}/init.d/openvswitch-testcontroller
103 install -m 755 ${WORKDIR}/openvswitch-switch ${D}/${sysconfdir}/init.d/openvswitch-switch
104 true || rm -fr ${D}/${datadir}/${PN}/pki
105
106 install -d ${D}/${systemd_unitdir}/system/
Brad Bishop6e60e8b2018-02-01 10:27:11 -0500107 install -m 644 ${S}/rhel/usr_lib_systemd_system_ovs-vswitchd.service \
108 ${D}/${systemd_unitdir}/system/ovs-vswitchd.service
Patrick Williamsd849ec72016-08-17 14:59:38 -0500109 install -m 644 ${S}/rhel/usr_lib_systemd_system_openvswitch.service \
Brad Bishop6e60e8b2018-02-01 10:27:11 -0500110 ${D}/${systemd_unitdir}/system/openvswitch.service
111 install -m 644 ${S}/rhel/usr_lib_systemd_system_ovsdb-server.service \
112 ${D}/${systemd_unitdir}/system/ovsdb-server.service
Patrick Williamsd849ec72016-08-17 14:59:38 -0500113
114 oe_runmake modules_install INSTALL_MOD_PATH=${D}
Patrick Williamse69d2352017-02-23 20:56:04 -0600115 install -d ${D}${libdir}/python${PYTHON_BASEVERSION}/site-packages
116 cp -r ${S}/python/ovstest/ ${D}${libdir}/python${PYTHON_BASEVERSION}/site-packages/
Patrick Williamsd849ec72016-08-17 14:59:38 -0500117}
118
119pkg_postinst_${PN}-pki () {
120 # can't do this offline
121 if [ "x$D" != "x" ]; then
122 exit 1
123 fi
124 if test ! -d $D/${datadir}/${PN}/pki; then
125 ovs-pki init --dir=$D/${datadir}/${PN}/pki
126 fi
127}
128
129pkg_postinst_${PN}-testcontroller () {
130 # can't do this offline
131 if [ "x$D" != "x" ]; then
132 exit 1
133 fi
134
135 if test ! -d $D/${datadir}/${PN}/pki; then
136 ovs-pki init --dir=$D/${datadir}/${PN}/pki
137 fi
138
139 cd $D/${sysconfdir}/openvswitch-testcontroller
140 if ! test -e cacert.pem; then
141 ln -s $D/${datadir}/${PN}/pki/switchca/cacert.pem cacert.pem
142 fi
143 if ! test -e privkey.pem || ! test -e cert.pem; then
144 oldumask=$(umask)
145 umask 077
146 ovs-pki req+sign --dir=$D/${datadir}/${PN}/pki tmp controller >/dev/null
147 mv tmp-privkey.pem privkey.pem
148 mv tmp-cert.pem cert.pem
149 mv tmp-req.pem req.pem
150 chmod go+r cert.pem req.pem
151 umask $oldumask
152 fi
153}