On Sat, Feb 07, 2015 at 02:51:53AM +0000, Margaret Lewicka wrote: > On 6 February 2015 at 10:03, Richard W.M. Jones <[email protected]> wrote: > [...] > > Linux doesn't have getprogname. One way around this is to add > > getprogname to the list of functions in configure.ac AC_CHECK_FUNCS. > > That will cause a macro to be defined which you can use like this: > > > > #if HAVE_DECL_PROGRAM_INVOCATION_SHORT_NAME == 1 > > # define program_name program_invocation_short_name > > #elif HAVE_GETPROGNAME > > # define program_name getprogname() > > #else > > # define program_name "libguestfs" > > #endif > > Unfortunately that still doesn't help the issue with gnulib, since it > expects char *program_name to be set on non-Linux platforms.
I believe I understand the problem now. The gnulib 'error' module uses program_name. As you say above on some platforms -- but not Linux / glibc -- it references it as: extern char *program_name; This means when you compile libguestfs on non-glibc (eg. Mac OS X) gnulib requires program_name as an external reference, which we don't provide. Complicating this is that libguestfs defines a macro called program_name, which prevents us from easily defining the required external symbol. Anyway, I have changed libguestfs to use the macro guestfs___program_name which cannot conflict with anything: https://github.com/libguestfs/libguestfs/commit/5cafedaa45d5993c54bf1827426171d9e23d77ae I'm not quite sure who/what gnulib is expecting to define program_name. While it would be possible to add the following to libguestfs somewhere (in a .c file): #if /*compiling for Mac OS X*/ char *program_name = "libguestfs"; #endif that could be a mistake if either Darwin itself or the main program (not a library like libguestfs) is expected to define this symbol. So over to you to experiment! Thanks, Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-top is 'top' for virtual machines. Tiny program with many powerful monitoring features, net stats, disk stats, logging, etc. http://people.redhat.com/~rjones/virt-top _______________________________________________ Libguestfs mailing list [email protected] https://www.redhat.com/mailman/listinfo/libguestfs
