#!/bin/bash set -e export LANG=C die() { printf '%s\n' "$@" >&2 exit 1 } word_regex() { tr '\n|<>\\' ' ' \ | sed -e 's, *$,\\>,' \ -e 's,^ *,\\<,' \ -e 's, \+,\\>\\|\\<,g' } same_lines() { diff <(printf "%s\n" "$1" | sed '/^$/d' | sort) \ <(printf "%s\n" "$2" | sed '/^$/d' | sort) >&2 } libnm_headers() { ( ls -1 "$1"libnm/*.h "$1"libnm-core/*.h if [ -n "$2" ]; then ls -1 "$2"/libnm/*.h "$2"/libnm-core/*.h fi ) | sort | uniq } SOURCEDIR="$1" BUILDDIR="$2" if test "$SOURCEDIR" == "$BUILDDIR"; then BUILDDIR= fi [ -n "$SOURCEDIR" ] && SOURCEDIR="$SOURCEDIR/" # Check that the D-Bus API docs contain all known interfaces F1="$(sed -n 's,^ $,\1,p' "$SOURCEDIR"docs/api/network-manager-docs.xml)" F1_EXTRA=" org.freedesktop.NetworkManager.Device.WiMax.xml org.freedesktop.NetworkManager.WiMax.Nsp.xml " F2="$(cd "$SOURCEDIR"introspection; ls -1 *.xml)" if ! same_lines "$F1"$'\n'"$F1_EXTRA" "$F2" ; then die "*** Error: D-Bus interfaces not included in docs/api/network-manager-docs.xml ***" fi # Check that files that define types that are in public libnm API are included in libnm documentation. F1="$(sed -n 's/.*