New scheme mainly provides three packages: openvswitch, openvswitch-ovn-north, openvswitch-ovn-controller. These should fit most usage scenarios. Other subpackages like openvswitch-libXXX etc. are there for dependency management and are hidden from the menu. Many python and shell scripts are removed in this revision. Most of them cannot run out of box at all for lack of dependencies. Others being legacy ones are not that useful now. Add them back at later time when real need appears Below are a simple listing of additions - initscript now incorporate also ovn north and controller support - ovn-ctl and ovs-ctl can be invoked directly from within $PATH Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
252 lines
7.8 KiB
Makefile
252 lines
7.8 KiB
Makefile
#
|
|
# Copyright (C) 2013 Julius Schulz-Zander <julius@net.t-labs.tu-berlin.de>
|
|
# Copyright (C) 2014-2017 OpenWrt.org
|
|
# Copyright (C) 2018 Yousong Zhou <yszhou4tech@gmail.com>
|
|
#
|
|
# This is free software, licensed under the GNU General Public License v2.
|
|
# See /LICENSE for more information.
|
|
#
|
|
include $(TOPDIR)/rules.mk
|
|
include $(INCLUDE_DIR)/kernel.mk
|
|
|
|
PKG_NAME:=openvswitch
|
|
PKG_VERSION:=2.8.2
|
|
PKG_RELEASE:=2
|
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
|
PKG_SOURCE_URL:=https://www.openvswitch.org/releases/
|
|
PKG_HASH:=87b4a7e7134a44ce1f808d3415a2244b4518c2b0b2a42fa2f8231e592f13103d
|
|
|
|
PKG_LICENSE:=Apache-2.0
|
|
PKG_LICENSE_FILES:=LICENSE
|
|
|
|
PKG_BUILD_DEPENDS:=python/host python-six/host
|
|
PKG_USE_MIPS16:=0
|
|
PKG_BUILD_PARALLEL:=1
|
|
PKG_FIXUP:=autoreconf
|
|
PKG_INSTALL:=1
|
|
|
|
PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
|
|
|
|
include $(INCLUDE_DIR)/package.mk
|
|
include ../../lang/python/python-host.mk
|
|
include ../../lang/python/python-package.mk
|
|
|
|
|
|
CONFIGURE_ARGS+= \
|
|
--enable-ndebug \
|
|
--enable-shared \
|
|
--disable-libcapng \
|
|
|
|
CONFIGURE_VARS += \
|
|
ovs_cv_flake8=no \
|
|
ovs_cv_python3=no \
|
|
ovs_cv_sphinx=no \
|
|
ovs_cv_python=$(PYTHON) \
|
|
ovs_cv_python_host=$(HOST_PYTHON_BIN) \
|
|
|
|
TARGET_CFLAGS += -flto -std=gnu99
|
|
MAKE_VARS += PYTHONPATH="$(HOST_PYTHONPATH)"
|
|
|
|
|
|
define KernelPackage/openvswitch
|
|
SECTION:=kernel
|
|
CATEGORY:=Kernel modules
|
|
SUBMENU:=Network Support
|
|
TITLE:=Open vSwitch kernel datapath
|
|
KCONFIG:=CONFIG_OPENVSWITCH
|
|
DEPENDS:= \
|
|
+kmod-lib-crc32c +kmod-mpls \
|
|
+kmod-nf-nat +IPV6:kmod-nf-nat6
|
|
FILES:= $(LINUX_DIR)/net/openvswitch/openvswitch.ko
|
|
AUTOLOAD:=$(call AutoProbe,openvswitch)
|
|
endef
|
|
|
|
define KernelPackage/openvswitch-gre
|
|
SECTION:=kernel
|
|
CATEGORY:=Kernel modules
|
|
SUBMENU:=Network Support
|
|
TITLE:=Open vSwitch GRE tunneling support
|
|
KCONFIG:= CONFIG_OPENVSWITCH_GRE
|
|
DEPENDS:= +kmod-openvswitch +kmod-gre
|
|
FILES:= $(LINUX_DIR)/net/openvswitch/vport-gre.ko
|
|
AUTOLOAD:=$(call AutoProbe,vport-gre)
|
|
endef
|
|
|
|
define KernelPackage/openvswitch-vxlan
|
|
SECTION:=kernel
|
|
CATEGORY:=Kernel modules
|
|
SUBMENU:=Network Support
|
|
TITLE:=Open vSwitch VXLAN tunneling support
|
|
KCONFIG:= CONFIG_OPENVSWITCH_VXLAN
|
|
DEPENDS:= +kmod-openvswitch +kmod-vxlan
|
|
FILES:= $(LINUX_DIR)/net/openvswitch/vport-vxlan.ko
|
|
AUTOLOAD:=$(call AutoProbe,vport-vxlan)
|
|
endef
|
|
|
|
define KernelPackage/openvswitch-geneve
|
|
SECTION:=kernel
|
|
CATEGORY:=Kernel modules
|
|
SUBMENU:=Network Support
|
|
TITLE:=Open vSwitch Geneve tunneling support
|
|
KCONFIG:= CONFIG_OPENVSWITCH_GENEVE
|
|
DEPENDS:= +kmod-openvswitch +kmod-geneve
|
|
FILES:= $(LINUX_DIR)/net/openvswitch/vport-geneve.ko
|
|
AUTOLOAD:=$(call AutoProbe,vport-geneve)
|
|
endef
|
|
|
|
|
|
ovs_packages:=
|
|
ovs_package_name=$(if $(filter openvswitch,$(1)),openvswitch,openvswitch-$(1))
|
|
define OvsPackageTemplate
|
|
define Package/$(call ovs_package_name,$(1))
|
|
SECTION:=net
|
|
SUBMENU:=Open vSwitch
|
|
CATEGORY:=Network
|
|
URL:=https://www.openvswitch.org
|
|
TITLE:=$(ovs_$(1)_title)
|
|
HIDDEN:=$(ovs_$(1)_hidden)
|
|
DEPENDS:=$(ovs_$(1)_depends)
|
|
endef
|
|
|
|
define Package/$(call ovs_package_name,$(1))/install
|
|
$(foreach f,$(ovs_$(1)_files),
|
|
$(INSTALL_DIR) $$(1)/$(dir $(f))
|
|
$(CP) $(PKG_INSTALL_DIR)/$(f) $$(1)/$(dir $(f))
|
|
)
|
|
$(ovs_$(1)_install)
|
|
endef
|
|
|
|
ovs_packages+=$(call ovs_package_name,$(1))
|
|
endef
|
|
|
|
# Dependency review
|
|
#
|
|
# for f in sbin/*; do echo $f; readelf -d $f | grep -i shared; done
|
|
# for f in bin/*; do echo $f; readelf -d $f | grep -i shared; done
|
|
# for f in lib/*.so; do echo $f; readelf -d $f | grep -i shared; done
|
|
#
|
|
ovs_libopenvswitch_title:=Open vSwitch (libopenvswitch.so)
|
|
ovs_libopenvswitch_hidden:=1
|
|
ovs_libopenvswitch_depends:=+libopenssl +librt
|
|
ovs_libopenvswitch_files:=usr/lib/libopenvswitch*.so*
|
|
$(eval $(call OvsPackageTemplate,libopenvswitch))
|
|
|
|
|
|
ovs_libofproto_title:=Open vSwitch (libofproto.so libsflow.so)
|
|
ovs_libofproto_hidden:=1
|
|
ovs_libofproto_depends:=+librt
|
|
ovs_libofproto_files:=usr/lib/libofproto*.so* usr/lib/libsflow*.so*
|
|
$(eval $(call OvsPackageTemplate,libofproto))
|
|
|
|
|
|
ovs_libovsdb_title:=Open vSwitch (libovsdb.so)
|
|
ovs_libovsdb_hidden:=1
|
|
ovs_libovsdb_depends:=+librt
|
|
ovs_libovsdb_files:=usr/lib/libovsdb*.so*
|
|
$(eval $(call OvsPackageTemplate,libovsdb))
|
|
|
|
|
|
ovs_libovn_title:=Open vSwitch (libovn.so)
|
|
ovs_libovn_hidden:=1
|
|
ovs_libovn_depends:=+librt
|
|
ovs_libovn_files:=usr/lib/libovn*.so*
|
|
$(eval $(call OvsPackageTemplate,libovn))
|
|
|
|
|
|
ovs_vswitchd_title:=Open vSwitch (ovs-vswitchd)
|
|
ovs_vswitchd_hidden:=1
|
|
ovs_vswitchd_depends:=+librt +openvswitch-libopenvswitch +openvswitch-libofproto
|
|
ovs_vswitchd_files:=usr/sbin/ovs-vswitchd
|
|
$(eval $(call OvsPackageTemplate,vswitchd))
|
|
|
|
|
|
ovs_ovsdb_title:=Open vSwitch (ovsdb-server)
|
|
ovs_ovsdb_hidden:=1
|
|
ovs_ovsdb_depends:=+librt +openvswitch-libopenvswitch +openvswitch-libovsdb
|
|
ovs_ovsdb_files:=usr/sbin/ovsdb-server
|
|
$(eval $(call OvsPackageTemplate,ovsdb))
|
|
|
|
|
|
ovs_common_title:=Open vSwitch (common files)
|
|
ovs_common_hidden:=1
|
|
ovs_common_depends:=+librt +openvswitch-libopenvswitch +openvswitch-libofproto +openvswitch-libovsdb
|
|
ovs_common_files:= \
|
|
usr/share/openvswitch/scripts/ovs-lib \
|
|
usr/share/openvswitch/scripts/ovs-ctl \
|
|
usr/share/openvswitch/scripts/ovs-save \
|
|
$(foreach b,ovs-appctl ovs-dpctl ovs-ofctl ovs-vsctl ovsdb-client ovsdb-tool,usr/bin/$(b))
|
|
define ovs_common_install
|
|
$$(INSTALL_DIR) $$(1)/etc/openvswitch
|
|
$$(INSTALL_DIR) $$(1)/etc/init.d
|
|
$$(INSTALL_BIN) ./files/openvswitch.init $$(1)/etc/init.d/openvswitch
|
|
$$(INSTALL_DIR) $$(1)/etc/config
|
|
$$(INSTALL_DATA) ./files/openvswitch.config $$(1)/etc/config/openvswitch
|
|
$$(INSTALL_DIR) $$(1)/usr/share/openvswitch/scripts
|
|
$$(INSTALL_BIN) ./files/ovs-ctl-wrapper $$(1)/usr/share/openvswitch/scripts/
|
|
$$(LN) /usr/share/openvswitch/scripts/ovs-ctl-wrapper $$(1)/usr/bin/ovs-ctl
|
|
endef
|
|
define Package/openvswitch-common/conffiles
|
|
/etc/openvswitch
|
|
endef
|
|
$(eval $(call OvsPackageTemplate,common))
|
|
|
|
|
|
# coreutils-sleep is required by ovs-lib for sleeping a fraction of second
|
|
#
|
|
# uuidgen is required for generating system-id
|
|
ovs_openvswitch_title:=Open vSwitch
|
|
ovs_openvswitch_hidden:=
|
|
ovs_openvswitch_depends:=+librt +coreutils +coreutils-sleep +uuidgen \
|
|
+openvswitch-common +openvswitch-vswitchd +openvswitch-ovsdb +kmod-openvswitch
|
|
ovs_openvswitch_files:= usr/share/openvswitch/vswitch.ovsschema
|
|
$(eval $(call OvsPackageTemplate,openvswitch))
|
|
|
|
|
|
ovs_ovn-common_title:=Open Virtual Network (common files)
|
|
ovs_ovn-common_hidden:=1
|
|
ovs_ovn-common_depends:=+librt +openvswitch-common +openvswitch-libopenvswitch +openvswitch-libovn +openvswitch-libovsdb
|
|
ovs_ovn-common_files:= \
|
|
usr/share/openvswitch/scripts/ovn-ctl \
|
|
$(foreach b,ovn-nbctl ovn-sbctl ovn-trace ovn-detrace,usr/bin/$(b))
|
|
define ovs_ovn-common_install
|
|
$$(INSTALL_DIR) $$(1)/usr/share/openvswitch/scripts
|
|
$$(LN) /usr/share/openvswitch/scripts/ovs-ctl-wrapper $$(1)/usr/bin/ovn-ctl
|
|
endef
|
|
$(eval $(call OvsPackageTemplate,ovn-common))
|
|
|
|
|
|
ovs_ovn-north_title:=Open Virtual Network (north package)
|
|
ovs_ovn-north_hidden:=
|
|
ovs_ovn-north_depends:=+openvswitch-ovsdb +openvswitch-ovn-common
|
|
ovs_ovn-north_files:=\
|
|
usr/share/openvswitch/ovn-nb.ovsschema \
|
|
usr/share/openvswitch/ovn-sb.ovsschema \
|
|
usr/bin/ovn-northd
|
|
$(eval $(call OvsPackageTemplate,ovn-north))
|
|
|
|
|
|
ovs_ovn-host_title:=Open Virtual Network (chassis package)
|
|
ovs_ovn-host_hidden:=
|
|
ovs_ovn-host_depends:=+openvswitch +openvswitch-ovn-common
|
|
ovs_ovn-host_files:=usr/bin/ovn-controller
|
|
$(eval $(call OvsPackageTemplate,ovn-host))
|
|
|
|
|
|
ovs_python_title:=Open vSwitch (Python library)
|
|
ovs_python_hidden:=
|
|
ovs_python_depends:=+PACKAGE_openvswitch-python:python +PACKAGE_openvswitch-python:python-six
|
|
define ovs_python_install
|
|
$$(INSTALL_DIR) $$(1)$$(PYTHON_PKG_DIR)
|
|
$$(CP) $$(PKG_INSTALL_DIR)/usr/share/openvswitch/python/ovs $$(1)$$(PYTHON_PKG_DIR)
|
|
endef
|
|
$(eval $(call OvsPackageTemplate,python))
|
|
|
|
|
|
$(foreach p,$(ovs_packages),\
|
|
$(eval $(call BuildPackage,$(p)))\
|
|
)
|
|
|
|
$(eval $(call KernelPackage,openvswitch))
|
|
$(eval $(call KernelPackage,openvswitch-gre))
|
|
$(eval $(call KernelPackage,openvswitch-vxlan))
|
|
$(eval $(call KernelPackage,openvswitch-geneve))
|