bdc197cb62
Change-Id: I4b9c75a36695117b6ec7cb51e29313c4d725f1fa
123 lines
4.6 KiB
Docker
123 lines
4.6 KiB
Docker
ARG FROM=docker.io/ubuntu:bionic
|
|
FROM ${FROM}
|
|
LABEL maintainer="cheng1.li@intel.com"
|
|
|
|
# Options to compile ovs-dpdk either from source (DPDK and OVS) or
|
|
# install it from package. By default package install is enabled.
|
|
# For src compile pass following build-args.
|
|
ARG OVS_SRC_COMPILE_VERSION="2.11.1"
|
|
ARG DPDK_SRC_COMPILE_VERSION="18.11.5"
|
|
|
|
# URL to fetch the code package from. The package name should follow
|
|
# this naming convention: openvswitch-${OVS_SRC_COMPILE_VERSION}.tar.gz
|
|
ARG OVS_SRC_URL="http://openvswitch.org/releases"
|
|
|
|
# URL to fetch the code package from. The package name should follow
|
|
# this naming convention: dpdk-${DPDK_SRC_COMPILE_VERSION}.tar.xz
|
|
ARG DPDK_SRC_URL="http://fast.dpdk.org/rel"
|
|
|
|
# Option to apply any patch to DPDK or OVS sources, in case using
|
|
# source compilation. For this ensure the patch file is kept in
|
|
# same folder as this Dockerfile, and pass following build-args.
|
|
ARG OVS_PATCH_FILE_NAME=""
|
|
ARG DPDK_PATCH_FILE_NAME=""
|
|
|
|
# Any extra compile-time flags for OVS
|
|
ARG OVS_EXTRA_COMPILE_FLAGS=""
|
|
|
|
# Any extra compile-time flags for DPDK
|
|
ARG DPDK_EXTRA_COMPILE_FLAGS=""
|
|
|
|
ADD Dockerfile.ubuntu_bionic-dpdk ${OVS_PATCH_FILE_NAME}* ${DPDK_PATCH_FILE_NAME}* ./
|
|
|
|
RUN set -ex;\
|
|
rm -rf Dockerfile.ubuntu_bionic-dpdk ;\
|
|
apt-get update; \
|
|
if [ -n "$OVS_SRC_COMPILE_VERSION" -a -n "$DPDK_SRC_COMPILE_VERSION" ]; then \
|
|
if [ -n "$OVS_PATCH_FILE_NAME" ]; then \
|
|
OVS_PATCH_TMP_DIR=$(mktemp -d) ;\
|
|
mv ./${OVS_PATCH_FILE_NAME} ${OVS_PATCH_TMP_DIR}/${OVS_PATCH_FILE_NAME} ;\
|
|
fi ;\
|
|
if [ -n "$DPDK_PATCH_FILE_NAME" ]; then \
|
|
DPDK_PATCH_TMP_DIR=$(mktemp -d) ;\
|
|
mv ./${DPDK_PATCH_FILE_NAME} ${DPDK_PATCH_TMP_DIR}/${DPDK_PATCH_FILE_NAME} ;\
|
|
fi ;\
|
|
apt-get upgrade -y ;\
|
|
apt-get install --no-install-recommends -y \
|
|
bash ;\
|
|
apt-get install --no-install-recommends -y \
|
|
build-essential \
|
|
curl \
|
|
libatomic1 \
|
|
libssl1.1 \
|
|
openssl \
|
|
uuid-runtime \
|
|
graphviz \
|
|
autoconf \
|
|
automake \
|
|
bzip2 \
|
|
debhelper \
|
|
dh-autoreconf \
|
|
libssl-dev \
|
|
libtool \
|
|
python-all \
|
|
python-six \
|
|
python-twisted-conch \
|
|
python-zopeinterface \
|
|
libpcap-dev \
|
|
libnuma-dev ;\
|
|
TMP_DIR=$(mktemp -d) ;\
|
|
curl -sSL ${DPDK_SRC_URL}/dpdk-${DPDK_SRC_COMPILE_VERSION}.tar.xz | tar xJ -C ${TMP_DIR} --strip-components=1 ;\
|
|
export DPDK_DIR=${TMP_DIR} ;\
|
|
cd ${DPDK_DIR} ;\
|
|
if [ -d "$DPDK_PATCH_TMP_DIR" ]; then \
|
|
patch -p1 < ${DPDK_PATCH_TMP_DIR}/${DPDK_PATCH_FILE_NAME} ;\
|
|
fi ;\
|
|
export DPDK_TARGET=x86_64-native-linuxapp-gcc ;\
|
|
export DPDK_BUILD=${DPDK_DIR}/build ;\
|
|
make config T=${DPDK_TARGET} ;\
|
|
cd ${DPDK_BUILD} ;\
|
|
sed -i 's/CONFIG_RTE_KNI_KMOD=.*$/CONFIG_RTE_KNI_KMOD=n/' .config ;\
|
|
sed -i 's/CONFIG_RTE_LIBRTE_KNI=.*$/CONFIG_RTE_LIBRTE_KNI=n/' .config ;\
|
|
sed -i 's/CONFIG_RTE_EAL_IGB_UIO=.*$/CONFIG_RTE_EAL_IGB_UIO=n/' .config ;\
|
|
make -j $(nproc) EXTRA_CFLAGS='-Ofast -fPIC' MACHINE_CFLAGS="-march=native" ${DPDK_EXTRA_COMPILE_FLAGS};\
|
|
make install ;\
|
|
TMP_DIR=$(mktemp -d) ;\
|
|
curl -sSL ${OVS_SRC_URL}/openvswitch-${OVS_SRC_COMPILE_VERSION}.tar.gz | tar xz -C ${TMP_DIR} --strip-components=1 ;\
|
|
cd ${TMP_DIR} ;\
|
|
if [ -d "$OVS_PATCH_TMP_DIR" ]; then \
|
|
patch -p1 < ${OVS_PATCH_TMP_DIR}/${OVS_PATCH_FILE_NAME} ;\
|
|
fi ;\
|
|
./boot.sh ;\
|
|
./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc --with-dpdk=$DPDK_BUILD CFLAGS="-Ofast -g -march=native" ${OVS_EXTRA_COMPILE_FLAGS} ;\
|
|
make -j $(nproc) CFLAGS="-Ofast -g -march=native" ${OVS_EXTRA_COMPILE_FLAGS} ;\
|
|
make install ;\
|
|
cd / ;\
|
|
rm -rf ${DPDK_DIR} ;\
|
|
rm -rf ${TMP_DIR} ;\
|
|
rm -rf ${OVS_PATCH_TMP_DIR} ;\
|
|
rm -rf ${DPDK_PATCH_TMP_DIR} ;\
|
|
apt-get purge --auto-remove -y \
|
|
build-essential \
|
|
curl \
|
|
graphviz \
|
|
autoconf \
|
|
automake \
|
|
bzip2 \
|
|
debhelper \
|
|
dh-autoreconf \
|
|
libssl-dev \
|
|
libtool \
|
|
python-all \
|
|
python-six \
|
|
python-twisted-conch \
|
|
python-zopeinterface ;\
|
|
else \
|
|
apt-get install -y openvswitch-switch-dpdk ;\
|
|
update-alternatives --set ovs-vswitchd /usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk ;\
|
|
fi ;\
|
|
apt-get install --no-install-recommends -y iproute2 tcpdump conntrack ;\
|
|
apt-get install --no-install-recommends -y python3 python3-dev python3-pip python3-setuptools ;\
|
|
pip3 --no-cache-dir install ovs netifaces ;\
|
|
rm -rf /var/lib/apt/lists/* ;\
|