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 introspection/meson.build
check-docs: check-docs:
$(srcdir)/tools/check-docs.sh "$(srcdir)" $(srcdir)/tools/check-docs.sh "$(srcdir)" "$(builddir)"
check_local += check-docs check_local += check-docs

View file

@ -257,15 +257,6 @@
<title>Types</title> <title>Types</title>
<xi:include href="../../libnm-core/nm-dbus-types.xml"/> <xi:include href="../../libnm-core/nm-dbus-types.xml"/>
</chapter> </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>
<part id="secret-agents"> <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"/> <xi:include href="xml/nm-vpn-plugin-old.xml"/>
</chapter> </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"> <chapter id="object-tree">
<title>Object Hierarchy</title> <title>Object Hierarchy</title>
<xi:include href="xml/tree_index.sgml"/> <xi:include href="xml/tree_index.sgml"/>

View file

@ -14,5 +14,5 @@ endif
test( test(
'check-docs', 'check-docs',
find_program(join_paths(meson.source_root(), 'tools', 'check-docs.sh')), 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 set -e
export LANG=C
die() { die() {
printf '%s\n' "$@" >&2 printf '%s\n' "$@" >&2
exit 1 exit 1
@ -15,25 +17,48 @@ word_regex() {
} }
same_lines() { same_lines() {
diff <(printf "%s\n" "$1" | sed '/^$/d' | sort) \ diff <(printf "%s\n" "$1" | sed '/^$/d' | sort) \
<(printf "%s\n%s\n" "$2" "$3" | sed '/^$/d' | sort) >&2 <(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" SOURCEDIR="$1"
BUILDDIR="$2"
if test "$SOURCEDIR" == "$BUILDDIR"; then
BUILDDIR=
fi
[ -n "$SOURCEDIR" ] && SOURCEDIR="$SOURCEDIR/" [ -n "$SOURCEDIR" ] && SOURCEDIR="$SOURCEDIR/"
# Check that the D-Bus API docs contain all known interfaces # 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="$(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)" 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 ***" die "*** Error: D-Bus interfaces not included in docs/api/network-manager-docs.xml ***"
fi fi
# Check that files that define types that are in public libnm API are included in libnm documentation. # 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="$(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)" \ F2="$(grep -l "$(sed -n 's/^[\t ]*\(.*_get_type\);/\1/p' "$SOURCEDIR"libnm/libnm.ver | word_regex)" \
"$SOURCEDIR"libnm/*.h \ $(libnm_headers "$SOURCEDIR" "$BUILDDIR") \
"$SOURCEDIR"libnm-core/*.h \
| sed 's,.*/\([^/]\+\)\.h$,\1,')" | sed 's,.*/\([^/]\+\)\.h$,\1,')"
F2_EXTRA=" F2_EXTRA="
annotation-glossary annotation-glossary
@ -43,6 +68,6 @@ nm-errors
nm-utils nm-utils
nm-version 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 ***" die "*** Error: libnm classes not included in docs/libnm/libnm-docs.xml ***"
fi fi