#!/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/src/libnm-client-public"/*.h "$1/src/libnm-core-public"/*.h | \ if [ -n "$2" ]; then grep -v -F "$1/src/libnm-core-public/nm-core-enum-types.h" | \ grep -v -F "$1/src/libnm-client-public/nm-enum-types.h" else cat fi if [ -n "$2" ]; then ls -1 "$2/src/libnm-client-public"/*.h "$2/src/libnm-core-public"/*.h fi ) | sort | uniq } SOURCEDIR="$1" BUILDDIR="$2" if test "$SOURCEDIR" == "$BUILDDIR"; then BUILDDIR= fi [ -z "$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/.*