| #!/bin/bash | |
| # toplevel rsync destination for www targets (without trailing slash) | |
| : ${RSYNC_DEST:=root@www.clusterlabs.org:/var/www/html} | |
| UPLOAD=0 | |
| if [ $1 = "-u" ]; then | |
| UPLOAD=1; shift | |
| fi | |
| PACKAGE=$1; shift | |
| function tag() { | |
| if [[ $1 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} ]]; then | |
| echo Pacemaker-$1 | |
| else | |
| echo $1 | |
| fi | |
| } | |
| function version() { | |
| echo $1 | sed s:.*-:: | |
| } | |
| function extract() { | |
| DUMP=1 | |
| TAG=$1 | |
| VERSION=$2 | |
| if [ $VERSION = HEAD ]; then | |
| rm -rf abi_dumps/$PACKAGE/${PACKAGE}_$VERSION.abi.tar.gz | |
| elif [ -f abi_dumps/$PACKAGE/${PACKAGE}_$VERSION.abi.tar.gz ]; then | |
| return | |
| fi | |
| echo "Building ABI dump for $*" | |
| BUILD_ROOT=.ABI-build | |
| rm -rf $BUILD_ROOT | |
| git archive --prefix $BUILD_ROOT/ $TAG | tar xv | |
| BUILD_ROOT=`pwd`/$BUILD_ROOT | |
| DESC=$BUILD_ROOT/$VERSION.xml | |
| sed -i.sed 's: doc::' $BUILD_ROOT/Makefile.am | |
| sed -i.sed 's: debian::' $BUILD_ROOT/Makefile.am | |
| cat<<EOF>$DESC | |
| <?xml version="1.0" encoding="utf-8"?> | |
| <descriptor> | |
| <version> | |
| $VERSION | |
| </version> | |
| <headers> | |
| $BUILD_ROOT/root/usr/include/pacemaker/crm | |
| </headers> | |
| <libs> | |
| EOF | |
| ( cd $BUILD_ROOT && ./autogen.sh ) | |
| ( cd $BUILD_ROOT && ./configure --disable-fatal-warnings ) | |
| make -C $BUILD_ROOT V=0 DESTDIR=${BUILD_ROOT}/root install | |
| if [ $? != 0 ]; then | |
| echo "Build for $TAG failed. Repair, populate <libs/> and re-run: " | |
| echo " abi-compliance-checker -l $PACKAGE -dump_abi $DESC" | |
| echo "" | |
| echo "To find libraries after building:" | |
| echo " find $BUILD_ROOT/root -name "*.so" -print" | |
| else | |
| find $BUILD_ROOT/root -name "*.so" -print >> $DESC | |
| fi | |
| cat<<EOF>>$DESC | |
| </libs> | |
| </descriptor> | |
| EOF | |
| if [ $DUMP = 1 ]; then | |
| abi-compliance-checker -l $PACKAGE -dump_abi $DESC | |
| rm -rf $BUILD_ROOT | |
| else | |
| exit 1 | |
| fi | |
| } | |
| for arg in $*; do | |
| T=`tag $arg` | |
| V=`version $T` | |
| extract $T $V | |
| done | |
| if [ $# = 2 ]; then | |
| V1=`version $1` | |
| V2=`version $2` | |
| abi-compliance-checker -l ${PACKAGE} \ | |
| -d1 abi_dumps/${PACKAGE}/${PACKAGE}_${V1}.abi.tar.gz \ | |
| -d2 abi_dumps/${PACKAGE}/${PACKAGE}_${V2}.abi.tar.gz | |
| if [ $UPLOAD = 1 -a -d compat_reports/pacemaker/${V1}_to_${V2} ]; then | |
| rsync -azxlSD --progress compat_reports/pacemaker/${V1}_to_${V2} ${RSYNC_DEST}/${PACKAGE}/abi/ | |
| fi | |
| fi |