summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml4
-rwxr-xr-x.travis/linux-build.sh28
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()