On Thu, Apr 23, 2020 at 05:55:14PM +0100, Richard W.M. Jones wrote:
When compiling when an older nbdkit is installed, the build would
fail
because certain symbols such as .get_ready were not defined:
../../src/libguestfs.org/nbdkit/nbdkit.go:541:8: plugin.get_ready undefined (type
_Ctype_struct_nbdkit_plugin has no field or method get_ready)
This happens because we were using the installed <nbdkit-plugin.h>
rather than the local copy.
We don't want to modify the *.go files themselves as they might be
copied into other projects. Instead we can set PKG_CONFIG to point to
a fake pkg-config binary which will return the correct CFLAGS.
Fixes: commit 1ff44288ae1cf95428283e252edd9474c3fe3b55
Thanks: Dan Berrangé, Eric Blake
+# This fake pkg-config program is used to trick cgo so that
+# "#cgo pkg-config nbdkit" lines are processed relative to the local
+# directory and not the installed nbdkit.
+
+case "$1" in
+ --cflags*) echo "-I@abs_top_builddir@/include" ;;
+ *) ;;
+esac
Don't you need something like this too:
--libs) echo "-L@abs_top_builddir@/lib -lnbdkit"
The installed nbdkit.pc would do this I presume. Or are you happy relying
on the allow undefined symbols LDFLAGS
Regards,
Daniel
--
|:
https://berrange.com -o-
https://www.flickr.com/photos/dberrange :|
|:
https://libvirt.org -o-
https://fstop138.berrange.com :|
|:
https://entangle-photo.org -o-
https://www.instagram.com/dberrange :|