diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh new file mode 100755 index 0000000000..4eb7c3cf06 --- /dev/null +++ b/.ci/linux-build.sh @@ -0,0 +1,24 @@ +#!/bin/sh -xe + +on_error() { + if [ $? = 0 ]; then + exit + fi + FILES_TO_PRINT="build/meson-logs/testlog.txt build/.ninja_log build/meson-logs/meson-log.txt" + + for pr_file in $FILES_TO_PRINT; do + if [ -e "$pr_file" ]; then + cat "$pr_file" + fi + done +} +trap on_error EXIT + +if [ "$AARCH64" = "1" ]; then + # convert the arch specifier + 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 diff --git a/.ci/linux-setup.sh b/.ci/linux-setup.sh new file mode 100755 index 0000000000..acdf9f370e --- /dev/null +++ b/.ci/linux-setup.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +python3 -m pip install --upgrade meson --user diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000000..3045eada59 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,99 @@ +language: c +compiler: + - gcc + - clang + +dist: xenial + +os: + - linux + +addons: + apt: + update: true + packages: &required_packages + - [libnuma-dev, linux-headers-$(uname -r), python3-setuptools, python3-wheel, python3-pip, ninja-build] + +aarch64_packages: &aarch64_packages + - *required_packages + - [gcc-aarch64-linux-gnu, libc6-dev-arm64-cross] + +extra_packages: &extra_packages + - *required_packages + - [libbsd-dev, libpcap-dev, libcrypto++-dev, libjansson4] + +before_install: ./.ci/${TRAVIS_OS_NAME}-setup.sh + +sudo: false + +env: + - DEF_LIB="static" + - DEF_LIB="shared" + - DEF_LIB="static" OPTS="-Denable_kmods=false" + - DEF_LIB="shared" OPTS="-Denable_kmods=false" + +matrix: + include: + - env: DEF_LIB="static" OPTS="-Denable_kmods=false" AARCH64=1 + compiler: gcc + addons: + apt: + packages: + - *aarch64_packages + - env: DEF_LIB="shared" OPTS="-Denable_kmods=false" AARCH64=1 + compiler: gcc + addons: + apt: + packages: + - *aarch64_packages + - env: DEF_LIB="static" + compiler: gcc + addons: + apt: + packages: + - *extra_packages + - env: DEF_LIB="shared" + compiler: gcc + addons: + apt: + packages: + - *extra_packages + - env: DEF_LIB="static" OPTS="-Denable_kmods=false" + compiler: gcc + addons: + apt: + packages: + - *extra_packages + - env: DEF_LIB="shared" OPTS="-Denable_kmods=false" + compiler: gcc + addons: + apt: + packages: + - *extra_packages + - env: DEF_LIB="static" + compiler: clang + addons: + apt: + packages: + - *extra_packages + - env: DEF_LIB="shared" + compiler: clang + addons: + apt: + packages: + - *extra_packages + - env: DEF_LIB="static" OPTS="-Denable_kmods=false" + compiler: clang + addons: + apt: + packages: + - *extra_packages + - env: DEF_LIB="shared" OPTS="-Denable_kmods=false" + compiler: clang + addons: + apt: + packages: + - *extra_packages + + +script: ./.ci/${TRAVIS_OS_NAME}-build.sh diff --git a/MAINTAINERS b/MAINTAINERS index 452b8eb828..21e1640954 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -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 +M: Michael Santana +F: .travis.yml +F: .ci/ + ABI versioning M: Neil Horman F: doc/guides/rel_notes/deprecation.rst diff --git a/doc/guides/contributing/patches.rst b/doc/guides/contributing/patches.rst index 90927a52dd..d8404e623a 100644 --- a/doc/guides/contributing/patches.rst +++ b/doc/guides/contributing/patches.rst @@ -32,6 +32,10 @@ The mailing list for DPDK development is `dev@dpdk.org `_ in order to submit patches. It is also worth registering for the DPDK `Patchwork `_ +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 `_ for further information.