diff options
-rw-r--r-- | .travis.yml | 4 | ||||
-rwxr-xr-x | .travis/linux-build.sh | 28 |
2 files changed, 27 insertions, 5 deletions
diff --git a/.travis.yml b/.travis.yml index 782f72fea..7fe4bfacf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,6 +6,10 @@ compiler: os: - linux +cache: + directories: + - dpdk-dir + addons: apt: packages: diff --git a/.travis/linux-build.sh b/.travis/linux-build.sh index 17428fa6b..98aa12b22 100755 --- a/.travis/linux-build.sh +++ b/.travis/linux-build.sh @@ -65,16 +65,33 @@ function install_kernel() function install_dpdk() { - if [ "${1##refs/*/}" != "${1}" ]; then + local DPDK_VER=$1 + local VERSION_FILE="dpdk-dir/travis-dpdk-cache-version" + + if [ "${DPDK_VER##refs/*/}" != "${DPDK_VER}" ]; then + # Avoid using cache for git tree build. + rm -rf dpdk-dir + DPDK_GIT=${DPDK_GIT:-https://dpdk.org/git/dpdk} - git clone --single-branch $DPDK_GIT dpdk-git -b "${1##refs/*/}" - cd dpdk-git + git clone --single-branch $DPDK_GIT dpdk-dir -b "${DPDK_VER##refs/*/}" + pushd dpdk-dir git log -1 --oneline else + if [ -f "${VERSION_FILE}" ]; then + VER=$(cat ${VERSION_FILE}) + if [ "${VER}" = "${DPDK_VER}" ]; then + EXTRA_OPTS="${EXTRA_OPTS} --with-dpdk=$(pwd)/dpdk-dir/build" + echo "Found cached DPDK ${VER} build in $(pwd)/dpdk-dir" + return + fi + fi + # No cache or version mismatch. + rm -rf dpdk-dir wget https://fast.dpdk.org/rel/dpdk-$1.tar.xz tar xvf dpdk-$1.tar.xz > /dev/null DIR_NAME=$(tar -tf dpdk-$1.tar.xz | head -1 | cut -f1 -d"/") - cd $DIR_NAME + mv ${DIR_NAME} dpdk-dir + pushd dpdk-dir fi make config CC=gcc T=$TARGET @@ -91,7 +108,8 @@ function install_dpdk() make -j4 CC=gcc EXTRA_CFLAGS='-fPIC' EXTRA_OPTS="$EXTRA_OPTS --with-dpdk=$(pwd)/build" echo "Installed DPDK source in $(pwd)" - cd .. + popd + echo "${DPDK_VER}" > ${VERSION_FILE} } function configure_ovs() |