Hi,
Update:
1) Centos 5 and 6, compiled GCC 4.8.5 and successfully built Dovecot v2.3.15.
2) RedHat based customized build, first compiled GCC 4.7.4 and with it compiled
GCC 4.8.5, then added --disable-hardening to options, got new error:
In file included from /usr/include/sys/wait.h:79:0,
from db-checkpassword.c:21:
db-checkpassword.c: In function 'sigchld_handler':
db-checkpassword.c:426:6: error: assignment of read-only member '__in'
if (WIFSIGNALED(status->status)) {
^
...
As Docvecot does not support INC_PATH= and ignores --includedir= option, I
replaced the /usr/include/sys/wait.h file from the newer glibc-headers package
and successfully built Dovecot v2.3.15.
Old text:
Compiled GCC 4.7.4 with options:
--enable-languages=c,c++ --disable-multilib
Compiled Dovecot v2.3.15 wih options:
export CC=/usr/local/gcc-4.7.4/bin/gcc
export CXX=/usr/local/gcc-4.7.4/bin/g++
./configure --prefix=/usr --with-ssl=openssl --with-ssldir=/etc/ssl
--sysconfdir=/etc --with-pam --without-bsdauth --without-sql --without-nss
--without-ldap --without-pgsql --without-mysql --without-sqlite
--with-rundir=/var/run/dovecot --without-cassandra --without-lucene
--without-solr --without-textcat --without-libcap --without-stemmer
--disable-rpath --disable-dependency-tracking --disable-silent-rules
--without-gssapi --without-cdb
Got error:
configure: error: fd passing is required for Dovecot to work
Added --disable-hardening and got further, but then with GCC 4.7.4, now I'm
getting same old error, which I first got 4 years ago with version v2.2.30 and
which Timo fixed - https://dovecot.org/list/dovecot/2017-June/108418.html
db-checkpassword.c: In function 'sigchld_handler':
db-checkpassword.c:426:6: error: assignment of read-only member '__in'
db-checkpassword.c:427:3: error: assignment of read-only member '__in'
db-checkpassword.c:431:13: error: assignment of read-only member '__in'
db-checkpassword.c:432:26: error: assignment of read-only member '__in'
make[3]: *** [db-checkpassword.lo] Error 1
Due GCC segmentation faults during compilation, so far I'm unable to compile
any newer GCC, but got also same result with GCC 4.6.4.
Please advise?
Mart
Timo Sirainen wrote:
> On 29. Jul 2021, at 7.21, Mart Pirita <[email protected]
> <mailto:[email protected]>> wrote:
>>
>> Hello.
>>
>> So far I have successfully built Dovecot until v2.3.14 on Centos 4-6 (yes I
>> know, they are old, but as they are remote servers, distros can't upgraded),
>> and sometimes I have also met compilation issues, but after highlighting
>> them, Timo have fixed the code.
>>
>> Found from similar thread (Dovecot 2.3.15 compilation fails
>> https://dovecot.org/list/dovecot/2021-June/122412.html ) that new GCC is
>> needed. However I can't find such requirement in v2.3.15 change log.
>
> Looks like we forgot to mention that.
>
>> As seems that I'm not the only one with compilation issues, then @Timo - can
>> You please fix the code so that also v2.3.15 can compiled on older distros?
>
> Sorry, it's no longer possible. The buffer.h API had to be changed to fix
> some real bugs:
> https://github.com/dovecot/core/commit/1d9b4e14008b15b7a34b5c633b09b9670e866256
>
> The original way I changed it would have made the code more complex and it
> was also a huge change. The final method was much simpler, but it requires
> now compiler support for anonymous unions and anonymous structs, i.e. C11.
> Although some older GCCs should also support it, but I guess you've a too old
> version.
>