Validate .pc file Requires lines

This walks through the .pc.in files and makes sure all of the Requires
lines express sufficient dependency information.

Signed-off-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Uli Schlachter <psychon@znc.in>
This commit is contained in:
Keith Packard 2014-02-12 14:15:45 -08:00 committed by Uli Schlachter
parent 1f6cd9f1fc
commit 32de4c4213
2 changed files with 77 additions and 1 deletions

View File

@ -86,8 +86,14 @@ pkgconfig_DATA += xcb-xvmc.pc
endif endif
AM_TESTS_ENVIRONMENT = \
AM_SRCDIR=${srcdir}
TESTS=check-pc-requires
EXTRA_DIST = \ EXTRA_DIST = \
tools/README \ tools/README \
tools/api_conv.pl \ tools/api_conv.pl \
tools/constants \ tools/constants \
autogen.sh autogen.sh \
$(TESTS)

70
check-pc-requires Executable file
View File

@ -0,0 +1,70 @@
#!/bin/sh
case "$AM_SRCDIR" in
"")
AM_SRCDIR="."
;;
*)
;;
esac
fix=n
status=0
case "$1" in
"-fix")
fix=y
;;
esac
for inc in src/*.h; do
package=xcb-`basename $inc .h`
pcin="$AM_SRCDIR"/$package.pc.in
if [ -f $pcin ]; then
included=`grep '# *include' $inc |
sed -e 's/[^<"]*[<"]//' -e 's/[>"]//' |
grep -v 'xcb.h\|xproto.h'`
requires=`grep '^Requires:' $pcin`
missing=""
for i in $included; do
ibase=`basename $i .h`
r="xcb-$ibase"
rpcin="$AM_SRCDIR"/$r.pc.in
if [ -f $rpcin ]; then
m="$r"
for has in $requires; do
if [ $has = $r ]; then
m=""
fi
done
case "$m" in
"")
;;
*)
case "$missing" in
"")
missing=$m
;;
*)
missing="$missing $m"
;;
esac
;;
esac
fi
done
case "$missing" in
"")
;;
*)
if [ "$fix" = "y" ]; then
echo $package adding dependency on $missing
sed -i '/^Requires:/s/$/ '"$missing"'/' $pcin
else
echo $package missing $missing
status=1
fi
;;
esac
fi
done
exit $status