blob: 0bd7a16c42e298bbef0ec0d1b3e1b423c860c619 [file] [log] [blame]
#!/bin/bash -e
range="$*"
old="${range%%..*}"
new="${range##*..}"
err()
{
echo "$1"
exit 1
}
build_rpm()
{
local cur=$(git rev-parse --abbrev-ref HEAD 2>/dev/null)
local ref="$1"
local version=""
# prepare ndctl tree
rm -rf results_ndctl
git checkout -b rel_${ref} $ref
./autogen.sh
./configure CFLAGS='-g -O2' --prefix=/usr --sysconfdir=/etc --libdir=/usr/lib64
make clean
make rhel/ndctl.spec
cp rhel/ndctl.spec .
# build and copy RPMs
version="$(./git-version)"
release="f$(basename $(readlink -f /etc/mock/default.cfg) | cut -d- -f2)"
git archive --format=tar --prefix="ndctl-${version}/" HEAD | gzip > ndctl-${version}.tar.gz
fedpkg --release $release --module-name ndctl mockbuild
[ "$?" -eq 0 ] || err "error building $ref"
mkdir -p release/rel_${ref}/
cp results_ndctl/*/*/*.x86_64.rpm release/rel_${ref}/
# restore ndctl branch and cleanup
git checkout $cur
git branch -D rel_${ref}
rm ndctl-${version}.tar.gz
rm ndctl-${version}*.src.rpm
rm -rf results_ndctl
rm -f ndctl.spec
}
do_diff()
{
local pkg="$1"
local old_base="$(find . -regex "./release/rel_${old}/${pkg}-[0-9]+.*" | head -1)"
local new_base="$(find . -regex "./release/rel_${new}/${pkg}-[0-9]+.*" | head -1)"
local old_dev="$(find . -regex "./release/rel_${old}/${pkg}-devel-[0-9]+.*" | head -1)"
local new_dev="$(find . -regex "./release/rel_${new}/${pkg}-devel-[0-9]+.*" | head -1)"
local old_lib="$(find . -regex "./release/rel_${old}/${pkg}-libs-[0-9]+.*" | head -1)"
local new_lib="$(find . -regex "./release/rel_${new}/${pkg}-libs-[0-9]+.*" | head -1)"
[ -n "$pkg" ] || err "specify a package for diff (ndctl, daxctl)"
[ -n "$old_base" ] || err "$pkg: old_base empty, possible build failure"
[ -n "$new_base" ] || err "$pkg: new_base empty, possible build failure"
abipkgdiff --dso-only --no-added-syms --harmless --drop-private-types \
--devel1 "$old_dev" --devel2 "$new_dev" \
"$old_base" "$new_base"
abipkgdiff --no-added-syms --harmless --drop-private-types \
--devel1 "$old_dev" --devel2 "$new_dev" \
"$old_lib" "$new_lib"
}
[ -e "COPYING" ] || err "Run from the top level of an ndctl tree"
if ! command -v "abipkgdiff" >/dev/null; then
err "missing abipkgdiff. Please install libabigail"
fi
rm -rf release/rel*
build_rpm $old > release/buildlog_$old 2>&1
build_rpm $new > release/buildlog_$new 2>&1
do_diff ndctl
do_diff daxctl