Dovecot fails to compile --with-cdb (and attempted fix)
Dovecot version: 2.2.15 Tinycdb: 0.78 I'm attempting to compile dovecot --with-cdb, but keep getting into a problem with cdb: ======================== libtool: link: gcc -std=gnu99 -g -O2 -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -fno-builtin-strftime -Wstrict-aliasing=2 -Wl,--as-needed -o .libs/anvil main.o anvil-connection.o anvil-settings.o connect-limit.o penalty.o -Wl,--export-dynamic ../../src/lib-dovecot/.libs/libdovecot.so -ldl -lrt -Wl,-rpath -Wl,/usr/local/lib/dovecot ../../src/lib-dovecot/.libs/libdovecot.so: undefined reference to `cdb_read' ../../src/lib-dovecot/.libs/libdovecot.so: undefined reference to `cdb_find' ../../src/lib-dovecot/.libs/libdovecot.so: undefined reference to `cdb_free' ../../src/lib-dovecot/.libs/libdovecot.so: undefined reference to `cdb_init' collect2: ld returned 1 exit status make[3]: *** [anvil] Error 1 make[3]: Leaving directory `/home/jf/dovecot-2.2.15/src/anvil' ========================== After some troubleshooting, I've finally managed to get dovecot to compile, albeit with a hack: --- src/lib-dovecot/Makefile.old 2015-03-09 17:36:15.690179802 +0000 +++ src/lib-dovecot/Makefile 2015-03-09 18:01:43.075719700 +0000 @@ -230,7 +230,7 @@ LIBDOVECOT_STORAGE_DEPS = $(top_builddir)/src/lib-storage/ libdovecot-storage.la $(top_builddir)/src/lib-imap-storage/ libimap-storage.la LIBICONV = LIBOBJS = -LIBS = -lrt +LIBS = -lrt -lcdb LIBTOOL = $(SHELL) $(top_builddir)/libtool LIBWRAP_LIBS = LINKED_STORAGE_LDADD = This isn't the best fix, admittedly (I wish I were more familiar with autotools), but I'll say that the configure process isn't right yet for cdb. Can anybody produce a better fix? Would love to learn more. thanks, -jf -- He who settles on the idea of the intelligent man as a static entity only shows himself to be a fool. Mensan / Full-Stack Technical Polymath / System Administrator 12 years over the entire web stack: Performance, Sysadmin, Ruby and Frontend
On Tue, Mar 10, 2015 at 2:15 AM, Jeffrey 'jf' Lim <jfs.world@gmail.com> wrote:
Dovecot version: 2.2.15 Tinycdb: 0.78
I'm attempting to compile dovecot --with-cdb, but keep getting into a problem with cdb: ======================== libtool: link: gcc -std=gnu99 -g -O2 -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -fno-builtin-strftime -Wstrict-aliasing=2 -Wl,--as-needed -o .libs/anvil main.o anvil-connection.o anvil-settings.o connect-limit.o penalty.o -Wl,--export-dynamic ../../src/lib-dovecot/.libs/libdovecot.so -ldl -lrt -Wl,-rpath -Wl,/usr/local/lib/dovecot ../../src/lib-dovecot/.libs/libdovecot.so: undefined reference to `cdb_read' ../../src/lib-dovecot/.libs/libdovecot.so: undefined reference to `cdb_find' ../../src/lib-dovecot/.libs/libdovecot.so: undefined reference to `cdb_free' ../../src/lib-dovecot/.libs/libdovecot.so: undefined reference to `cdb_init' collect2: ld returned 1 exit status make[3]: *** [anvil] Error 1 make[3]: Leaving directory `/home/jf/dovecot-2.2.15/src/anvil' ==========================
After some troubleshooting, I've finally managed to get dovecot to compile, albeit with a hack:
--- src/lib-dovecot/Makefile.old 2015-03-09 17:36:15.690179802 +0000 +++ src/lib-dovecot/Makefile 2015-03-09 18:01:43.075719700 +0000 @@ -230,7 +230,7 @@ LIBDOVECOT_STORAGE_DEPS = $(top_builddir)/src/lib-storage/ libdovecot-storage.la $(top_builddir)/src/lib-imap-storage/ libimap-storage.la LIBICONV = LIBOBJS = -LIBS = -lrt +LIBS = -lrt -lcdb LIBTOOL = $(SHELL) $(top_builddir)/libtool LIBWRAP_LIBS = LINKED_STORAGE_LDADD =
This isn't the best fix, admittedly (I wish I were more familiar with autotools), but I'll say that the configure process isn't right yet for cdb. Can anybody produce a better fix? Would love to learn more.
ok, well I guess that "fixed" the compilation, but as I've just found out, it does *not* link in libcdb (I've got libcdb in /usr/local/lib) properly! Has anybody tried to compile dovecot with cdb support? -jf -- He who settles on the idea of the intelligent man as a static entity only shows himself to be a fool. Mensan / Full-Stack Technical Polymath / System Administrator 12 years over the entire web stack: Performance, Sysadmin, Ruby and Frontend
On Tue, Mar 10, 2015 at 2:22 AM, Jeffrey 'jf' Lim <jfs.world@gmail.com> wrote:
On Tue, Mar 10, 2015 at 2:15 AM, Jeffrey 'jf' Lim <jfs.world@gmail.com> wrote:
Dovecot version: 2.2.15 Tinycdb: 0.78
I'm attempting to compile dovecot --with-cdb, but keep getting into a problem with cdb: ======================== libtool: link: gcc -std=gnu99 -g -O2 -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -fno-builtin-strftime -Wstrict-aliasing=2 -Wl,--as-needed -o .libs/anvil main.o anvil-connection.o anvil-settings.o connect-limit.o penalty.o -Wl,--export-dynamic ../../src/lib-dovecot/.libs/libdovecot.so -ldl -lrt -Wl,-rpath -Wl,/usr/local/lib/dovecot ../../src/lib-dovecot/.libs/libdovecot.so: undefined reference to `cdb_read' ../../src/lib-dovecot/.libs/libdovecot.so: undefined reference to `cdb_find' ../../src/lib-dovecot/.libs/libdovecot.so: undefined reference to `cdb_free' ../../src/lib-dovecot/.libs/libdovecot.so: undefined reference to `cdb_init' collect2: ld returned 1 exit status make[3]: *** [anvil] Error 1 make[3]: Leaving directory `/home/jf/dovecot-2.2.15/src/anvil' ==========================
After some troubleshooting, I've finally managed to get dovecot to compile, albeit with a hack:
--- src/lib-dovecot/Makefile.old 2015-03-09 17:36:15.690179802 +0000 +++ src/lib-dovecot/Makefile 2015-03-09 18:01:43.075719700 +0000 @@ -230,7 +230,7 @@ LIBDOVECOT_STORAGE_DEPS = $(top_builddir)/src/lib-storage/ libdovecot-storage.la $(top_builddir)/src/lib-imap-storage/ libimap-storage.la LIBICONV = LIBOBJS = -LIBS = -lrt +LIBS = -lrt -lcdb LIBTOOL = $(SHELL) $(top_builddir)/libtool LIBWRAP_LIBS = LINKED_STORAGE_LDADD =
This isn't the best fix, admittedly (I wish I were more familiar with autotools), but I'll say that the configure process isn't right yet for cdb. Can anybody produce a better fix? Would love to learn more.
ok, well I guess that "fixed" the compilation, but as I've just found out, it does *not* link in libcdb (I've got libcdb in /usr/local/lib) properly! Has anybody tried to compile dovecot with cdb support?
For anybody following: sorry, my bad. It turns out I hadn't set CPPFLAGS and LDFLAGS during the configure to use /usr/local/{include,lib}. When that's done, this works (in the sense that libdovecot.so is now linked with libcdb!). I'm not so sure that this is the best place to link libcdb in, though, but for an expedient fix, it works.... Would appreciate somebody more familiar with the code weighing in on this one. thanks, -jf -- He who settles on the idea of the intelligent man as a static entity only shows himself to be a fool. Mensan / Full-Stack Technical Polymath / System Administrator 12 years over the entire web stack: Performance, Sysadmin, Ruby and Frontend
On 10 Mar 2015, at 16:24, Jeffrey 'jf' Lim <jfs.world@gmail.com> wrote:
On Tue, Mar 10, 2015 at 2:22 AM, Jeffrey 'jf' Lim <jfs.world@gmail.com> wrote:
On Tue, Mar 10, 2015 at 2:15 AM, Jeffrey 'jf' Lim <jfs.world@gmail.com> wrote:
Dovecot version: 2.2.15 Tinycdb: 0.78
I'm attempting to compile dovecot --with-cdb, but keep getting into a problem with cdb: ======================== libtool: link: gcc -std=gnu99 -g -O2 -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -fno-builtin-strftime -Wstrict-aliasing=2 -Wl,--as-needed -o .libs/anvil main.o anvil-connection.o anvil-settings.o connect-limit.o penalty.o -Wl,--export-dynamic ../../src/lib-dovecot/.libs/libdovecot.so -ldl -lrt -Wl,-rpath -Wl,/usr/local/lib/dovecot ../../src/lib-dovecot/.libs/libdovecot.so: undefined reference to `cdb_read' ../../src/lib-dovecot/.libs/libdovecot.so: undefined reference to `cdb_find' ../../src/lib-dovecot/.libs/libdovecot.so: undefined reference to `cdb_free' ../../src/lib-dovecot/.libs/libdovecot.so: undefined reference to `cdb_init' collect2: ld returned 1 exit status make[3]: *** [anvil] Error 1 make[3]: Leaving directory `/home/jf/dovecot-2.2.15/src/anvil' ==========================
After some troubleshooting, I've finally managed to get dovecot to compile, albeit with a hack:
--- src/lib-dovecot/Makefile.old 2015-03-09 17:36:15.690179802 +0000 +++ src/lib-dovecot/Makefile 2015-03-09 18:01:43.075719700 +0000 @@ -230,7 +230,7 @@ LIBDOVECOT_STORAGE_DEPS = $(top_builddir)/src/lib-storage/ libdovecot-storage.la $(top_builddir)/src/lib-imap-storage/ libimap-storage.la LIBICONV = LIBOBJS = -LIBS = -lrt +LIBS = -lrt -lcdb LIBTOOL = $(SHELL) $(top_builddir)/libtool LIBWRAP_LIBS = LINKED_STORAGE_LDADD =
This isn't the best fix, admittedly (I wish I were more familiar with autotools), but I'll say that the configure process isn't right yet for cdb. Can anybody produce a better fix? Would love to learn more.
ok, well I guess that "fixed" the compilation, but as I've just found out, it does *not* link in libcdb (I've got libcdb in /usr/local/lib) properly! Has anybody tried to compile dovecot with cdb support?
For anybody following: sorry, my bad. It turns out I hadn't set CPPFLAGS and LDFLAGS during the configure to use /usr/local/{include,lib}. When that's done, this works (in the sense that libdovecot.so is now linked with libcdb!).
I'm not so sure that this is the best place to link libcdb in, though, but for an expedient fix, it works.... Would appreciate somebody more familiar with the code weighing in on this one.
Well, it was never supposed to be linked to anything except the dict binary, allowing it to be used via the dict proxy. Changed: http://hg.dovecot.org/dovecot-2.2/rev/16ff063e3588
On Thu, Mar 12, 2015 at 9:43 PM, Timo Sirainen <tss@iki.fi> wrote:
On 10 Mar 2015, at 16:24, Jeffrey 'jf' Lim <jfs.world@gmail.com> wrote:
On Tue, Mar 10, 2015 at 2:22 AM, Jeffrey 'jf' Lim <jfs.world@gmail.com> wrote:
On Tue, Mar 10, 2015 at 2:15 AM, Jeffrey 'jf' Lim <jfs.world@gmail.com> wrote:
Dovecot version: 2.2.15 Tinycdb: 0.78
I'm attempting to compile dovecot --with-cdb, but keep getting into a problem with cdb: ======================== libtool: link: gcc -std=gnu99 -g -O2 -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -fno-builtin-strftime -Wstrict-aliasing=2 -Wl,--as-needed -o .libs/anvil main.o anvil-connection.o
connect-limit.o penalty.o -Wl,--export-dynamic ../../src/lib-dovecot/.libs/libdovecot.so -ldl -lrt -Wl,-rpath -Wl,/usr/local/lib/dovecot ../../src/lib-dovecot/.libs/libdovecot.so: undefined reference to `cdb_read' ../../src/lib-dovecot/.libs/libdovecot.so: undefined reference to `cdb_find' ../../src/lib-dovecot/.libs/libdovecot.so: undefined reference to `cdb_free' ../../src/lib-dovecot/.libs/libdovecot.so: undefined reference to `cdb_init' collect2: ld returned 1 exit status make[3]: *** [anvil] Error 1 make[3]: Leaving directory `/home/jf/dovecot-2.2.15/src/anvil' ==========================
After some troubleshooting, I've finally managed to get dovecot to compile, albeit with a hack:
--- src/lib-dovecot/Makefile.old 2015-03-09 17:36:15.690179802 +0000 +++ src/lib-dovecot/Makefile 2015-03-09 18:01:43.075719700 +0000 @@ -230,7 +230,7 @@ LIBDOVECOT_STORAGE_DEPS = $(top_builddir)/src/lib-storage/ libdovecot-storage.la $(top_builddir)/src/lib-imap-storage/ libimap-storage.la LIBICONV = LIBOBJS = -LIBS = -lrt +LIBS = -lrt -lcdb LIBTOOL = $(SHELL) $(top_builddir)/libtool LIBWRAP_LIBS = LINKED_STORAGE_LDADD =
This isn't the best fix, admittedly (I wish I were more familiar with autotools), but I'll say that the configure process isn't right yet for cdb. Can anybody produce a better fix? Would love to learn more.
ok, well I guess that "fixed" the compilation, but as I've just found out, it does *not* link in libcdb (I've got libcdb in /usr/local/lib)
anvil-settings.o properly!
Has anybody tried to compile dovecot with cdb support?
For anybody following: sorry, my bad. It turns out I hadn't set CPPFLAGS and LDFLAGS during the configure to use /usr/local/{include,lib}. When that's done, this works (in the sense that libdovecot.so is now linked with libcdb!).
I'm not so sure that this is the best place to link libcdb in, though, but for an expedient fix, it works.... Would appreciate somebody more familiar with the code weighing in on this one.
Well, it was never supposed to be linked to anything except the dict binary, allowing it to be used via the dict proxy. Changed: http://hg.dovecot.org/dovecot-2.2/rev/16ff063e3588
Thanks, Timo. Is this the only patch that needs to go in for the current version (2.2.15)? I've applied this to 2.2.15, and configured and compiled as before: CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib ./configure --with-cdb make and I still get the same errors. -jf
On 12 Mar 2015, at 16:49, Jeffrey 'jf' Lim <jfs.world@gmail.com> wrote:
On Thu, Mar 12, 2015 at 9:43 PM, Timo Sirainen <tss@iki.fi> wrote:
Well, it was never supposed to be linked to anything except the dict binary, allowing it to be used via the dict proxy. Changed: http://hg.dovecot.org/dovecot-2.2/rev/16ff063e3588
Thanks, Timo. Is this the only patch that needs to go in for the current version (2.2.15)? I've applied this to 2.2.15, and configured and compiled as before:
CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib ./configure --with-cdb make
and I still get the same errors.
Did you run autogen.sh again before configure?
On Thu, Mar 12, 2015 at 11:17 PM, Timo Sirainen <tss@iki.fi> wrote:
On 12 Mar 2015, at 16:49, Jeffrey 'jf' Lim <jfs.world@gmail.com> wrote:
On Thu, Mar 12, 2015 at 9:43 PM, Timo Sirainen <tss@iki.fi> wrote:
Well, it was never supposed to be linked to anything except the dict binary, allowing it to be used via the dict proxy. Changed: http://hg.dovecot.org/dovecot-2.2/rev/16ff063e3588
Thanks, Timo. Is this the only patch that needs to go in for the current version (2.2.15)? I've applied this to 2.2.15, and configured and
compiled
as before:
CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib ./configure --with-cdb make
and I still get the same errors.
Did you run autogen.sh again before configure?
Sorry, but I dont see an autogen.sh anywhere in the tarball - not for 2.2.15, nor for the newly released 2.2.16.
-jf
participants (2)
-
Jeffrey 'jf' Lim
-
Timo Sirainen