Hello Dovecot users and developers!
Up to Dovecot 2.3.14.1 manual compilation of Dovecot sources was fine, I have an old 32-bit Linux server with GCC 4.4.7 where I compile almost all things manually. Works fine, never had problems with GCC versions.
env LDFLAGS="-Wl,--no-as-needed" ./configure --prefix=/usr/local/dovecot --with-ssl=openssl --with-ssldir=/usr/local/dovecot/etc/dovecot/certs make
Unfortunately, Dovecot 2.3.15 fails to compile at test-smtp-params.c (works with a recent GCC 11.1.1 on my desktop, but servers usually come with older stuff). I know a little bit of programming but that's above my head what goes wrong here and how I could fix it to continue (so I don't know if that's the only problem or if there will be more).
See below (at the end) for the exact error message.
I assume this compilation issue was not an intentional change/requirement between 2.3.14(.1) and 2.3.15, it just happened.
I don't think that the problem is in "test-smtp-params.c" itself but some declarations somewhere else are missing, but I'm no expert here. There were too many changes in the src/lib-smtp source tree to understand what may have caused this (or maybe it's even somewhere else).
Any help is highly appreciated. I'd be happy to help and try out any ideas or patches. I'd like to see that Dovecot can be compiled on as many platforms as possible, as long as there are no fundamental requirements making this impossible.
Thanks a lot in advance and keep up the good work, Andreas
[last lines of compilation process when error happens]
gcc -DHAVE_CONFIG_H -I. -I../.. -I../../src/lib -I../../src/lib-test -I../../src/lib-settings -I../../src/lib-master -I../../src/lib-sasl -I../../src/lib-ssl-iostream -I../../src/lib-dns -I../../src/lib-program-client -I../../src/lib-mail -DTEST_BIN_DIR=\"/usr/local/src/dovecot-2.3.15/src/lib-smtp/test-bin\" -std=gnu99 -g -O2 -fstack-protector -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -mfunction-return=keep -mindirect-branch=keep -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -fno-builtin-strftime -Wstrict-aliasing=2 -I/usr/local/OpenSSL-1.1.1/include -MT test-smtp-params.o -MD -MP -MF .deps/test-smtp-params.Tpo -c -o test-smtp-params.o test-smtp-params.c
test-smtp-params.c:29: error: unknown field ‘data’ specified in initializer
test-smtp-params.c:29: warning: missing braces around initializer
test-smtp-params.c:29: warning: (near initialization for ‘test_params_buffer1.<anonymous>’)
test-smtp-params.c:30: warning: missing initializer
test-smtp-params.c:30: warning: (near initialization for ‘test_params_buffer1.<anonymous>.<anonymous>.used’)
test-smtp-params.c:30: error: unknown field ‘used’ specified in initializer
test-smtp-params.c:31: warning: excess elements in struct initializer
test-smtp-params.c:31: warning: (near initialization for ‘test_params_buffer1’)
test-smtp-params.c:33: error: unknown field ‘data’ specified in initializer
test-smtp-params.c:33: warning: missing braces around initializer
test-smtp-params.c:33: warning: (near initialization for ‘test_params_buffer2.<anonymous>’)
test-smtp-params.c:34: warning: missing initializer
test-smtp-params.c:34: warning: (near initialization for ‘test_params_buffer2.<anonymous>.<anonymous>.used’)
test-smtp-params.c:34: error: unknown field ‘used’ specified in initializer
test-smtp-params.c:35: warning: excess elements in struct initializer
test-smtp-params.c:35: warning: (near initialization for ‘test_params_buffer2’)
make[3]: *** [test-smtp-params.o] Error 1
make[3]: Leaving directory /usr/local/src/dovecot-2.3.15/src/lib-smtp' make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory
/usr/local/src/dovecot-2.3.15/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/dovecot-2.3.15'
make: *** [all] Error 2