From: Ilya Maximets <[email protected]>
Signed-off-by: Ilya Maximets <[email protected]>
Co-authored-by: Frode Nordahl <[email protected]>
Signed-off-by: Frode Nordahl <[email protected]>
---
.ci/linux-build.sh | 6 ++-
.github/workflows/build-and-test.yml | 12 +++++-
.gitignore | 1 +
Documentation/intro/install/debian.rst | 27 ++++++------
debian/.gitignore | 21 +++++++++
debian/automake.mk | 22 +++++++++-
debian/clean | 4 +-
debian/{control => control.in} | 60 +++++++++++++-------------
debian/rules | 6 +++
9 files changed, 110 insertions(+), 49 deletions(-)
create mode 100644 debian/.gitignore
rename debian/{control => control.in} (85%)
diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh
index a8c437aaf..8dcfbdcea 100755
--- a/.ci/linux-build.sh
+++ b/.ci/linux-build.sh
@@ -204,9 +204,13 @@ function build_ovs()
}
if [ "$DEB_PACKAGE" ]; then
+ if [ -n "$DPDK" ]; then
+ DPDK=no
+ fi
+ ./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..419ef0def 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
@@ -244,5 +252,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..888b17723 100644
--- a/Documentation/intro/install/debian.rst
+++ b/Documentation/intro/install/debian.rst
@@ -58,27 +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. Prepare the package source.
+
+ If you want to build the package with DPDK support execute the following
+ command::
-4. Build the package::
+ $ ./boot.sh && ./configure --with-dpdk=shared && make debian
- $ fakeroot debian/rules binary
+ If not::
- 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::
+ $ ./boot.sh && ./configure && make debian
- $ DEB_BUILD_OPTIONS='parallel=8' fakeroot debian/rules binary
+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.
- If you are in a big hurry, you can even skip the unit tests::
+5. Build the package::
- $ DEB_BUILD_OPTIONS='parallel=8 nocheck' fakeroot debian/rules binary
+ $ make debian-deb
.. note::
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..2f94c2999 100644
--- a/debian/automake.mk
+++ b/debian/automake.mk
@@ -3,6 +3,7 @@ EXTRA_DIST += \
debian/changelog \
debian/clean \
debian/control \
+ debian/control.in \
debian/copyright \
debian/copyright.in \
debian/dirs \
@@ -88,4 +89,23 @@ $(srcdir)/debian/copyright: AUTHORS.rst debian/copyright.in
sed -e '1,/%AUTHORS%/d' $(srcdir)/debian/copyright.in; \
} > $@
-DISTCLEANFILES += debian/copyright
+$(srcdir)/debian/control: debian/control.in config.h
+if DPDK_NETDEV
+ sed -e 's/^# DPDK_NETDEV //' \
+ < $(srcdir)/debian/control.in > $(srcdir)/debian/control
+else
+ grep -v "^# DPDK_NETDEV" \
+ < $(srcdir)/debian/control.in > $(srcdir)/debian/control
+endif
+
+debian: $(srcdir)/debian/copyright $(srcdir)/debian/control
+.PHONY: debian
+
+
+debian-deb: debian
+ make distclean
+if DPDK_NETDEV
+ DEB_BUILD_OPTIONS="nocheck parallel=`nproc`" fakeroot debian/rules
binary
+else
+ 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.in
similarity index 85%
rename from debian/control
rename to debian/control.in
index 0ff894461..fa7ee7932 100644
--- a/debian/control
+++ b/debian/control.in
@@ -12,7 +12,7 @@ Build-Depends:
autoconf (>= 2.64),
automake (>= 1.10),
bzip2,
- debhelper-compat (= 13),
+ debhelper-compat (= 10),
dh-exec,
dh-python,
dh-sequence-python3,
@@ -21,7 +21,7 @@ Build-Depends:
iproute2,
libcap-ng-dev,
libdbus-1-dev [amd64 i386 ppc64el arm64],
- libdpdk-dev (>= 21.11) [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,
@@ -176,34 +176,34 @@ Description: Open vSwitch switch implementations
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.
+# 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
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
--
2.36.1
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev