ceph-dovecot / dovecot-ceph-plugin

Dovecot plugin for storing mails in a Ceph cluster
Other
131 stars 23 forks source link

CentOS build fails with dovecot 2.2.10 #144

Open dalgaaf opened 6 years ago

dalgaaf commented 6 years ago

Report from CERN (giacomo.tenaglia@cern.ch):

I am trying to build the plugin on CentOS 7 and I'm getting the attached error. I have the following versions of ceph and dovecot packages installed:

ceph-12.2.5-0.el7.x86_64 ceph-base-12.2.5-0.el7.x86_64 ceph-common-12.2.5-0.el7.x86_64 ceph-mds-12.2.5-0.el7.x86_64 ceph-mgr-12.2.5-0.el7.x86_64 ceph-mon-12.2.5-0.el7.x86_64 ceph-osd-12.2.5-0.el7.x86_64 ceph-selinux-12.2.5-0.el7.x86_64 dovecot-2.2.10-8.el7.x86_64 dovecot-devel-2.2.10-8.el7.x86_64 libcephfs2-12.2.5-0.el7.x86_64 librados2-12.2.5-0.el7.x86_64 librados-devel-12.2.5-0.el7.x86_64 libradosstriper1-12.2.5-0.el7.x86_64 librbd1-12.2.5-0.el7.x86_64 librbd-devel-12.2.5-0.el7.x86_64 python-cephfs-12.2.5-0.el7.x86_64 python-rados-12.2.5-0.el7.x86_64 python-rbd-12.2.5-0.el7.x86_64 rados-objclass-devel-12.2.5-0.el7.x86_64

I've seen in the instructions at https://github.com/ceph-dovecot/dovecot-ceph-plugin that it is mentioned "If you are using CentOS make sure you also have the following package installed: redhat-rpm-config", so I suppose there is a way to have it build on CentOs..

dalgaaf commented 6 years ago

I will take care of it. Configure should enforce to check for dovecot-devel >= 2.2.21.

dalgaaf commented 6 years ago

The actual error was: Making all in dict-rados make[3]: Entering directory '/home/gtenagli/dovecot-ceph-plugin/src/dict-rados' depbase=echo libdict-rados-plugin.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||';\ /bin/sh ../../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I../.. -I/usr/include/dovecot -I../../src/librmb -fno-strict-aliasing -Wall -Wextra -Wundef -Wnested-externs -Wwrite-strings -Wpointer-arith -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls -Wno-unused-parameter -Wno-missing-field-initializers -Wdeclaration-after-statement -Wformat=2 -Wold-style-definition -Wcast-align -Wformat-nonliteral -Wformat-security -Wsign-compare -Wstrict-aliasing -Wshadow -Winline -Wpacked -Wmissing-format-attribute -Wmissing-noreturn -Winit-self -Wmissing-include-dirs -Wunused-but-set-variable -Warray-bounds -Wimplicit-function-declaration -Wreturn-type -Wswitch-enum -Wswitch-default -Wno-declaration-after-statement -Wno-error=unused-parameter -Wno-error=missing-field-initializers -Wno-error=declaration-after-statement -std=gnu99 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fno-strict-aliasing -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -fno-builtin-strftime -Wstrict-aliasing=2 -I../.. -I/usr/include/dovecot -MT libdict-rados-plugin.lo -MD -MP -MF $depbase.Tpo -c -o libdict-rados-plugin.lo libdict-rados-plugin.c &&\ mv -f $depbase.Tpo $depbase.Plo libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../.. -I/usr/include/dovecot -I../../src/librmb -fno-strict-aliasing -Wall -Wextra -Wundef -Wnested-externs -Wwrite-strings -Wpointer-arith -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wredundant-decls -Wno-unused-parameter -Wno-missing-field-initializers -Wdeclaration-after-statement -Wformat=2 -Wold-style-definition -Wcast-align -Wformat-nonliteral -Wformat-security -Wsign-compare -Wstrict-aliasing -Wshadow -Winline -Wpacked -Wmissing-format-attribute -Wmissing-noreturn -Winit-self -Wmissing-include-dirs -Wunused-but-set-variable -Warray-bounds -Wimplicit-function-declaration -Wreturn-type -Wswitch-enum -Wswitch-default -Wno-declaration-after-statement -Wno-error=unused-parameter -Wno-error=missing-field-initializers -Wno-error=declaration-after-statement -std=gnu99 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fno-strict-aliasing -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -fno-builtin-strftime -Wstrict-aliasing=2 -I../.. -I/usr/include/dovecot -MT libdict-rados-plugin.lo -MD -MP -MF .deps/libdict-rados-plugin.Tpo -c libdict-rados-plugin.c -fPIC -DPIC -o .libs/libdict-rados-plugin.o In file included from libdict-rados-plugin.c:15:0: dict-rados.h:15:79: warning: 'struct dict_settings' declared inside parameter list will not be visible outside of this definition or declaration extern int rados_dict_init(struct dict driver, const char uri, const struct dict_settings *set, struct dict dict_r, ^~~~~ dict-rados.h:28:74: error: unknown type name 'dict_lookup_callback_t'; did you mean 'lib_atexit_callback_t'? extern void rados_dict_lookup_async(struct dict _dict, const char key, dict_lookup_callback_t callback, ^~~~~~ lib_atexit_callback_t libdict-rados-plugin.c:20:43: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types] {.init = rados_dict_init, ^~~~~~~ libdict-rados-plugin.c:20:43: note: (near initialization for 'dict_driver_rados.v.init') libdict-rados-plugin.c:39:36: error: 'struct dict_vfuncs' has no member named 'lookup_async'; did you mean 'lookup'? .lookup_async = rados_dict_lookup_async ^~~~ lookup libdict-rados-plugin.c:39:51: error: 'rados_dict_lookup_async' undeclared here (not in a function); did you mean 'rados_dict_lookup'? .lookup_async = rados_dict_lookup_async ^~~~~~~ rados_dict_lookup libdict-rados-plugin.c:39:51: warning: excess elements in struct initializer libdict-rados-plugin.c:39:51: note: (near initialization for 'dict_driver_rados.v') make[3]: [Makefile:578: libdict-rados-plugin.lo] Error 1

f1-outsourcing commented 6 years ago

I rather have this work with the default redhat / centos el7 supported dovecot 2.2.10. There is were it will be deployed mostly (I assume).