Richard W.M. Jones
2020-Mar-23 12:49 UTC
Re: [Libguestfs] [PATCH nbdkit 3/3] python: Remove extraneous static keyword
On Mon, Mar 23, 2020 at 12:28:12PM +0000, Richard W.M. Jones wrote:> From: Yifan Gu <gyf304@gmail.com> > > The create_nbdkit_module function is intended to be exported, therefore > the static keyword is not needed and prevents building on MSYS2. > --- > plugins/python/python.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/plugins/python/python.c b/plugins/python/python.c > index a1a0438b..adc1aaa5 100644 > --- a/plugins/python/python.c > +++ b/plugins/python/python.c > @@ -224,7 +224,7 @@ static struct PyModuleDef moduledef = { > NULL > }; > > -static PyMODINIT_FUNC > +PyMODINIT_FUNC > create_nbdkit_module (void) > { > PyObject *m; > --I don't believe this is correct. We call PyImport_AppendInittab ("nbdkit", create_nbdkit_module); later on so the function shouldn't need to public. What's the actual error when compiling this? Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com Fedora Windows cross-compiler. Compile Windows programs, test, and build Windows installers. Over 100 libraries supported. http://fedoraproject.org/wiki/MinGW
Frank Gu
2020-Mar-23 13:08 UTC
Re: [Libguestfs] [PATCH nbdkit 3/3] python: Remove extraneous static keyword
The error is the following libtool: link: (cd .libs/nbdkit-perl-plugin.lax/libutils.a && ar x "/c/Users/yifangu/Documents/devel/nbdkit/plugins/perl/../../common/utils/.libs/libutils.a") libtool: link: ar cru .libs/nbdkit-perl-plugin.a .libs/nbdkit_perl_plugin_la-perl.o .libs/nbdkit-perl-plugin.lax/libutils.a/libutils_la-cleanup-nbdkit.o .libs/nbdkit-perl-plugin.lax/libutils.a/libutils_la-cleanup.o .libs/nbdkit-perl-plugin.lax/libutils.a/libutils_la-quote.o .libs/nbdkit-perl-plugin.lax/libutils.a/libutils_la-utils.o libtool: link: ranlib .libs/nbdkit-perl-plugin.a libtool: link: rm -fr .libs/nbdkit-perl-plugin.lax libtool: link: ( cd ".libs" && rm -f "nbdkit-perl-plugin.la" && cp -pR "../ nbdkit-perl-plugin.la" "nbdkit-perl-plugin.la" ) make[3]: Leaving directory '/c/Users/yifangu/Documents/devel/nbdkit/plugins/perl' Making all in python make[3]: Entering directory '/c/Users/yifangu/Documents/devel/nbdkit/plugins/python' /bin/sh ../../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I../.. -I../../include -I../../common/utils -I/usr/include/python3.7m -g -O2 -MT nbdkit_python_plugin_la-python.lo -MD -MP -MF .deps/nbdkit_python_plugin_la-python.Tpo -c -o nbdkit_python_plugin_la-python.lo `test -f 'python.c' || echo './'`python.c libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../.. -I../../include -I../../common/utils -I/usr/include/python3.7m -g -O2 -MT nbdkit_python_plugin_la-python.lo -MD -MP -MF .deps/nbdkit_python_plugin_la-python.Tpo -c python.c -DDLL_EXPORT -DPIC -o .libs/nbdkit_python_plugin_la-python.o python.c:228:1: error: external linkage required for symbol ‘create_nbdkit_module’ because of ‘dllexport’ attribute 228 | create_nbdkit_module (void) | ^~~~~~~~~~~~~~~~~~~~ make[3]: *** [Makefile:638: nbdkit_python_plugin_la-python.lo] Error 1 make[3]: Leaving directory '/c/Users/yifangu/Documents/devel/nbdkit/plugins/python' make[2]: *** [Makefile:505: all-recursive] Error 1 make[2]: Leaving directory '/c/Users/yifangu/Documents/devel/nbdkit/plugins' make[1]: *** [Makefile:696: all-recursive] Error 1 make[1]: Leaving directory '/c/Users/yifangu/Documents/devel/nbdkit' make: *** [Makefile:562: all] Error 2 On Mon, Mar 23, 2020 at 8:49 AM Richard W.M. Jones <rjones@redhat.com> wrote:> On Mon, Mar 23, 2020 at 12:28:12PM +0000, Richard W.M. Jones wrote: > > From: Yifan Gu <gyf304@gmail.com> > > > > The create_nbdkit_module function is intended to be exported, therefore > > the static keyword is not needed and prevents building on MSYS2. > > --- > > plugins/python/python.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/plugins/python/python.c b/plugins/python/python.c > > index a1a0438b..adc1aaa5 100644 > > --- a/plugins/python/python.c > > +++ b/plugins/python/python.c > > @@ -224,7 +224,7 @@ static struct PyModuleDef moduledef = { > > NULL > > }; > > > > -static PyMODINIT_FUNC > > +PyMODINIT_FUNC > > create_nbdkit_module (void) > > { > > PyObject *m; > > -- > > I don't believe this is correct. We call > > PyImport_AppendInittab ("nbdkit", create_nbdkit_module); > > later on so the function shouldn't need to public. What's the actual > error when compiling this? > > Rich. > > -- > Richard Jones, Virtualization Group, Red Hat > http://people.redhat.com/~rjones > Read my programming and virtualization blog: http://rwmj.wordpress.com > Fedora Windows cross-compiler. Compile Windows programs, test, and > build Windows installers. Over 100 libraries supported. > http://fedoraproject.org/wiki/MinGW > >
Richard W.M. Jones
2020-Mar-23 14:19 UTC
Re: [Libguestfs] [PATCH nbdkit 3/3] python: Remove extraneous static keyword
On Mon, Mar 23, 2020 at 09:08:25AM -0400, Frank Gu wrote:> libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../.. -I../../include > -I../../common/utils -I/usr/include/python3.7m -g -O2 -MT > nbdkit_python_plugin_la-python.lo -MD -MP -MF > .deps/nbdkit_python_plugin_la-python.Tpo -c python.c -DDLL_EXPORT -DPIC -o > .libs/nbdkit_python_plugin_la-python.o > python.c:228:1: error: external linkage required for symbol > ‘create_nbdkit_module’ because of ‘dllexport’ attribute > 228 | create_nbdkit_module (void) > | ^~~~~~~~~~~~~~~~~~~~I see. I think this is actually a bug in the Python headers (look at how PyMODINIT_FUNC is defined), but as there's very little chance of fixing those any time soon, I will take your patch 3/3 into nbdkit in a minute. Thanks, Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-df lists disk usage of guests without needing to install any software inside the virtual machine. Supports Linux and Windows. http://people.redhat.com/~rjones/virt-df/
Reasonably Related Threads
- Re: [PATCH nbdkit 3/3] python: Remove extraneous static keyword
- [PATCH nbdkit 3/3] python: Remove extraneous static keyword
- Re: issue when building/making package from git
- [PATCH nbdkit] python: Drop support for Python 2.
- issue when building/making package from git