diff options
author | Mike Holmes <mike.holmes@linaro.org> | 2016-04-03 08:50:36 -0400 |
---|---|---|
committer | Anders Roxell <anders.roxell@linaro.org> | 2016-04-25 14:36:53 +0200 |
commit | 32912edb9886083c4670959e2fffb462f88bd4b3 (patch) | |
tree | a322a4612b9feb090c696603bcec0d60bdc6ba69 | |
parent | 284ae3d623a8621ce2102580e655d36eed2ab2d5 (diff) |
diff-abi.sh: ABI diff tool for ODP
Signed-off-by: Mike Holmes <mike.holmes@linaro.org>
Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
-rwxr-xr-x | diff-abi.sh | 138 | ||||
-rwxr-xr-x | pre-install.sh | 2 |
2 files changed, 140 insertions, 0 deletions
diff --git a/diff-abi.sh b/diff-abi.sh new file mode 100755 index 0000000..ccaa290 --- /dev/null +++ b/diff-abi.sh @@ -0,0 +1,138 @@ +#!/bin/bash + +ROOT_DIR=$(readlink -f $(dirname $0)) + +source ${ROOT_DIR}/helper/generic +export CONFIGURE_FLAGS="" + +export GIT_BRANCH="${GIT_BRANCH:-master}" +export COMPARE_BRANCH="${COMPARE_BRANCH:-api-next}" +export GENERIC_SRCDIR="${GENERIC_SRCDIR:-${SRCDIR}/odp}" +export GENERIC_BUILDDIR="${GENERIC_BUILDDIR:-${BUILDDIR}/odp_diff}" +export COMPARE_BUILDDIR="${COMPARE_BUILDDIR:-${BUILDDIR}/odp_diff_2}" +export CLEANUP="${CLEANUP:-1}" +export COMPARE_URL="${COMPARE_URL:-""}" +PLATFORM=${PLATFORM:-linux-generic} +DETAILED_DIFF=${DETAILED_DIFF:-0} +DETAILED_DIFF_FLAGS="" + +ABI_LOGDIR="${LOGDIR}/diff-abi" +LOGFILE_BASENAME="${LOGFILE_BASENAME:-default}" +LOGFILE="${ABI_LOGDIR}/${LOGFILE_BASENAME}-$(date "+%Y%m%d_%H%M")" +mkdir -p ${ABI_LOGDIR} + +publishing=${ROOT_DIR}/publishing +mkdir -p ${publishing} + +trap cleanup_exit INT TERM EXIT + +cleanup_exit() +{ + if [[ ${CLEANUP} -eq 1 ]]; then + rm -rf ${GENERIC_BUILDDIR} + rm -rf ${COMPARE_BUILDDIR} + rm -rf compat_reports* ABI-*.dump + rm -rf ${ABI_LOGDIR} + ${PLATFORM_SHORT}_cleanup + fi +} + +usage() { + echo -e "$0 makes use of the following environment variables," + echo -e "\tCOMPARE_URL:\t which ODP git repo to use, default: NONE" + echo -e "\tCOMPARE_BRANCH:\t which branch to checkout and test, default: master" + echo -e "\tCLEANUP:\t to save workspace set CLEANUP=0, default: 1" + echo -e "\tDETAILED_DIFF:\t to see a detailed list set DETAILED_DIFF=1, default: 0" + ${PLATFORM_SHORT}_usage +} + +abi_build() { + # $1 BUILDDIR + # $2 generic or compare + pushd ${1} >>${LOGFILE}-${2}-abi_build.log 2>&1 + ./bootstrap >>${LOGFILE}-${2}-abi_build.log 2>&1 + ./configure ${CONFIGURE_FLAGS} --prefix=${1}/install CFLAGS="-g -O0" >>${LOGFILE}-${2}-abi_build.log 2>&1 + make install -j >>${LOGFILE}-${2}-abi_build.log 2>&1 + version_name=$(${1}/scripts/git_hash.sh ${1}) + popd >>${LOGFILE}-${2}-abi_build.log 2>&1 + echo ${version_name} +} + +abi_dumper() { + # $1 BUILDDIR + # $2 URL + # $3 BRANCH + # $4 generic or compare + base_name=${ROOT_DIR}/ABI-$(basename ${2})-${3} + for lib in $(find ${1}/install/lib/ -type l -name 'libodp*so'); do + abi-dumper -sort -lver ${3} ${lib} -o ${base_name}-$(basename ${lib})-${4}.dump >>${LOGFILE}-${4}-abi_dumper.log 2>&1 + + done + echo ${base_name} +} + +prepare_platform + +if [[ "x$1" = "x-h" || "x$1" = "x--help" ]]; then + usage + exit 0 +fi + +display_os + +if [ ${DETAILED_DIFF} -eq 1 ]; then + DETAILED_DIFF_FLAGS="--detailed --brief" +fi + +${PLATFORM_SHORT}_get + +# Default compare branch and repo, if you don't set anything you will default +# to api-next and upstream repo odp (linux-generic) +if [ -z ${COMPARE_URL} ]; then + COMPARE_URL=${GIT_URL} +fi + +#create a name to represent the repos being compared, the branches are noted separately +URL1=$(echo ${GIT_URL} |sed 's|.*\/\/||' |sed 's|/|_|g' |sed 's|.git$||') +URL2=$(echo ${COMPARE_URL} |sed 's|.*\/\/||' |sed 's|/|_|g' |sed 's|.git$||') +URL="${URL1}-${URL2}" +echo "${URL}" + +if [ ! -d "$GENERIC_BUILDDIR" ]; then + setup_builddir ${GENERIC_SRCDIR} ${GIT_URL} ${GIT_BRANCH} ${GENERIC_BUILDDIR} +fi + +if [ ! -d "$COMPARE_BUILDDIR" ]; then + setup_builddir ${GENERIC_SRCDIR} ${COMPARE_URL} ${COMPARE_BRANCH} ${COMPARE_BUILDDIR} +fi + +generic_version_name=$(abi_build ${GENERIC_BUILDDIR} "generic") +generic_base_name=$(abi_dumper ${GENERIC_BUILDDIR} ${GIT_URL} ${GIT_BRANCH} "generic") + + +if [[ -d ${COMPARE_BUILDDIR}/platform/linux-dpdk ]]; then + source ${ROOT_DIR}/helper/platform/dpdk + dpdk_prepare >>${LOGFILE}-${4}-prepare.log 2>&1 + dpdk_get >>${LOGFILE}-${4}-prepare.log 2>&1 + dpdk_build >>${LOGFILE}-${4}-prepare.log 2>&1 + ## CONFIGURE_FLAGS +fi + +compare_version_name=$(abi_build ${COMPARE_BUILDDIR} "compare") +compare_base_name=$(abi_dumper ${COMPARE_BUILDDIR} ${COMPARE_URL} ${COMPARE_BRANCH} "compare") +#compare_base_name=${ROOT_DIR}/ABI-$(basename ${COMPARE_URL})-${COMPARE_BRANCH} +#abi_dumper ${COMPARE_BUILDDIR} ${COMPARE_BRANCH} ${compare_base_name} "compare" + + +publishing_dir="${publishing}/${URL}/${GIT_BRANCH}-${generic_version_name}_to_${COMPARE_BRANCH}-${compare_version_name}" + +rm -rf ${publishing_dir} +mkdir -p ${publishing_dir} + +abi-compliance-checker -l ${URL} -old $(ls ${generic_base_name}-libodphelper*.dump) -new $(ls ${compare_base_name}-libodphelper*.dump) +mv compat_reports/${URL}/${GIT_BRANCH}_to_${COMPARE_BRANCH}/compat_report.html ${publishing_dir}/libodphelper-compat_report.html + +abi-compliance-checker -l ${URL} -old $(ls ${generic_base_name}-libodp-*.dump) -new $(ls ${compare_base_name}-libodp-*.dump) +mv compat_reports/${URL}/${GIT_BRANCH}_to_${COMPARE_BRANCH}/compat_report.html ${publishing_dir}/libodp-compat_report.html + +## vim: set sw=4 sts=4 et foldmethod=syntax : ## diff --git a/pre-install.sh b/pre-install.sh index a7d0dc4..2822dd0 100755 --- a/pre-install.sh +++ b/pre-install.sh @@ -3,6 +3,8 @@ [[ $(grep utopic /etc/lsb-release) ]] && sudo sed -i -e 's/archive.ubuntu.com\|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list sudo apt-get update sudo apt-get install --yes --no-install-recommends \ + abi-compliance-checker \ + abi-dumper \ automake \ autoconf \ asciidoc \ |