From 16bec677aab8482a0fc9e26a4356fb5cce502e5a Mon Sep 17 00:00:00 2001 From: Ilya Maximets Date: Thu, 14 Jul 2022 17:55:46 +0200 Subject: debian: Add option to build without DPDK. Co-authored-by: Frode Nordahl Signed-off-by: Frode Nordahl Signed-off-by: Ilya Maximets --- .ci/linux-build.sh | 3 +- .github/workflows/build-and-test.yml | 15 +- .gitignore | 1 + Documentation/intro/install/debian.rst | 36 ++-- debian/.gitignore | 21 +++ debian/automake.mk | 51 +++++- debian/clean | 4 +- debian/control | 297 --------------------------------- debian/control.in | 297 +++++++++++++++++++++++++++++++++ debian/rules | 6 + 10 files changed, 401 insertions(+), 330 deletions(-) create mode 100644 debian/.gitignore delete mode 100644 debian/control create mode 100644 debian/control.in diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh index a8c437aaf..b7d93f36b 100755 --- a/.ci/linux-build.sh +++ b/.ci/linux-build.sh @@ -204,9 +204,10 @@ function build_ovs() } if [ "$DEB_PACKAGE" ]; then + ./boot.sh && ./configure --with-dpdk=$DPDK && make debian mk-build-deps --install --root-cmd sudo --remove debian/control dpkg-checkbuilddeps - DEB_BUILD_OPTIONS='parallel=4 nocheck' fakeroot debian/rules binary + make debian-deb packages=$(ls $(pwd)/../*.deb) deps="" for pkg in $packages; do diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 90fe17377..4c84b3a96 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -216,11 +216,19 @@ jobs: deb_dependencies: | linux-headers-$(uname -r) build-essential fakeroot devscripts equivs DEB_PACKAGE: yes + DPDK: ${{ matrix.dpdk }} - name: linux deb + name: linux deb ${{ matrix.dpdk }} dpdk runs-on: ubuntu-22.04 timeout-minutes: 30 + strategy: + fail-fast: false + matrix: + include: + - dpdk: no + - dpdk: shared + steps: - name: checkout uses: actions/checkout@v2 @@ -234,6 +242,9 @@ jobs: run: sudo apt update || true - name: install dependencies for debian packages run: sudo apt install -y ${{ env.deb_dependencies }} + - name: install dpdk-dev + if: matrix.dpdk != 'no' + run: sudo apt install -y libdpdk-dev - name: prepare run: ./.ci/linux-prepare.sh @@ -244,5 +255,5 @@ jobs: - name: upload deb packages uses: actions/upload-artifact@v2 with: - name: deb-packages + name: deb-packages-${{ matrix.dpdk }}-dpdk path: '/home/runner/work/ovs/*.deb' diff --git a/.gitignore b/.gitignore index f1cdcf124..b0098f46a 100644 --- a/.gitignore +++ b/.gitignore @@ -68,6 +68,7 @@ TAGS cscope.* tags _debian +_dpdk odp-netlink.h odp-netlink-macros.h OvsDpInterface.h diff --git a/Documentation/intro/install/debian.rst b/Documentation/intro/install/debian.rst index 4024dc07a..6d2687830 100644 --- a/Documentation/intro/install/debian.rst +++ b/Documentation/intro/install/debian.rst @@ -58,38 +58,28 @@ You do not need to be the superuser to build the Debian packages. top level directory. 3. Install the build dependencies listed under "Build-Depends:" near the top of - ``debian/control``. You can install these any way you like, e.g. with + ``debian/control.in``. You can install these any way you like, e.g. with ``apt-get install``. -Check your work by running ``dpkg-checkbuilddeps`` in the top level of your OVS -directory. If you've installed all the dependencies properly, -``dpkg-checkbuilddeps`` will exit without printing anything. If you forgot to -install some dependencies, it will tell you which ones. - -4. Build the package:: - - $ fakeroot debian/rules binary +4. Prepare the package source. - This will do a serial build that runs the unit tests. This will take - approximately 8 to 10 minutes. If you prefer, you can run a faster parallel - build:: + If you want to build the package with DPDK support execute the following + command:: - $ DEB_BUILD_OPTIONS='parallel=8' fakeroot debian/rules binary + $ ./boot.sh && ./configure --with-dpdk=shared && make debian - If you are in a big hurry, you can even skip the unit tests:: + If not:: - $ DEB_BUILD_OPTIONS='parallel=8 nocheck' fakeroot debian/rules binary + $ ./boot.sh && ./configure && make debian -.. note:: - - There are a few pitfalls in the Debian packaging building system so that, - occasionally, you may find that in a tree that you have using for a while, - the build command above exits immediately without actually building anything. - To fix the problem, run:: +Check your work by running ``dpkg-checkbuilddeps`` in the top level of your OVS +directory. If you've installed all the dependencies properly, +``dpkg-checkbuilddeps`` will exit without printing anything. If you forgot to +install some dependencies, it will tell you which ones. - $ fakeroot debian/rules clean +5. Build the package:: - or start over from a fresh copy of the source tree. + $ make debian-deb 5. The generated .deb files will be in the parent directory of the Open vSwitch source distribution. diff --git a/debian/.gitignore b/debian/.gitignore new file mode 100644 index 000000000..0523941c6 --- /dev/null +++ b/debian/.gitignore @@ -0,0 +1,21 @@ +*.debhelper +*.debhelper.log +*.substvars +/autoreconf.after +/autoreconf.before +/control +/copyright +/debhelper-build-stamp +/files +/openvswitch-common +/openvswitch-doc +/openvswitch-ipsec +/openvswitch-pki +/openvswitch-source +/openvswitch-switch +/openvswitch-switch-dpdk +/openvswitch-test +/openvswitch-testcontroller +/openvswitch-vtep +/python3-openvswitch +/tmp diff --git a/debian/automake.mk b/debian/automake.mk index a3c2d7289..7b2afafae 100644 --- a/debian/automake.mk +++ b/debian/automake.mk @@ -2,8 +2,7 @@ EXTRA_DIST += \ debian/README.Debian \ debian/changelog \ debian/clean \ - debian/control \ - debian/copyright \ + debian/control.in \ debian/copyright.in \ debian/dirs \ debian/gbp.conf \ @@ -80,12 +79,54 @@ check-debian-changelog-version: ALL_LOCAL += check-debian-changelog-version DIST_HOOKS += check-debian-changelog-version -$(srcdir)/debian/copyright: AUTHORS.rst debian/copyright.in + +update_deb_copyright = \ $(AM_V_GEN) \ { sed -n -e '/%AUTHORS%/q' -e p < $(srcdir)/debian/copyright.in; \ tail -n +28 $(srcdir)/AUTHORS.rst | sed '1,/^$$/d' | \ sed -n -e '/^$$/q' -e 's/^/ /p'; \ sed -e '1,/%AUTHORS%/d' $(srcdir)/debian/copyright.in; \ - } > $@ + } > debian/copyright + +debian/copyright: AUTHORS.rst debian/copyright.in + $(update_deb_copyright) + +CLEANFILES += debian/copyright + + +if DPDK_NETDEV +update_deb_control = \ + $(AM_V_GEN) sed -e 's/^\# DPDK_NETDEV //' \ + < $(srcdir)/debian/control.in > debian/control +else +update_deb_control = \ + $(AM_V_GEN) grep -v '^\# DPDK_NETDEV' \ + < $(srcdir)/debian/control.in > debian/control +endif + +debian/control: $(srcdir)/debian/control.in Makefile + $(update_deb_control) -DISTCLEANFILES += debian/copyright +CLEANFILES += debian/control + + +debian: debian/copyright debian/control +.PHONY: debian + + +debian-deb: debian + @if test X"$(srcdir)" != X"$(top_builddir)"; then \ + echo "Debian packages should be built from $(abs_srcdir)/"; \ + exit 1; \ + fi + $(MAKE) distclean + $(update_deb_copyright) + $(update_deb_control) + $(AM_V_GEN) fakeroot debian/rules clean +if DPDK_NETDEV + $(AM_V_GEN) DEB_BUILD_OPTIONS="nocheck parallel=`nproc`" \ + fakeroot debian/rules binary +else + $(AM_V_GEN) DEB_BUILD_OPTIONS="nocheck parallel=`nproc` nodpdk" \ + fakeroot debian/rules binary +endif diff --git a/debian/clean b/debian/clean index 3b2e48901..43da304ce 100644 --- a/debian/clean +++ b/debian/clean @@ -1,2 +1,2 @@ -_debian -_dpdk +_debian/ +_dpdk/ diff --git a/debian/control b/debian/control deleted file mode 100644 index 0ff894461..000000000 --- a/debian/control +++ /dev/null @@ -1,297 +0,0 @@ -Source: openvswitch -Section: net -Priority: optional -Maintainer: Open vSwitch developers -Uploaders: - Simon Horman , - Thomas Goirand , - Michal Arbet , - Luca Boccassi , - Christian Ehrhardt , -Build-Depends: - autoconf (>= 2.64), - automake (>= 1.10), - bzip2, - debhelper-compat (= 13), - dh-exec, - dh-python, - dh-sequence-python3, - dh-sequence-sphinxdoc, - graphviz, - iproute2, - libcap-ng-dev, - libdbus-1-dev [amd64 i386 ppc64el arm64], - libdpdk-dev (>= 21.11) [amd64 i386 ppc64el arm64], - libnuma-dev [amd64 i386 ppc64el arm64], - libpcap-dev [amd64 i386 ppc64el arm64], - libssl-dev, - libtool, - libunbound-dev, - openssl, - pkg-config, - procps, - python3-all-dev, - python3-setuptools, - python3-sortedcontainers, - python3-sphinx, -Standards-Version: 4.6.1 -Rules-Requires-Root: no -Homepage: http://openvswitch.org/ -Vcs-Browser: https://salsa.debian.org/openstack-team/third-party/openvswitch/-/tree/debian/experimental -Vcs-Git: https://salsa.debian.org/openstack-team/third-party/openvswitch.git - -Package: openvswitch-common -Architecture: linux-any -Depends: - openssl, - ${misc:Depends}, - ${python3:Depends}, - ${shlibs:Depends}, -Suggests: - ethtool, - openvswitch-doc, -Breaks: - openvswitch-switch (<< 2.13~), -Replaces: - openvswitch-switch (<< 2.13~), -Description: Open vSwitch common components - Open vSwitch is a production quality, multilayer, software-based, - Ethernet virtual switch. It is designed to enable massive network - automation through programmatic extension, while still supporting - standard management interfaces and protocols (e.g. NetFlow, IPFIX, - sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In addition, it is designed - to support distribution across multiple physical servers similar to - VMware's vNetwork distributed vswitch or Cisco's Nexus 1000V. - . - openvswitch-common provides components required by both openvswitch-switch - and openvswitch-testcontroller. - -Package: openvswitch-doc -Section: doc -Architecture: all -Depends: - ${misc:Depends}, - ${sphinxdoc:Depends}, -Description: Open vSwitch documentation - Open vSwitch is a production quality, multilayer, software-based, - Ethernet virtual switch. It is designed to enable massive network - automation through programmatic extension, while still supporting - standard management interfaces and protocols (e.g. NetFlow, IPFIX, - sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In addition, it is designed - to support distribution across multiple physical servers similar to - VMware's vNetwork distributed vswitch or Cisco's Nexus 1000V. - . - This package provides documentation for configuration and use - of Open vSwitch. - -Package: openvswitch-ipsec -Architecture: linux-any -Pre-Depends: ${misc:Pre-Depends} -Depends: - iproute2, - openvswitch-common (= ${binary:Version}), - openvswitch-switch (= ${binary:Version}), - python3-openvswitch (= ${source:Version}), - strongswan, - ${misc:Depends}, - ${shlibs:Depends}, -Suggests: python3:any -Breaks: - openvswitch-common (<< 2.17~), -Replaces: - openvswitch-common (<< 2.17~), -Description: Open vSwitch IPsec tunneling support - Open vSwitch is a production quality, multilayer, software-based, - Ethernet virtual switch. It is designed to enable massive network - automation through programmatic extension, while still supporting - standard management interfaces and protocols (e.g. NetFlow, IPFIX, - sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In addition, it is designed - to support distribution across multiple physical servers similar to - VMware's vNetwork distributed vswitch or Cisco's Nexus 1000V. - . - This package provides IPsec tunneling support for OVS tunnels. - -Package: openvswitch-pki -Architecture: all -Depends: - openvswitch-common (<< ${source:Version}.1~), - openvswitch-common (>= ${source:Version}), - ${misc:Depends}, -Description: Open vSwitch public key infrastructure dependency package - Open vSwitch is a production quality, multilayer, software-based, - Ethernet virtual switch. It is designed to enable massive network - automation through programmatic extension, while still supporting - standard management interfaces and protocols (e.g. NetFlow, IPFIX, - sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In addition, it is designed - to support distribution across multiple physical servers similar to - VMware's vNetwork distributed vswitch or Cisco's Nexus 1000V. - . - openvswitch-pki provides PKI (public key infrastructure) support for - Open vSwitch switches and controllers, reducing the risk of - man-in-the-middle attacks on the Open vSwitch network infrastructure. - -Package: openvswitch-source -Architecture: all -Depends: - ${misc:Depends}, -Description: Open vSwitch source code - Open vSwitch is a production quality, multilayer, software-based, - Ethernet virtual switch. It is designed to enable massive network - automation through programmatic extension, while still supporting - standard management interfaces and protocols (e.g. NetFlow, IPFIX, - sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In addition, it is designed - to support distribution across multiple physical servers similar to - VMware's vNetwork distributed vswitch or Cisco's Nexus 1000V. - . - This package contains the full Open vSwitch source code to support - use with the Open Virtual Network (OVN) build. - -Package: openvswitch-switch -Architecture: linux-any -Pre-Depends: ${misc:Pre-Depends}, -Depends: - kmod | module-init-tools, - netbase, - openvswitch-common (= ${binary:Version}), - procps, - python3-netifaces, - python3-openvswitch (>= ${source:Version}), - uuid-runtime, - ${misc:Depends}, - ${python3:Depends}, - ${shlibs:Depends}, -Breaks: - openvswitch-common (<< 2.17~), -Replaces: - openvswitch-common (<< 2.17~), -Description: Open vSwitch switch implementations - Open vSwitch is a production quality, multilayer, software-based, - Ethernet virtual switch. It is designed to enable massive network - automation through programmatic extension, while still supporting - standard management interfaces and protocols (e.g. NetFlow, IPFIX, - sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In addition, it is designed - to support distribution across multiple physical servers similar to - VMware's vNetwork distributed vswitch or Cisco's Nexus 1000V. - . - openvswitch-switch provides the userspace components and utilities for - the Open vSwitch kernel-based switch. - -Package: openvswitch-switch-dpdk -Architecture: amd64 arm64 i386 ppc64el -Pre-Depends: ${misc:Pre-Depends}, -Depends: - dpdk, - openvswitch-switch (= ${binary:Version}), - ${misc:Depends}, - ${python3:Depends}, - ${shlibs:Depends}, -Enhances: - openvswitch-switch, -Description: DPDK enabled Open vSwitch switch implementation - Open vSwitch is a production quality, multilayer, software-based, - Ethernet virtual switch. It is designed to enable massive network - automation through programmatic extension, while still supporting - standard management interfaces and protocols (e.g. NetFlow, IPFIX, - sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In addition, it is designed - to support distribution across multiple physical servers similar to - VMware's vNetwork distributed vswitch or Cisco's Nexus 1000V. - . - openvswitch-switch provides the userspace components and utilities for - the Open vSwitch kernel-based switch. - . - DPDK is a set of libraries for fast packet processing. Applications run - in user-space and communicate directly with dedicated network interfaces. - . - This package provides a DPDK enabled implementation of the ovs-vswitchd - binary. - -Package: openvswitch-test -Architecture: all -Depends: - python3-twisted, - ${misc:Depends}, - ${python3:Depends}, -Breaks: - python3-openvswitch (<< 2.17~), - openvswitch-common (<< 2.17~), -Replaces: - python3-openvswitch (<< 2.17~), - openvswitch-common (<< 2.17~), -Description: Open vSwitch test package - Open vSwitch is a production quality, multilayer, software-based, - Ethernet virtual switch. It is designed to enable massive network - automation through programmatic extension, while still supporting - standard management interfaces and protocols (e.g. NetFlow, IPFIX, - sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In addition, it is designed - to support distribution across multiple physical servers similar to - VMware's vNetwork distributed vswitch or Cisco's Nexus 1000V. - . - This package contains utilities that are useful to diagnose - performance and connectivity issues in Open vSwitch setup. - -Package: openvswitch-testcontroller -Architecture: linux-any -Breaks: - openvswitch-common (<< 2.17~), -Replaces: - openvswitch-common (<< 2.17~), -Pre-Depends: ${misc:Pre-Depends} -Depends: - lsb-base, - openvswitch-common (= ${binary:Version}), - openvswitch-pki (= ${source:Version}), - ${misc:Depends}, - ${shlibs:Depends}, -Description: Simple controller for testing OpenFlow setups - This controller enables OpenFlow switches that connect to it to act - as MAC-learning Ethernet switches. It can be used for initial - testing of OpenFlow networks. It is not a necessary or desirable - part of a production OpenFlow deployment. - -Package: openvswitch-vtep -Architecture: linux-any -Pre-Depends: ${misc:Pre-Depends} -Depends: - lsb-base, - lsb-release, - openvswitch-common (>= ${binary:Version}), - openvswitch-switch (>= ${binary:Version}), - python3-openvswitch (>= ${source:Version}), - ${misc:Depends}, - ${python3:Depends}, - ${shlibs:Depends}, -Suggests: python3:any -Breaks: - openvswitch-common (<< 2.17~), -Replaces: - openvswitch-common (<< 2.17~), -Description: Open vSwitch VTEP utilities - Open vSwitch is a production quality, multilayer, software-based, Ethernet - virtual switch. 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). In - addition, it is designed to support distribution across multiple physical - servers similar to VMware's vNetwork distributed vswitch or Cisco's Nexus - 1000V. - . - This package provides utilities that are useful to interact with a - VTEP-configured database and a VTEP emulator. - -Package: python3-openvswitch -Architecture: linux-any -Section: python -Depends: - ${misc:Depends}, - ${python3:Depends}, - ${shlibs:Depends}, -Description: Python 3 bindings for Open vSwitch - Open vSwitch is a production quality, multilayer, software-based, - Ethernet virtual switch. It is designed to enable massive network - automation through programmatic extension, while still supporting - standard management interfaces and protocols (e.g. NetFlow, IPFIX, - sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In addition, it is designed - to support distribution across multiple physical servers similar to - VMware's vNetwork distributed vswitch or Cisco's Nexus 1000V. - . - This package contains the full Python 3 bindings for Open vSwitch - database. diff --git a/debian/control.in b/debian/control.in new file mode 100644 index 000000000..fa7ee7932 --- /dev/null +++ b/debian/control.in @@ -0,0 +1,297 @@ +Source: openvswitch +Section: net +Priority: optional +Maintainer: Open vSwitch developers +Uploaders: + Simon Horman , + Thomas Goirand , + Michal Arbet , + Luca Boccassi , + Christian Ehrhardt , +Build-Depends: + autoconf (>= 2.64), + automake (>= 1.10), + bzip2, + debhelper-compat (= 10), + dh-exec, + dh-python, + dh-sequence-python3, + dh-sequence-sphinxdoc, + graphviz, + iproute2, + libcap-ng-dev, + libdbus-1-dev [amd64 i386 ppc64el arm64], +# DPDK_NETDEV libdpdk-dev (>= 21.11) [amd64 i386 ppc64el arm64], + libnuma-dev [amd64 i386 ppc64el arm64], + libpcap-dev [amd64 i386 ppc64el arm64], + libssl-dev, + libtool, + libunbound-dev, + openssl, + pkg-config, + procps, + python3-all-dev, + python3-setuptools, + python3-sortedcontainers, + python3-sphinx, +Standards-Version: 4.6.1 +Rules-Requires-Root: no +Homepage: http://openvswitch.org/ +Vcs-Browser: https://salsa.debian.org/openstack-team/third-party/openvswitch/-/tree/debian/experimental +Vcs-Git: https://salsa.debian.org/openstack-team/third-party/openvswitch.git + +Package: openvswitch-common +Architecture: linux-any +Depends: + openssl, + ${misc:Depends}, + ${python3:Depends}, + ${shlibs:Depends}, +Suggests: + ethtool, + openvswitch-doc, +Breaks: + openvswitch-switch (<< 2.13~), +Replaces: + openvswitch-switch (<< 2.13~), +Description: Open vSwitch common components + Open vSwitch is a production quality, multilayer, software-based, + Ethernet virtual switch. It is designed to enable massive network + automation through programmatic extension, while still supporting + standard management interfaces and protocols (e.g. NetFlow, IPFIX, + sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In addition, it is designed + to support distribution across multiple physical servers similar to + VMware's vNetwork distributed vswitch or Cisco's Nexus 1000V. + . + openvswitch-common provides components required by both openvswitch-switch + and openvswitch-testcontroller. + +Package: openvswitch-doc +Section: doc +Architecture: all +Depends: + ${misc:Depends}, + ${sphinxdoc:Depends}, +Description: Open vSwitch documentation + Open vSwitch is a production quality, multilayer, software-based, + Ethernet virtual switch. It is designed to enable massive network + automation through programmatic extension, while still supporting + standard management interfaces and protocols (e.g. NetFlow, IPFIX, + sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In addition, it is designed + to support distribution across multiple physical servers similar to + VMware's vNetwork distributed vswitch or Cisco's Nexus 1000V. + . + This package provides documentation for configuration and use + of Open vSwitch. + +Package: openvswitch-ipsec +Architecture: linux-any +Pre-Depends: ${misc:Pre-Depends} +Depends: + iproute2, + openvswitch-common (= ${binary:Version}), + openvswitch-switch (= ${binary:Version}), + python3-openvswitch (= ${source:Version}), + strongswan, + ${misc:Depends}, + ${shlibs:Depends}, +Suggests: python3:any +Breaks: + openvswitch-common (<< 2.17~), +Replaces: + openvswitch-common (<< 2.17~), +Description: Open vSwitch IPsec tunneling support + Open vSwitch is a production quality, multilayer, software-based, + Ethernet virtual switch. It is designed to enable massive network + automation through programmatic extension, while still supporting + standard management interfaces and protocols (e.g. NetFlow, IPFIX, + sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In addition, it is designed + to support distribution across multiple physical servers similar to + VMware's vNetwork distributed vswitch or Cisco's Nexus 1000V. + . + This package provides IPsec tunneling support for OVS tunnels. + +Package: openvswitch-pki +Architecture: all +Depends: + openvswitch-common (<< ${source:Version}.1~), + openvswitch-common (>= ${source:Version}), + ${misc:Depends}, +Description: Open vSwitch public key infrastructure dependency package + Open vSwitch is a production quality, multilayer, software-based, + Ethernet virtual switch. It is designed to enable massive network + automation through programmatic extension, while still supporting + standard management interfaces and protocols (e.g. NetFlow, IPFIX, + sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In addition, it is designed + to support distribution across multiple physical servers similar to + VMware's vNetwork distributed vswitch or Cisco's Nexus 1000V. + . + openvswitch-pki provides PKI (public key infrastructure) support for + Open vSwitch switches and controllers, reducing the risk of + man-in-the-middle attacks on the Open vSwitch network infrastructure. + +Package: openvswitch-source +Architecture: all +Depends: + ${misc:Depends}, +Description: Open vSwitch source code + Open vSwitch is a production quality, multilayer, software-based, + Ethernet virtual switch. It is designed to enable massive network + automation through programmatic extension, while still supporting + standard management interfaces and protocols (e.g. NetFlow, IPFIX, + sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In addition, it is designed + to support distribution across multiple physical servers similar to + VMware's vNetwork distributed vswitch or Cisco's Nexus 1000V. + . + This package contains the full Open vSwitch source code to support + use with the Open Virtual Network (OVN) build. + +Package: openvswitch-switch +Architecture: linux-any +Pre-Depends: ${misc:Pre-Depends}, +Depends: + kmod | module-init-tools, + netbase, + openvswitch-common (= ${binary:Version}), + procps, + python3-netifaces, + python3-openvswitch (>= ${source:Version}), + uuid-runtime, + ${misc:Depends}, + ${python3:Depends}, + ${shlibs:Depends}, +Breaks: + openvswitch-common (<< 2.17~), +Replaces: + openvswitch-common (<< 2.17~), +Description: Open vSwitch switch implementations + Open vSwitch is a production quality, multilayer, software-based, + Ethernet virtual switch. It is designed to enable massive network + automation through programmatic extension, while still supporting + standard management interfaces and protocols (e.g. NetFlow, IPFIX, + sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In addition, it is designed + to support distribution across multiple physical servers similar to + VMware's vNetwork distributed vswitch or Cisco's Nexus 1000V. + . + openvswitch-switch provides the userspace components and utilities for + the Open vSwitch kernel-based switch. + +# DPDK_NETDEV Package: openvswitch-switch-dpdk +# DPDK_NETDEV Architecture: amd64 arm64 i386 ppc64el +# DPDK_NETDEV Pre-Depends: ${misc:Pre-Depends}, +# DPDK_NETDEV Depends: +# DPDK_NETDEV dpdk, +# DPDK_NETDEV openvswitch-switch (= ${binary:Version}), +# DPDK_NETDEV ${misc:Depends}, +# DPDK_NETDEV ${python3:Depends}, +# DPDK_NETDEV ${shlibs:Depends}, +# DPDK_NETDEV Enhances: +# DPDK_NETDEV openvswitch-switch, +# DPDK_NETDEV Description: DPDK enabled Open vSwitch switch implementation +# DPDK_NETDEV Open vSwitch is a production quality, multilayer, software-based, +# DPDK_NETDEV Ethernet virtual switch. It is designed to enable massive network +# DPDK_NETDEV automation through programmatic extension, while still supporting +# DPDK_NETDEV standard management interfaces and protocols (e.g. NetFlow, IPFIX, +# DPDK_NETDEV sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In addition, it is designed +# DPDK_NETDEV to support distribution across multiple physical servers similar to +# DPDK_NETDEV VMware's vNetwork distributed vswitch or Cisco's Nexus 1000V. +# DPDK_NETDEV . +# DPDK_NETDEV openvswitch-switch provides the userspace components and utilities for +# DPDK_NETDEV the Open vSwitch kernel-based switch. +# DPDK_NETDEV . +# DPDK_NETDEV DPDK is a set of libraries for fast packet processing. Applications run +# DPDK_NETDEV in user-space and communicate directly with dedicated network interfaces. +# DPDK_NETDEV . +# DPDK_NETDEV This package provides a DPDK enabled implementation of the ovs-vswitchd +# DPDK_NETDEV binary. + +Package: openvswitch-test +Architecture: all +Depends: + python3-twisted, + ${misc:Depends}, + ${python3:Depends}, +Breaks: + python3-openvswitch (<< 2.17~), + openvswitch-common (<< 2.17~), +Replaces: + python3-openvswitch (<< 2.17~), + openvswitch-common (<< 2.17~), +Description: Open vSwitch test package + Open vSwitch is a production quality, multilayer, software-based, + Ethernet virtual switch. It is designed to enable massive network + automation through programmatic extension, while still supporting + standard management interfaces and protocols (e.g. NetFlow, IPFIX, + sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In addition, it is designed + to support distribution across multiple physical servers similar to + VMware's vNetwork distributed vswitch or Cisco's Nexus 1000V. + . + This package contains utilities that are useful to diagnose + performance and connectivity issues in Open vSwitch setup. + +Package: openvswitch-testcontroller +Architecture: linux-any +Breaks: + openvswitch-common (<< 2.17~), +Replaces: + openvswitch-common (<< 2.17~), +Pre-Depends: ${misc:Pre-Depends} +Depends: + lsb-base, + openvswitch-common (= ${binary:Version}), + openvswitch-pki (= ${source:Version}), + ${misc:Depends}, + ${shlibs:Depends}, +Description: Simple controller for testing OpenFlow setups + This controller enables OpenFlow switches that connect to it to act + as MAC-learning Ethernet switches. It can be used for initial + testing of OpenFlow networks. It is not a necessary or desirable + part of a production OpenFlow deployment. + +Package: openvswitch-vtep +Architecture: linux-any +Pre-Depends: ${misc:Pre-Depends} +Depends: + lsb-base, + lsb-release, + openvswitch-common (>= ${binary:Version}), + openvswitch-switch (>= ${binary:Version}), + python3-openvswitch (>= ${source:Version}), + ${misc:Depends}, + ${python3:Depends}, + ${shlibs:Depends}, +Suggests: python3:any +Breaks: + openvswitch-common (<< 2.17~), +Replaces: + openvswitch-common (<< 2.17~), +Description: Open vSwitch VTEP utilities + Open vSwitch is a production quality, multilayer, software-based, Ethernet + virtual switch. 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). In + addition, it is designed to support distribution across multiple physical + servers similar to VMware's vNetwork distributed vswitch or Cisco's Nexus + 1000V. + . + This package provides utilities that are useful to interact with a + VTEP-configured database and a VTEP emulator. + +Package: python3-openvswitch +Architecture: linux-any +Section: python +Depends: + ${misc:Depends}, + ${python3:Depends}, + ${shlibs:Depends}, +Description: Python 3 bindings for Open vSwitch + Open vSwitch is a production quality, multilayer, software-based, + Ethernet virtual switch. It is designed to enable massive network + automation through programmatic extension, while still supporting + standard management interfaces and protocols (e.g. NetFlow, IPFIX, + sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). In addition, it is designed + to support distribution across multiple physical servers similar to + VMware's vNetwork distributed vswitch or Cisco's Nexus 1000V. + . + This package contains the full Python 3 bindings for Open vSwitch + database. diff --git a/debian/rules b/debian/rules index 9a2f8ac1c..f3202ac30 100755 --- a/debian/rules +++ b/debian/rules @@ -28,6 +28,7 @@ override_dh_auto_configure: $(EXTRA_CONFIGURE_OPTS) \ ) ifneq (,$(filter i386 amd64 ppc64el arm64, $(DEB_HOST_ARCH))) +ifeq (,$(filter nodpdk, $(DEB_BUILD_OPTIONS))) test -d _dpdk || mkdir _dpdk cd _dpdk && ( \ test -e Makefile || \ @@ -37,6 +38,7 @@ ifneq (,$(filter i386 amd64 ppc64el arm64, $(DEB_HOST_ARCH))) $(EXTRA_CONFIGURE_OPTS) \ ) endif +endif # NOTE(jamespage): by default, just run all tests @@ -61,12 +63,14 @@ ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) # Skip DPDK testing on arm64 as builders don't have crc32 support # which is used in aarch64 based crc optimization in ovs >= 2.12.0~ ifneq (,$(filter i386 amd64 ppc64el, $(DEB_HOST_ARCH))) +ifeq (,$(filter nodpdk, $(DEB_BUILD_OPTIONS))) if $(MAKE) -C _dpdk check TESTSUITEFLAGS='$(PARALLEL) $(TEST_LIST_DPDK)' || \ $(MAKE) -C _dpdk check TESTSUITEFLAGS='--recheck'; then :; \ else \ cat _dpdk/tests/testsuite.log; \ exit 1; \ fi +endif # nodpdk endif # i386/amd64/ppc64el endif # nocheck @@ -74,8 +78,10 @@ override_dh_auto_build: dh_auto_build --sourcedirectory=_debian -- dist distdir=openvswitch dh_auto_build --sourcedirectory=_debian ifneq (,$(filter i386 amd64 ppc64el arm64, $(DEB_HOST_ARCH))) +ifeq (,$(filter nodpdk, $(DEB_BUILD_OPTIONS))) dh_auto_build --sourcedirectory=_dpdk endif +endif execute_before_dh_auto_clean: find . -name "*.pyc" -delete -- cgit v1.2.1