| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| : ${RSYNC_DEST:=root@www.clusterlabs.org:/var/www/html} |
| |
| |
| |
| tag() { |
| if [[ "$1" =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} ]]; then |
| echo "Pacemaker-$1" |
| else |
| echo "$1" |
| fi |
| } |
| |
| |
| version() { |
| echo "$1" | sed s:.*-:: |
| } |
| |
| |
| abi_config() { |
| PACKAGE="$1" |
| VERSION="$2" |
| BUILD_ROOT="$3" |
| DESC="$4" |
| |
| |
| DESC="$BUILD_ROOT/$VERSION.xml" |
| cat <<EOF > "$DESC" |
| <?xml version="1.0" encoding="utf-8"?> |
| <descriptor> |
| <version> |
| $VERSION |
| </version> |
| <headers> |
| $BUILD_ROOT/root/usr/include/$PACKAGE/crm |
| </headers> |
| <libs> |
| EOF |
| |
| |
| ( cd "$BUILD_ROOT" && ./autogen.sh && ./configure --disable-fatal-warnings ) |
| make -C "$BUILD_ROOT" V=0 DESTDIR="${BUILD_ROOT}/root" install |
| if [ $? -ne 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" |
| exit 1 |
| fi |
| |
| |
| find $BUILD_ROOT/root -name "*.so" -print >> $DESC |
| |
| |
| cat <<EOF >> "$DESC" |
| </libs> |
| </descriptor> |
| EOF |
| } |
| |
| |
| extract_one() { |
| TAG="$1" |
| VERSION="$2" |
| |
| |
| |
| TARBALL="abi_dumps/$PACKAGE/${PACKAGE}_$VERSION.abi.tar.gz" |
| if [ "$VERSION" = HEAD ]; then |
| rm -rf "$TARBALL" |
| elif [ -f "$TARBALL" ]; then |
| return |
| fi |
| |
| echo "Building ABI dump for $*" |
| |
| |
| BUILD_ROOT=".ABI-build" |
| rm -rf "$BUILD_ROOT" |
| ( cd .. ; git archive --prefix "doc/$BUILD_ROOT/" "$TAG" | tar xv ) |
| if [ $? -ne 0 ]; then |
| exit |
| fi |
| |
| |
| BUILD_ROOT="$(pwd)/$BUILD_ROOT" |
| sed -i.sed 's: doc::' "$BUILD_ROOT/Makefile.am" |
| |
| |
| abi_config "$PACKAGE" "$VERSION" "$BUILD_ROOT" "$DESC" |
| abi-compliance-checker -l "$PACKAGE" -dump_abi "$DESC" \ |
| -dump-path "abi_dumps/${PACKAGE}/${PACKAGE}_${VERSION}.abi.tar.gz" |
| |
| |
| rm -rf "$BUILD_ROOT" |
| } |
| |
| extract_all() { |
| for arg in $*; do |
| T=$(tag "$arg") |
| V=$(version "$T") |
| extract_one "$T" "$V" |
| done |
| } |
| |
| UPLOAD=0 |
| if [ "$1" = "-u" ]; then |
| UPLOAD=1; shift |
| fi |
| |
| PACKAGE="$1"; shift |
| |
| extract_all "$@" |
| |
| if [ $# -eq 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 [ $? -ne 0 ]; then |
| exit $? |
| fi |
| |
| COMPAT_REPORT="compat_reports/${PACKAGE}/${V1}_to_${V2}" |
| if [ $UPLOAD -eq 1 ] && [ -d "$COMPAT_REPORT" ]; then |
| rsync -azxlSD --progress "$COMPAT_REPORT" "${RSYNC_DEST}/${PACKAGE}/abi/" |
| fi |
| fi |