[Libguestfs] [PATCH nbdkit] golang: Compile against the local nbdkit build, not installed.

Daniel P. Berrangé berrange at redhat.com
Thu Apr 23 16:58:25 UTC 2020


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 at abs_top_builddir@/include" ;;
> +    *) ;;
> +esac

Don't you need something like this too:

   --libs)  echo "-L at 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 :|




More information about the Libguestfs mailing list