summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlya Maximets <i.maximets@samsung.com>2019-08-05 10:58:18 +0300
committerIlya Maximets <i.maximets@samsung.com>2019-08-15 13:58:38 +0300
commit7654a3ed0b38a985da7b1e6e436ffdb0fdb24b5a (patch)
tree54a6b76fcf00e39e5a9a9e6eaf342609fa03b0b3
parent58b34b0016bfd1341ac0820568cf5f42b5ac56b8 (diff)
downloadopenvswitch-7654a3ed0b38a985da7b1e6e436ffdb0fdb24b5a.tar.gz
travis: Cache DPDK build.
This change enables cache for DPDK build directory, so we'll never build same version of DPDK again. This speeds up each DPDK related job by 4-6 minutes effectively saving 30-50 minutes of the total time. Ex. Full TravisCI run on 'trusty' images: Without cache: Ran for 1 hr 9 min 29 sec Total time 4 hrs 55 min 13 sec With populated cache: Ran for 1 hr 2 min 18 sec Total time 4 hrs 20 min 9 sec Saved: Real time: ~7 minutes. Total worker time: ~35 minutes. Signed-off-by: Ilya Maximets <i.maximets@samsung.com> Acked-by: Aaron Conole <aconole@redhat.com>
-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()