]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
build-sys: add 'make checklibdoc'
authorKarel Zak <kzak@redhat.com>
Wed, 24 Apr 2019 16:02:39 +0000 (18:02 +0200)
committerKarel Zak <kzak@redhat.com>
Wed, 24 Apr 2019 16:02:39 +0000 (18:02 +0200)
Let's to be sure that all libs API symbols are documented.

Signed-off-by: Karel Zak <kzak@redhat.com>
Makefile.am
tools/checklibdocs.sh [new file with mode: 0755]

index 0ae085d9a953ce3f5f0d3e260b435ed081bfd240..adf87804b699ea1b13f320fb3ace5bb35e395e0b 100644 (file)
@@ -187,6 +187,19 @@ checkusage:
        @ $(top_srcdir)/tools/checkusage.sh \
                $(bin_PROGRAMS) $(sbin_PROGRAMS) \
                $(usrbin_exec_PROGRAMS) $(usrsbin_exec_PROGRAMS)
+checklibdoc:
+       @ $(top_srcdir)/tools/checklibdocs.sh \
+               $(top_srcdir)/libmount/src/libmount.sym \
+               $(top_srcdir)/libmount/docs/libmount-sections.txt
+       @ $(top_srcdir)/tools/checklibdocs.sh \
+               $(top_srcdir)/libfdisk/src/libfdisk.sym \
+               $(top_srcdir)/libfdisk/docs/libfdisk-sections.txt
+       @ $(top_srcdir)/tools/checklibdocs.sh \
+               $(top_srcdir)/libsmartcols/src/libsmartcols.sym \
+               $(top_srcdir)/libsmartcols/docs/libsmartcols-sections.txt
+       @ $(top_srcdir)/tools/checklibdocs.sh \
+               $(top_srcdir)/libblkid/src/libblkid.sym \
+               $(top_srcdir)/libblkid/docs/libblkid-sections.txt
 
 DISTCHECK_CONFIGURE_FLAGS = \
        --disable-use-tty-group \
diff --git a/tools/checklibdocs.sh b/tools/checklibdocs.sh
new file mode 100755 (executable)
index 0000000..094d2cb
--- /dev/null
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+FILE_API_SYMBOLS="$1"
+FILE_API_DOCS="$2"
+
+if [ ! -f "$FILE_API_SYMBOLS" ]; then
+       echo "File $FILE_API_SYMBOLS is missing."
+       exit 1
+fi
+
+if [ ! -f "$FILE_API_DOCS" ]; then
+       echo "File $FILE_API_DOCS is missing."
+       exit 1
+fi
+
+fail_ct=0
+api_symbols=$(awk '/^([[:space:]]+)([[:alnum:]_]+);/ { gsub(";",""); print $1; }' "$FILE_API_SYMBOLS" | sort)
+doc_symbols=$(awk '/^([[:space:]])*$/ {next}; !/<.*>/ { print $1 }' "$FILE_API_DOCS" | sort)
+
+echo -n "Checking $FILE_API_SYMBOLS documentation ... "
+
+for sym in $api_symbols; do
+       case "$doc_symbols" in
+       *"$sym"*)
+               #echo -ne "\n '$sym'"
+               ;;
+       *)
+               echo -ne "\n '$sym' undocumented"
+               fail_ct=$(($fail_ct + 1))
+               ;;
+       esac
+done
+
+if [ $fail_ct -ne 0 ]; then
+       echo
+       echo "$fail_ct symbols is missing in ${FILE_API_DOCS}."
+       echo
+       exit 1
+else
+       echo "OK"
+fi
+
+exit 0