build: fix check-docs.sh for out-of-tree builds

Fixes: 7a59cd2744
This commit is contained in:
Thomas Haller 2018-10-25 10:20:33 +02:00
parent cacd3be1a9
commit 168e8b9b6f
5 changed files with 33 additions and 24 deletions

View File

@ -462,7 +462,7 @@ EXTRA_DIST += \
introspection/meson.build
check-docs:
$(srcdir)/tools/check-docs.sh "$(srcdir)"
$(srcdir)/tools/check-docs.sh "$(srcdir)" "$(builddir)"
check_local += check-docs

View File

@ -257,15 +257,6 @@
<title>Types</title>
<xi:include href="../../libnm-core/nm-dbus-types.xml"/>
</chapter>
<!--
These are obsolete and intentionally omitted from the manual since they can't
appear on the D-Bus API of the present version of NetworkManager.
Keep them here so that "make check" won't think that they were skipped accidentally .
<xi:include href="dbus-org.freedesktop.NetworkManager.Device.WiMax.xml"/>
<xi:include href="dbus-org.freedesktop.NetworkManager.WiMax.Nsp.xml"/>
-->
</part>
<part id="secret-agents">

View File

@ -294,13 +294,6 @@ print ("NetworkManager version " + client.get_version())]]></programlisting></in
<xi:include href="xml/nm-vpn-plugin-old.xml"/>
</chapter>
<!--
These don't contain any useful documentation. Keep them here,
so that tools/check-docs.sh knows that we did omit them intentionally.
<xi:include href="xml/nm-core-enum-types.xml"/>
<xi:include href="xml/nm-enum-types.xml"/>
-->
<chapter id="object-tree">
<title>Object Hierarchy</title>
<xi:include href="xml/tree_index.sgml"/>

View File

@ -14,5 +14,5 @@ endif
test(
'check-docs',
find_program(join_paths(meson.source_root(), 'tools', 'check-docs.sh')),
args: [meson.source_root()]
args: [meson.source_root(), meson.build_root()]
)

View File

@ -2,6 +2,8 @@
set -e
export LANG=C
die() {
printf '%s\n' "$@" >&2
exit 1
@ -15,25 +17,48 @@ word_regex() {
}
same_lines() {
diff <(printf "%s\n" "$1" | sed '/^$/d' | sort) \
<(printf "%s\n%s\n" "$2" "$3" | sed '/^$/d' | sort) >&2
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,^ <xi:include href="dbus-\([^"]*\.xml\)"/>$,\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" "$F2" ; then
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/.*<xi:include href="xml\/\([^"]*\)\.xml".*/\1/p' "$SOURCEDIR"docs/libnm/libnm-docs.xml)"
F1_EXTRA="
nm-core-enum-types
nm-enum-types
"
F2="$(grep -l "$(sed -n 's/^[\t ]*\(.*_get_type\);/\1/p' "$SOURCEDIR"libnm/libnm.ver | word_regex)" \
"$SOURCEDIR"libnm/*.h \
"$SOURCEDIR"libnm-core/*.h \
$(libnm_headers "$SOURCEDIR" "$BUILDDIR") \
| sed 's,.*/\([^/]\+\)\.h$,\1,')"
F2_EXTRA="
annotation-glossary
@ -43,6 +68,6 @@ nm-errors
nm-utils
nm-version
"
if ! same_lines "$F1" "$F2" "$F2_EXTRA"; then
if ! same_lines "$F1"$'\n'"$F1_EXTRA" "$F2"$'\n'"$F2_EXTRA"; then
die "*** Error: libnm classes not included in docs/libnm/libnm-docs.xml ***"
fi