[Dovecot] Using -module flag on sieve libs
Some modern distros (Mageia, Mandriva) use -no-undefined as a default linker flag for building software. However, undefined symbols are OK if the binary being linked is a plugin. To detect plugins, build system looks for presence of "-module" libtool flag in makefiles.
There are two libraries in Pigeonhole that couldn't be linked with -no-undefined:
src/lib-sieve/plugins/mailbox/libsieve_ext_mailbox.la src/lib-sieve/libdovecot-sieve.la
These modules do contain undefined symbols, but they are not linked against library that provides them. It would be good if corresponding makefiles contained "-module" flags, so that build system could selectively turn off that -no-undefined linker flag. Please see proposed patch (attached).
Thanks, Dimitri Mageia Linux packager
On 12/23/2012 2:36 AM, Dimitri wrote:
Some modern distros (Mageia, Mandriva) use -no-undefined as a default linker flag for building software. However, undefined symbols are OK if the binary being linked is a plugin. To detect plugins, build system looks for presence of "-module" libtool flag in makefiles.
There are two libraries in Pigeonhole that couldn't be linked with -no-undefined:
src/lib-sieve/plugins/mailbox/libsieve_ext_mailbox.la src/lib-sieve/libdovecot-sieve.la
These modules do contain undefined symbols, but they are not linked against library that provides them. It would be good if corresponding makefiles contained "-module" flags, so that build system could selectively turn off that -no-undefined linker flag. Please see proposed patch (attached).
These are not plugins or modules. So this would likely be a bug. What version is this? Could you show me the errors? Any idea which libraries are missing?
Regards,
Stephan.
These are not plugins or modules. So this would likely be a bug. What version is this? Could you show me the errors? Any idea which libraries are missing?
Dovecot 2.1.12 + Pigeonhole 0.3.3, Mageia Linux (Cauldron), GCC 4.7.2.
Here is an excerpt from the build log (with Mageia's default flags, including -no-undefined): http://pastebin.com/bYqiYRKJ
The library that is missing is <dovecot-dir>/src/lib-storage/libdovecot-storage.la.
Dimitri
Op 12/23/2012 6:18 PM, Dimitri schreef:
These are not plugins or modules. So this would likely be a bug. What version is this? Could you show me the errors? Any idea which libraries are missing? Dovecot 2.1.12 + Pigeonhole 0.3.3, Mageia Linux (Cauldron), GCC 4.7.2.
Here is an excerpt from the build log (with Mageia's default flags, including -no-undefined): http://pastebin.com/bYqiYRKJ
The library that is missing is <dovecot-dir>/src/lib-storage/libdovecot-storage.la.
How does it work with this patch? diff -r fc0bf6b1cb6b src/lib-sieve/Makefile.am --- a/src/lib-sieve/Makefile.am Sat Dec 22 22:27:34 2012 +0100 +++ b/src/lib-sieve/Makefile.am Wed Dec 26 00:55:47 2012 +0100 @@ -70,8 +70,8 @@ $(extdir)/vnd.dovecot/duplicate/libsieve_ext_duplicate.la \ $(unfinished_plugins) -libdovecot_sieve_la_DEPENDENCIES = $(plugins) $(LIBDOVECOT_LDA_DEPS) -libdovecot_sieve_la_LIBADD = $(plugins) $(LIBDOVECOT) $(LIBDOVECOT_LDA) +libdovecot_sieve_la_DEPENDENCIES = $(plugins) $(LIBDOVECOT_LDA_DEPS) $(LIBDOVECOT_STORAGE_DEPS) $(LIBDOVECOT_DEPS) +libdovecot_sieve_la_LIBADD = $(plugins) $(LIBDOVECOT_LDA) $(LIBDOVECOT_STORAGE) $(LIBDOVECOT) libdovecot_sieve_la_SOURCES = \ rfc2822.c \
participants (2)
-
Dimitri
-
Stephan Bosch