new file mode 100755
@@ -0,0 +1,88 @@
+#!/bin/bash
+
+# check for whether we're clang or gcc
+# setup the right options depending on the environment variables
+# run the build
+
+# Just used for the 'classic' configuration system (ie: make)
+set_conf() {
+ echo "[BUILT WITH $2 SET TO $3]"
+ c="$1/.config"
+ shift
+
+ if grep -q "$1" "$c"; then
+ sed -i "s:^$1=.*$:$1=$2:g" $c
+ else
+ echo $1=$2 >> "$c"
+ fi
+}
+
+BUILD_ARCH="x86_64-native-linuxapp-"
+
+if [ "${AARCH64}" == "1" ]; then
+ # convert the arch specifier
+ BUILD_ARCH="arm64-armv8a-linuxapp-"
+ ARM64_TOOL="linaro-arm-tool"
+ export PATH=$PATH:$(pwd)/${ARM64_TOOL}/bin
+fi
+
+
+if [ "${NINJABUILD}" == "1" ]; then
+ OPTS=""
+
+ DEF_LIB="static"
+ if [ "${SHARED}" == "1" ]; then
+ DEF_LIB="shared"
+ fi
+
+ if [ "${DISABLE_KERNEL_MODULES}" == "1" ]; then
+ OPTS="-Denable_kmods=false"
+ fi
+
+ if [ "${AARCH64}" == "1" ]; then
+ OPTS="${OPTS} --cross-file config/arm/arm64_armv8_linuxapp_gcc"
+ fi
+
+ OPTS="$OPTS --default-library=$DEF_LIB"
+ meson build --werror -Dexamples=all ${OPTS}
+ ninja -C build
+else
+ EXTRA_OPTS=""
+
+ make config T="${BUILD_ARCH}${CC}"
+
+ set_conf build CONFIG_RTE_KNI_KMOD n
+ set_conf build CONFIG_RTE_EAL_IGB_UIO n
+
+ if dpkg --list | grep -q zlib1g ; then
+ set_conf build CONFIG_RTE_LIBRTE_PMD_ZLIB y
+ fi
+
+ if dpkg --list | grep -q libpcap-dev ; then
+ set_conf build CONFIG_RTE_PORT_PCAP y
+ fi
+
+ if [ "${SHARED}" == "1" ]; then
+ set_conf build CONFIG_RTE_BUILD_SHARED_LIB y
+ fi
+
+ if [ "${DISABLE_KERNEL_MODULES}" == "1" ]; then
+ echo Unsupported kernel builds at the moment
+ fi
+
+ if [ "${AARCH64}" == "1" ]; then
+ EXTRA_OPTS="CROSS=aarch64-linux-gnu-"
+
+ # need to turn off these extras
+ set_conf build CONFIG_RTE_PORT_PCAP n
+ set_conf build CONFIG_RTE_LIBRTE_PMD_ZLIB n
+
+ # convert the CC/CXX variables
+ export CC=aarch64-linux-gnu-${CC}
+ export CXX=aarch64-linux-gnu-${CXX}
+ export AR=aarch64-linux-gnu-ar
+ export STRIP=aarch64-linux-gnu-strip
+ fi
+
+ make all ${EXTRA_OPTS}
+fi
new file mode 100755
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+python3.5 -m pip install --upgrade meson --user
+
+echo "AARCH64 is [ ${AARCH64} ]"
+
+if [ "${AARCH64}" == "1" ]; then
+ # need to build & install libnuma
+ # This will only be minimal support for now.
+ ARM64_TOOL_URL='https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz'
+ ARM64_TOOL="linaro-arm-tool"
+ NUMA_GIT_URL="https://github.com/numactl/numactl.git"
+
+ wget -O "${ARM64_TOOL}.tar.xz" "${ARM64_TOOL_URL}"
+ tar -xf "${ARM64_TOOL}.tar.xz"
+ mv gcc-linaro* "${ARM64_TOOL}"
+ export PATH=$PATH:$(pwd)/${ARM64_TOOL}/bin
+ git clone "${NUMA_GIT_URL}"
+ cd numactl
+ git checkout v2.0.11
+ ./autogen.sh
+ autoconf -i
+ mkdir numa_bin
+ ./configure --host=aarch64-linux-gnu CC=aarch64-linux-gnu-gcc \
+ --prefix=$(pwd)/numa_bin
+ make install # install numa
+ cd ..
+ cp numactl/numa_bin/include/numa*.h "${ARM64_TOOL}/aarch64-linux-gnu/libc/usr/include/"
+ cp numactl/numa_bin/lib/libnuma.* "${ARM64_TOOL}/aarch64-linux-gnu/lib64/"
+ cp numactl/numa_bin/lib/libnuma.* "${ARM64_TOOL}/lib/"
+fi
new file mode 100644
@@ -0,0 +1,159 @@
+language: c
+compiler:
+ - gcc
+ - clang
+
+os:
+ - linux
+
+addons:
+ apt:
+ sources:
+ - deadsnakes #Repo for python 3.5
+ - sourceline: 'ppa:mstipicevic/ninja-build-1-7-2'
+ packages:
+ - [libnuma-dev, linux-headers-$(uname -r), python3.5, python3-pip, ninja-build]
+
+before_install: ./.ci/${TRAVIS_OS_NAME}-setup.sh
+
+sudo: false
+
+env:
+ - SHARED=1
+ - DISABLE_KERNEL_MODULES=1
+ - SHARED=1 DISABLE_KERNEL_MODULES=1
+ - NINJABUILD=1
+ - NINJABUILD=1 SHARED=1
+ - NINJABUILD=1 DISABLE_KERNEL_MODULES=1
+ - NINJABUILD=1 SHARED=1 DISABLE_KERNEL_MODULES=1
+
+matrix:
+ include:
+ - env: SHARED=1
+ compiler: gcc
+ addons:
+ apt:
+ sources:
+ - deadsnakes #Repo for python 3.5
+ - sourceline: 'ppa:mstipicevic/ninja-build-1-7-2'
+ packages:
+ - [libbsd-dev, libpcap-dev, libcrypto++-dev, libjansson4]
+ - [libnuma-dev, linux-headers-$(uname -r), python3.5, python3-pip, ninja-build]
+ - env: DISABLE_KERNEL_MODULES=1
+ compiler: gcc
+ addons:
+ apt:
+ sources:
+ - deadsnakes #Repo for python 3.5
+ - sourceline: 'ppa:mstipicevic/ninja-build-1-7-2'
+ packages:
+ - [libbsd-dev, libpcap-dev, libcrypto++-dev, libjansson4]
+ - [libnuma-dev, linux-headers-$(uname -r), python3.5, python3-pip, ninja-build]
+ - env: SHARED=1 DISABLE_KERNEL_MODULES=1
+ compiler: gcc
+ addons:
+ apt:
+ sources:
+ - deadsnakes #Repo for python 3.5
+ - sourceline: 'ppa:mstipicevic/ninja-build-1-7-2'
+ packages:
+ - [libbsd-dev, libpcap-dev, libcrypto++-dev, libjansson4]
+ - [libnuma-dev, linux-headers-$(uname -r), python3.5, python3-pip, ninja-build]
+ - env: SHARED=1
+ compiler: clang
+ addons:
+ apt:
+ sources:
+ - deadsnakes #Repo for python 3.5
+ - sourceline: 'ppa:mstipicevic/ninja-build-1-7-2'
+ packages:
+ - [libbsd-dev, libpcap-dev, libcrypto++-dev, libjansson4]
+ - [libnuma-dev, linux-headers-$(uname -r), python3.5, python3-pip, ninja-build]
+ - env: DISABLE_KERNEL_MODULES=1
+ compiler: clang
+ addons:
+ apt:
+ sources:
+ - deadsnakes #Repo for python 3.5
+ - sourceline: 'ppa:mstipicevic/ninja-build-1-7-2'
+ packages:
+ - [libbsd-dev, libpcap-dev, libcrypto++-dev, libjansson4]
+ - [libnuma-dev, linux-headers-$(uname -r), python3.5, python3-pip, ninja-build]
+ - env: SHARED=1 DISABLE_KERNEL_MODULES=1
+ compiler: clang
+ addons:
+ apt:
+ sources:
+ - deadsnakes #Repo for python 3.5
+ - sourceline: 'ppa:mstipicevic/ninja-build-1-7-2'
+ packages:
+ - [libbsd-dev, libpcap-dev, libcrypto++-dev, libjansson4]
+ - [libnuma-dev, linux-headers-$(uname -r), python3.5, python3-pip, ninja-build]
+ - env: AARCH64=1
+ compiler: gcc
+ addons:
+ apt:
+ sources:
+ - deadsnakes #Repo for python 3.5
+ - sourceline: 'ppa:mstipicevic/ninja-build-1-7-2'
+ packages:
+ - [libbsd-dev, libpcap-dev, libcrypto++-dev, libjansson4]
+ - [libnuma-dev, linux-headers-$(uname -r), libtool, python3.5, python3-pip]
+ - env: AARCH64=1 NINJABUILD=1
+ compiler: gcc
+ addons:
+ apt:
+ sources:
+ - deadsnakes #Repo for python 3.5
+ - sourceline: 'ppa:mstipicevic/ninja-build-1-7-2'
+ packages:
+ - [libbsd-dev, libpcap-dev, libcrypto++-dev, libjansson4]
+ - [linux-headers-$(uname -r), libtool, python3.5, python3-pip, ninja-build]
+ - env: NINJABUILD=1
+ compiler: gcc
+ addons:
+ apt:
+ sources:
+ - deadsnakes #Repo for python 3.5
+ - sourceline: 'ppa:mstipicevic/ninja-build-1-7-2'
+ packages:
+ - [libbsd-dev, libpcap-dev, libcrypto++-dev, libjansson4]
+ - [libnuma-dev, linux-headers-$(uname -r), python3.5, python3-pip, ninja-build]
+ - env: NINJABUILD=1 SHARED=1
+ compiler: gcc
+ addons:
+ apt:
+ sources:
+ - deadsnakes #Repo for python 3.5
+ - sourceline: 'ppa:mstipicevic/ninja-build-1-7-2'
+ packages:
+ - [libbsd-dev, libpcap-dev, libcrypto++-dev, libjansson4]
+ - [libnuma-dev, linux-headers-$(uname -r), python3.5, python3-pip, ninja-build]
+ - env: NINJABUILD=1 DISABLE_KERNEL_MODULES=1
+ compiler: gcc
+ addons:
+ apt:
+ sources:
+ - deadsnakes #Repo for python 3.5
+ - sourceline: 'ppa:mstipicevic/ninja-build-1-7-2'
+ packages:
+ - [libbsd-dev, libpcap-dev, libcrypto++-dev, libjansson4]
+ - [libnuma-dev, linux-headers-$(uname -r), python3.5, python3-pip, ninja-build]
+ - env: NINJABUILD=1 SHARED=1 DISABLE_KERNEL_MODULES=1
+ compiler: gcc
+ addons:
+ apt:
+ sources:
+ - deadsnakes #Repo for python 3.5
+ - sourceline: 'ppa:mstipicevic/ninja-build-1-7-2'
+ packages:
+ - [libbsd-dev, libpcap-dev, libcrypto++-dev, libjansson4]
+ - [libnuma-dev, linux-headers-$(uname -r), python3.5, python3-pip, ninja-build]
+
+
+script: ./.ci/${TRAVIS_OS_NAME}-build.sh
+
+notifications:
+ email:
+ recipients:
+ - test-report@dpdk.org
@@ -119,6 +119,12 @@ F: config/rte_config.h
F: buildtools/gen-pmdinfo-cfile.sh
F: buildtools/symlink-drivers-solibs.sh
+Public CI
+M: Aaron Conole <aconole@redhat.com>
+M: Michael Santana <msantana@redhat.com>
+F: .travis.yml
+F: .ci/
+
ABI versioning
M: Neil Horman <nhorman@tuxdriver.com>
F: lib/librte_compat/
@@ -32,6 +32,10 @@ The mailing list for DPDK development is `dev@dpdk.org <http://mails.dpdk.org/ar
Contributors will need to `register for the mailing list <http://mails.dpdk.org/listinfo/dev>`_ in order to submit patches.
It is also worth registering for the DPDK `Patchwork <http://patches.dpdk.org/project/dpdk/list/>`_
+If you are using the GitHub service, you can link your repository to
+the ``travis-ci.org`` build service. When you push patches to your GitHub
+repository, the travis service will automatically build your changes.
+
The development process requires some familiarity with the ``git`` version control system.
Refer to the `Pro Git Book <http://www.git-scm.com/book/>`_ for further information.