exit 0
fi
-OPJ_SOURCE_DIR=$(cd $(dirname $0)/../.. && pwd)
+if [ "${OPJ_CI_CC:-}" != "" ]; then
+ export CC=${OPJ_CI_CC}
+ echo "Using ${CC}"
+fi
+
+if [ "${OPJ_CI_CXX:-}" != "" ]; then
+ export CXX=${OPJ_CI_CXX}
+ echo "Using ${CXX}"
+fi
-if [ ! -d ${HOME}/abi-check ]; then
- mkdir ${HOME}/abi-check
+OPJ_UPLOAD_ABI_REPORT=0
+#OPJ_PREVIOUS_VERSION="2.1.1"
+OPJ_LATEST_VERSION="2.1.2"
+if [ "${OPJ_PREVIOUS_VERSION:-}" != "" ]; then
+ OPJ_LIMIT_ABI_BUILDS="-limit 3"
+else
+ OPJ_LIMIT_ABI_BUILDS="-limit 2"
fi
+OPJ_REPO="https://github.com/uclouvain/openjpeg.git"
+OPJ_SSH_REPO=${OPJ_REPO/https:\/\/github.com\//git@github.com:}
+OPJ_UPLOAD_BRANCH="gh-pages"
+OPJ_UPLOAD_DIR="abi-check"
+if [ "${TRAVIS_REPO_SLUG:-}" != "" ]; then
+ if [ "$(echo "${TRAVIS_REPO_SLUG}" | sed 's/\(^.*\)\/.*/\1/')" == "uclouvain" ] && [ "${TRAVIS_PULL_REQUEST:-}" == "false" ] && [ "${TRAVIS_BRANCH:-}" == "master" ]; then
+ # Upload updated report to gh-pages
+ OPJ_UPLOAD_ABI_REPORT=1
+ # Build full report
+ #OPJ_LIMIT_ABI_BUILDS=
+ fi
+fi
+
+OPJ_SOURCE_DIR=$(cd $(dirname $0)/../.. && pwd)
+# INSTALL REQUIRED PACKAGES
+
+mkdir ${HOME}/abi-check
cd ${HOME}/abi-check
+# Let's get tools not available with apt
+mkdir tools
+# Travis doesn't allow package wdiff...
+wget -qO - http://mirrors.kernel.org/gnu/wdiff/wdiff-latest.tar.gz | tar -xz
+cd wdiff-*
+./configure --prefix=${HOME}/abi-check/tools/wdiff &> /dev/null
+make &> /dev/null
+make check &> /dev/null
+make install &> /dev/null
+cd ..
+export PATH=${PWD}/tools/wdiff/bin:$PATH
+wget -qO - https://tools.ietf.org/tools/rfcdiff/rfcdiff-1.42.tgz | tar -xz
+mv rfcdiff-1.42 ${PWD}/tools/rfcdiff
+export PATH=${PWD}/tools/rfcdiff:$PATH
+wget -qO - https://github.com/lvc/installer/archive/0.10.tar.gz | tar -xz
+mkdir ${PWD}/tools/abi-tracker
+make -C installer-0.10 install prefix=${PWD}/tools/abi-tracker target=abi-tracker
+export PATH=${PWD}/tools/abi-tracker/bin:$PATH
+
+# This will print configuration
+# travis-ci doesn't dump cmake version in system info, let's print it
+cmake --version
+
+# RUN THE ABI-CHECK SCRIPTS
-if [ ! -f ${HOME}/abi-check/.restored ]; then
- # Clean all if .restored is not present
- touch not.empty
- rm -rf ./*
- # Let's get tools not available with apt
- mkdir tools
- wget -qO - https://tools.ietf.org/tools/rfcdiff/rfcdiff-1.42.tgz | tar -xz
- mv rfcdiff-1.42 ${PWD}/tools/rfcdiff
- wget -qO - https://github.com/lvc/installer/archive/0.2.tar.gz | tar -xz
- mkdir ${PWD}/tools/abi-tracker
- make -C installer-0.2 install prefix=${PWD}/tools/abi-tracker target=abi-tracker
- mkdir tracker
+mkdir work
+cd work
+
+# Clone the gh-pages branch and work from there
+git clone -b $OPJ_UPLOAD_BRANCH --single-branch $OPJ_REPO .
+cd $OPJ_UPLOAD_DIR
+rm -rf installed/openjpeg/current/*
+
+# Let's create all we need
+grep -v Git ${OPJ_SOURCE_DIR}/tools/abi-tracker/openjpeg.json > ./openjpeg.json
+abi-monitor ${OPJ_LIMIT_ABI_BUILDS} -get openjpeg.json
+if [ "${OPJ_LIMIT_ABI_BUILDS}" != "" ]; then
+ cp -f ${OPJ_SOURCE_DIR}/tools/abi-tracker/openjpeg.json ./openjpeg.json
+else
+ # Old versions of openjpeg don't like -fvisibility=hidden...
+ grep -v Configure ${OPJ_SOURCE_DIR}/tools/abi-tracker/openjpeg.json > ./openjpeg.json
+fi
+cp -rf ${OPJ_SOURCE_DIR} src/openjpeg/current
+abi-monitor -v current -build openjpeg.json
+abi-monitor -v ${OPJ_LATEST_VERSION} -build openjpeg.json
+if [ "${OPJ_PREVIOUS_VERSION:-}" != "" ]; then
+ abi-monitor -v ${OPJ_PREVIOUS_VERSION} -build openjpeg.json
fi
+abi-tracker -build openjpeg.json
+
+EXIT_CODE=0
-cd tracker
+# Check API
+abi-compliance-checker -l openjpeg -old $(find ./abi_dump/openjpeg/$OPJ_LATEST_VERSION -name '*.dump') -new $(find ./abi_dump/openjpeg/current -name '*.dump') -header openjpeg.h -api -s || EXIT_CODE=1
+if [ "${OPJ_PREVIOUS_VERSION:-}" != "" ]; then
+ abi-compliance-checker -l openjpeg -old $(find ./abi_dump/openjpeg/$OPJ_PREVIOUS_VERSION -name '*.dump') -new $(find ./abi_dump/openjpeg/$OPJ_LATEST_VERSION -name '*.dump') -header openjpeg.h -api -s || EXIT_CODE=1
+fi
# Check ABI
-export PATH=${PWD}/../tools/rfcdiff:${PWD}/../tools/abi-tracker/bin:$PATH
-sed -e "s/@OPJ_SOURCE_DIR@/${OPJ_SOURCE_DIR//\//\\/}/g" ${OPJ_SOURCE_DIR}/tools/abi-tracker/openjpeg.json > openjpeg.json
-abi-monitor -get openjpeg.json
-abi-monitor -build openjpeg.json
-abi-tracker -build openjpeg.json
+if [ "${OPJ_LIMIT_ABI_BUILDS}" != "" ]; then
+ abi-compliance-checker -l openjpeg -old $(find ./abi_dump/openjpeg/$OPJ_LATEST_VERSION -name '*.dump') -new $(find ./abi_dump/openjpeg/current -name '*.dump') -header openjpeg.h -abi -s || EXIT_CODE=1
+ if [ "${OPJ_PREVIOUS_VERSION:-}" != "" ]; then
+ abi-compliance-checker -l openjpeg -old $(find ./abi_dump/openjpeg/$OPJ_PREVIOUS_VERSION -name '*.dump') -new $(find ./abi_dump/openjpeg/$OPJ_LATEST_VERSION -name '*.dump') -header openjpeg.h -abi -s || EXIT_CODE=1
+ fi
+else
+ echo "Disable ABI check for now, problems with symbol visibility..."
+fi
+
+rm -rf src/openjpeg/current
+rm -rf build_logs
+
+if [ ${OPJ_UPLOAD_ABI_REPORT} -eq 1 ]; then
+ git config user.name "OpenJPEG Travis CI"
+ git config user.email "info@openjpeg.org"
+
+ git add .
+ git commit -m "Update ABI/API compatibility reports after commit ${TRAVIS_COMMIT:-}"
+
+ # Get the deploy key by using Travis's stored variables to decrypt travis_rsa.enc
+ openssl aes-256-cbc -K $encrypted_99d63218f67a_key -iv $encrypted_99d63218f67a_iv -in ${OPJ_SOURCE_DIR}/tools/travis-ci/travis_rsa.enc -out travis_rsa -d
+ chmod 600 travis_rsa
+ eval `ssh-agent -s`
+ ssh-add travis_rsa
+
+ # Now that we're all set up, we can push.
+ git push $OPJ_SSH_REPO $OPJ_UPLOAD_BRANCH
+fi
+
+rm -rf src installed
+
+exit $EXIT_CODE