From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id DF71F1B40F for ; Wed, 6 Feb 2019 21:19:01 +0100 (CET) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A77FFC01DE0D; Wed, 6 Feb 2019 20:19:00 +0000 (UTC) Received: from dhcp-25.97.bos.redhat.com (unknown [10.18.25.61]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 8DAEE1001F54; Wed, 6 Feb 2019 20:18:59 +0000 (UTC) From: Aaron Conole To: Honnappa Nagarahalli Cc: Michael Santana , "dev\@dpdk.org" , Bruce Richardson , "thomas\@monjalon.net" , nd References: <20190130221602.13866-1-msantana@redhat.com> <20190201164814.11185-1-msantana@redhat.com> <20190201164814.11185-3-msantana@redhat.com> Date: Wed, 06 Feb 2019 15:18:58 -0500 In-Reply-To: (Honnappa Nagarahalli's message of "Wed, 6 Feb 2019 19:17:37 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Wed, 06 Feb 2019 20:19:01 +0000 (UTC) Subject: Re: [dpdk-dev] [PATCH v3 2/2] ci: Introduce travis builds for github repositories X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 Feb 2019 20:19:02 -0000 Honnappa Nagarahalli writes: > Hi Michael/Aaron, > Thanks for adding the Arm build. I have few comments inline. > >> -----Original Message----- >> From: Michael Santana >> Sent: Friday, February 1, 2019 10:48 AM >> To: dev@dpdk.org >> Cc: Aaron Conole ; Bruce Richardson >> ; Honnappa Nagarahalli >> ; thomas@monjalon.net >> Subject: [PATCH v3 2/2] ci: Introduce travis builds for github repositories >> >> GitHub is a service used by developers to store repositories. GitHub provides >> service integrations that allow 3rd party services to access developer >> repositories and perform actions. One of these services is Travis-CI, a simple >> continuous integration platform. >> >> This is a simple initial implementation of a travis build for the DPDK project. It >> doesn't require any changes from individual developers to enable, but will >> allow those developers who opt-in to GitHub and the travis service to get >> automatic builds for every push they make. >> >> Additionally, the travis service will send an email to the test-report list >> informing anyone interested in the automated build (including a result). >> >> Signed-off-by: Aaron Conole >> Signed-off-by: Michael Santana >> --- >> v3: >> - Renamed ambiguous variable names and comments, including the variable >> KERNEL to DISABLE_KERNEL_MODULES and comment 'source for python' to >> 'Repo for python' >> - Removed duplicate file meson_cross_aarch64_gcc.txt. Used >> arm64_armv8_linuxapp_gcc file instead >> >> .ci/linux-build.sh | 88 +++++++++++++++ >> .ci/linux-setup.sh | 31 ++++++ >> .travis.yml | 159 ++++++++++++++++++++++++++++ >> MAINTAINERS | 7 ++ >> doc/guides/contributing/patches.rst | 4 + >> 5 files changed, 289 insertions(+) >> create mode 100755 .ci/linux-build.sh >> create mode 100755 .ci/linux-setup.sh >> create mode 100644 .travis.yml >> >> diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh new file mode 100755 index >> 000000000..7aa90822c >> --- /dev/null >> +++ b/.ci/linux-build.sh >> @@ -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 [ "${ARM64}" == "1" ]; then > Would be good to change the variable names from ARM64 to 'AARCH64...' Since we need to spin a change anyway, we'll change it. >> + # 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 [ "${ARM64}" == "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 [ "${ARM64}" == "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 >> diff --git a/.ci/linux-setup.sh b/.ci/linux-setup.sh new file mode 100755 index >> 000000000..7d6478ef9 >> --- /dev/null >> +++ b/.ci/linux-setup.sh >> @@ -0,0 +1,31 @@ >> +#!/bin/bash >> + >> +python3.5 -m pip install --upgrade meson --user >> + >> +echo "ARM64 is [ ${ARM64} ]" >> + >> +if [ "${ARM64}" == "1" ]; then >> + # need to build & install libnuma >> + # This will only be minimal support for now. >> + >> ARM64_TOOL_URL='https://releases.linaro.org/components/toolchain/binari >> es/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 >> diff --git a/.travis.yml b/.travis.yml >> new file mode 100644 >> index 000000000..afd63aa33 >> --- /dev/null >> +++ b/.travis.yml >> @@ -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 > My understanding is we need to list 'ARM64=1' and 'ARM64=1 NINJABUILD=1' here. We don't. We have a build explicitly in the matrix section below to cover it. >> + >> +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: ARM64=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: ARM64=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 >> diff --git a/MAINTAINERS b/MAINTAINERS >> index 835d8a201..eed6f69d3 100644 >> --- a/MAINTAINERS >> +++ b/MAINTAINERS >> @@ -119,6 +119,13 @@ 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/ >> +F: meson_cross_aarch64_gcc.txt > Not required Oops. Okay we will fix it. >> + >> ABI versioning >> M: Neil Horman >> F: lib/librte_compat/ >> diff --git a/doc/guides/contributing/patches.rst >> b/doc/guides/contributing/patches.rst >> index a64bb0368..49e930cbb 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 > for the mailing list `_ 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. >> >> -- >> 2.20.1