mirror of
https://github.com/openvswitch/ovs
synced 2025-08-22 09:58:01 +00:00
debian: Add option to build without DPDK.
Co-authored-by: Frode Nordahl <frode.nordahl@canonical.com> Signed-off-by: Frode Nordahl <frode.nordahl@canonical.com> Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
This commit is contained in:
parent
c78e7efa7b
commit
16bec677aa
@ -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
|
||||
|
15
.github/workflows/build-and-test.yml
vendored
15
.github/workflows/build-and-test.yml
vendored
@ -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'
|
||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -68,6 +68,7 @@ TAGS
|
||||
cscope.*
|
||||
tags
|
||||
_debian
|
||||
_dpdk
|
||||
odp-netlink.h
|
||||
odp-netlink-macros.h
|
||||
OvsDpInterface.h
|
||||
|
@ -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``.
|
||||
|
||||
4. Prepare the package source.
|
||||
|
||||
If you want to build the package with DPDK support execute the following
|
||||
command::
|
||||
|
||||
$ ./boot.sh && ./configure --with-dpdk=shared && make debian
|
||||
|
||||
If not::
|
||||
|
||||
$ ./boot.sh && ./configure && make debian
|
||||
|
||||
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::
|
||||
5. Build the package::
|
||||
|
||||
$ fakeroot debian/rules binary
|
||||
|
||||
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::
|
||||
|
||||
$ DEB_BUILD_OPTIONS='parallel=8' fakeroot debian/rules binary
|
||||
|
||||
If you are in a big hurry, you can even skip the unit tests::
|
||||
|
||||
$ DEB_BUILD_OPTIONS='parallel=8 nocheck' fakeroot debian/rules binary
|
||||
|
||||
.. 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::
|
||||
|
||||
$ fakeroot debian/rules clean
|
||||
|
||||
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.
|
||||
|
21
debian/.gitignore
vendored
Normal file
21
debian/.gitignore
vendored
Normal file
@ -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
|
51
debian/automake.mk
vendored
51
debian/automake.mk
vendored
@ -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
|
||||
|
||||
DISTCLEANFILES += 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)
|
||||
|
||||
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
|
||||
|
4
debian/clean
vendored
4
debian/clean
vendored
@ -1,2 +1,2 @@
|
||||
_debian
|
||||
_dpdk
|
||||
_debian/
|
||||
_dpdk/
|
||||
|
60
debian/control → debian/control.in
vendored
60
debian/control → debian/control.in
vendored
@ -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
|
6
debian/rules
vendored
6
debian/rules
vendored
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user