autotools: more strict compatibility check (part of BMC #21284)

Some unintended usage of libical slipped into the 1.1.99.5
syncevolution.org binaries, breaking the syncwebdav.so. It wasn't
linked against libical, but depended on some of its methods.

This commit strenghtens the installcheck-local test. First, it checks
for undefined symbols in the blacklisted libraries (detects the
syncwebdav.so case). Second, it also checks for the blacklisted
libraries (might be linked unnecessarily, for example when forgetting
to add -Wl,--as-needed). Third, it checks syncevolution (relevant when
linking everything statically). Finally, it does the check on the
installed files (should have been like that all along).
This commit is contained in:
Patrick Ohly 2011-07-17 15:18:15 +02:00
parent 3189e05830
commit 586cfc7858
1 changed files with 12 additions and 4 deletions

View File

@ -207,13 +207,21 @@ dist-hook:
fi
if ENABLE_EVOLUTION_COMPATIBILITY
# check .so (relevant for modular builds) and main syncevolution binary
# (relevant in that case and for static builds) for dependencies on
# problematic libraries and symbols
#
# ical_strdup is an exception because it is in SyncEvolution.
installcheck-local:
for i in `find . -name *.so`; do \
if ldd $$i | grep -e libecal -e libebook -e libedata -e libical -e libbluetooth; then \
for i in `find $(DESTDIR)/$(libdir)/syncevolution $(DESTDIR)/$(libdir)/libsyncevo* $(DESTDIR)/$(libdir)/libsynthesis* -name *.so` $(DESTDIR)/$(bindir)/syncevolution; do \
if objdump -T -C $$i | grep -v :: | grep '\*UND\*' | sort | grep -v -w ical_strdup | grep -e ical -e " e_"; then \
echo "$$i should not depend on EDS, libical or libbluetooth"; \
objdump -T -C $$i | grep -v :: | grep -e ical -e " e_"; \
exit 1; \
fi \
fi; \
if ldd $$i | grep -e libecal -e libebook -e libedata -e libical -e libbluetooth; then \
echo "$$i should not be linked against EDS, libical or libbluetooth"; \
exit 1; \
fi; \
done
endif