On 10/05/2012 08:42 AM, Eric Blake wrote:
On 10/05/2012 07:05 AM, Michal Privoznik wrote:
> Currently, we are checking if libvirt.so contains public symbols.
> However, sometimes we rename an internal symbol and forget to
> change libvirt_private.syms accordingly. Hence, it's safer to check
> for internal symbols as well.
> ---
> src/Makefile.am | 7 ++++++-
> src/check-symfile.pl | 2 +-
> 2 files changed, 7 insertions(+), 2 deletions(-)
>
Phooey. I had only tested in-tree builds when I gave ack.
> check-symfile: libvirt.syms libvirt.la
> $(AM_V_GEN)$(PERL) $(srcdir)/check-symfile.pl libvirt.syms \
> .libs/libvirt.so
This works in VPATH builds, since libvirt.syms is version-controlled...
> +
> +check-private-symfile: libvirt_private.syms libvirt.la
> + $(AM_V_GEN)$(PERL) $(srcdir)/check-symfile.pl libvirt_private.syms \
> + .libs/libvirt.so
...but this fails in a VPATH build, since libvirt_private.syms is
generated into builddir. I'm working on a followup.
I got that backwards. libvirt.syms is generated, and in builddir, and
_includes_ all of libvirt_public.syms AND libvirt_private.syms.
libvirt_private.syms is in srcdir only, so the VPATH build is failing to
find it. The reason that your patch "worked" at detecting the failure is
not because of the new makefile rule, but because of the fix to use
keys(%wantsyms) instead of @wantsyms in the perl script, where
check-symfile, rather than the new check-private-symfile, was detecting
the error.
--
Eric Blake eblake(a)redhat.com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org