building Dovecot in Debian 9

2017-04-25 Thread KT Walrus
I’m trying to build Dovecot 2.2.29.1 in a Docker container today and have the 
following error in ./configure:

checking for shadow.h... yes
checking for pam_start in -lpam... no
checking for auth_userokay... no
checking for mysql_config... mysql_config
checking for mysql_init in -lmysqlclient... no
configure: error: Can't build with MySQL support: libmysqlclient not found

#> find / -name libmysqlclient\*
/usr/share/doc/libmysqlclient20
/usr/share/lintian/overrides/libmysqlclient20
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.20.3.5
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.20
/var/lib/dpkg/info/libmysqlclient20:amd64.triggers
/var/lib/dpkg/info/libmysqlclient20:amd64.shlibs
/var/lib/dpkg/info/libmysqlclient20:amd64.list
/var/lib/dpkg/info/libmysqlclient20:amd64.md5sums

I have installed MySQL 5.7.18 Debian 9 packages (including the 
libmysqlclient-dev package) from the MySQL repo.

I’m not an expert, but is there a bug in the "./configure --prefix=/usr 
--sysconfdir=/etc --with-mysql”?

I’ve been building Dovecot with this Dockerfile using Ubuntu 16.04 for a while 
now without issue. Do I need some extra ./configure option to get it to find 
libmysqlclient.so.20?

Kevin

Re: building Dovecot in Debian 9

2017-04-25 Thread Peter van der Does
You might have to install the package default-libmysqlclient-dev from
the Debian repo.

Peter

On 4/25/17 1:37 PM, KT Walrus wrote:
> I’m trying to build Dovecot 2.2.29.1 in a Docker container today and have the 
> following error in ./configure:
> 
> checking for shadow.h... yes
> checking for pam_start in -lpam... no
> checking for auth_userokay... no
> checking for mysql_config... mysql_config
> checking for mysql_init in -lmysqlclient... no
> configure: error: Can't build with MySQL support: libmysqlclient not found
> 
> #> find / -name libmysqlclient\*
> /usr/share/doc/libmysqlclient20
> /usr/share/lintian/overrides/libmysqlclient20
> /usr/lib/x86_64-linux-gnu/libmysqlclient.so.20.3.5
> /usr/lib/x86_64-linux-gnu/libmysqlclient.so.20
> /var/lib/dpkg/info/libmysqlclient20:amd64.triggers
> /var/lib/dpkg/info/libmysqlclient20:amd64.shlibs
> /var/lib/dpkg/info/libmysqlclient20:amd64.list
> /var/lib/dpkg/info/libmysqlclient20:amd64.md5sums
> 
> I have installed MySQL 5.7.18 Debian 9 packages (including the 
> libmysqlclient-dev package) from the MySQL repo.
> 
> I’m not an expert, but is there a bug in the "./configure --prefix=/usr 
> --sysconfdir=/etc --with-mysql”?
> 
> I’ve been building Dovecot with this Dockerfile using Ubuntu 16.04 for a 
> while now without issue. Do I need some extra ./configure option to get it to 
> find libmysqlclient.so.20?
> 
> Kevin
> 


Re: building Dovecot in Debian 9

2017-04-25 Thread KT Walrus

> On Apr 25, 2017, at 2:16 PM, Peter van der Does  
> wrote:
> 
> You might have to install the package default-libmysqlclient-dev from
> the Debian repo.

Isn’t that the MariaDB package? I don’t really want to mix MariaDB with MySQL 
(even though they are probably still compatible, but diverging as time passes).

Dovecot does build with default-libmysqlclient-dev, but maybe ./configure needs 
to be updated by the Dovecot devs to build against the libmysqlclient package 
that Oracle built for Debian Stretch?

Since I’m only testing today to get ready for Debian 9, I don’t really need 
this fixed now. But, when Debian 9 is released, it would be nice to be able to 
do a production build of Dovecot using the Oracle MySQL packages and Debian 9.

Kevin

> 
> Peter
> 
> On 4/25/17 1:37 PM, KT Walrus wrote:
>> I’m trying to build Dovecot 2.2.29.1 in a Docker container today and have 
>> the following error in ./configure:
>> 
>> checking for shadow.h... yes
>> checking for pam_start in -lpam... no
>> checking for auth_userokay... no
>> checking for mysql_config... mysql_config
>> checking for mysql_init in -lmysqlclient... no
>> configure: error: Can't build with MySQL support: libmysqlclient not found
>> 
>> #> find / -name libmysqlclient\*
>> /usr/share/doc/libmysqlclient20
>> /usr/share/lintian/overrides/libmysqlclient20
>> /usr/lib/x86_64-linux-gnu/libmysqlclient.so.20.3.5
>> /usr/lib/x86_64-linux-gnu/libmysqlclient.so.20
>> /var/lib/dpkg/info/libmysqlclient20:amd64.triggers
>> /var/lib/dpkg/info/libmysqlclient20:amd64.shlibs
>> /var/lib/dpkg/info/libmysqlclient20:amd64.list
>> /var/lib/dpkg/info/libmysqlclient20:amd64.md5sums
>> 
>> I have installed MySQL 5.7.18 Debian 9 packages (including the 
>> libmysqlclient-dev package) from the MySQL repo.
>> 
>> I’m not an expert, but is there a bug in the "./configure --prefix=/usr 
>> --sysconfdir=/etc --with-mysql”?
>> 
>> I’ve been building Dovecot with this Dockerfile using Ubuntu 16.04 for a 
>> while now without issue. Do I need some extra ./configure option to get it 
>> to find libmysqlclient.so.20?
>> 
>> Kevin
>> 
> 


Re: building Dovecot in Debian 9

2017-04-25 Thread Peter van der Does
On 4/25/17 4:06 PM, KT Walrus wrote:
> 
>> On Apr 25, 2017, at 2:16 PM, Peter van der Does  
>> wrote:
>>
>> You might have to install the package default-libmysqlclient-dev from
>> the Debian repo.
> 
> Isn’t that the MariaDB package? I don’t really want to mix MariaDB with MySQL 
> (even though they are probably still compatible, but diverging as time 
> passes).
> 
> Dovecot does build with default-libmysqlclient-dev, but maybe ./configure 
> needs to be updated by the Dovecot devs to build against the libmysqlclient 
> package that Oracle built for Debian Stretch?
> 
> Since I’m only testing today to get ready for Debian 9, I don’t really need 
> this fixed now. But, when Debian 9 is released, it would be nice to be able 
> to do a production build of Dovecot using the Oracle MySQL packages and 
> Debian 9.
> 
> Kevin
> 

The problem with making the Dovecot check for libmysqlclient.so.20 would
be that you have have to make sure older/newer packages are also
supported. The 20 extension is subject to changes.

If I check the Oracle DEB file for Debian 9, it seems they do use the
name libmysqlclient.so, so not sure what to make of it. Double check to
make sure you really installed the file
libmysqlclient-dev_5.7.18-1debian9_amd64.deb from the Oracle repo.

If you still have problems I might setup a Docker file with Debian 9
later tonight to check myself.

Peter

-- 
Peter van der Does

Facebook : https://www.facebook.com/petervanderdoes
Twitter  : https://twitter.com/petervanderdoes
GitHub   : https://github.com/petervanderdoes
About Me : https://about.me/petervanderdoes


Re: building Dovecot in Debian 9

2017-04-25 Thread KT Walrus


Dockerfile.debian9
Description: Binary data


Re: building Dovecot in Debian 9

2017-04-25 Thread KT Walrus

> On Apr 25, 2017, at 5:37 PM, KT Walrus  wrote:
> 
> Also, I spotted a deprecation warning that you might want to look into since 
> it has to do with building against OpenSSL 1.1 (which is the default version 
> for Debian 9).

Oops!!!

Forgot to attach the warning:

libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../.. -I../../src/lib 
-I../../src/lib-test -DMODULE_DIR=\"/usr/lib/dovecot\" -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 -MT iostream-openssl-params.lo -MD -MP -MF 
.deps/iostream-openssl-params.Tpo -c iostream-openssl-params.c  -fPIC -DPIC -o 
.libs/iostream-openssl-params.o
^[[91miostream-openssl-params.c: In function 'generate_dh_parameters':
^[[0m^[[91miostream-openssl-params.c:18:2: warning: 'DH_generate_parameters' is 
deprecated [-Wdeprecated-declarations]
  dh = DH_generate_parameters(bitsize, DH_GENERATOR, NULL, NULL);
  ^~
^[[0m^[[91mIn file included from /usr/include/openssl/dh.h:13:0,
 from /usr/include/openssl/dsa.h:31,
 from /usr/include/openssl/x509.h:32,
 from /usr/include/openssl/ssl.h:50,
 from iostream-openssl.h:6,
 from iostream-openssl-params.c:5:
/usr/include/openssl/dh.h:118:1: note: declared here
 DEPRECATEDIN_0_9_8(DH *DH_generate_parameters(int prime_len, int generator,
 ^


Re: building Dovecot in Debian 9

2017-04-25 Thread Peter van der Does
Kevin,

Regarding the configuration error, your missing a package:
zlib1g-dev

As far as the deprecation warning, it's a bit more complicated. The
source of Dovecot needs to be patched to check for the OpenSSL version
and depending on the version use a different DH_generate_numbers function.

Regards,

Peter

-- 
Peter van der Does

Facebook : https://www.facebook.com/petervanderdoes
Twitter  : https://twitter.com/petervanderdoes
GitHub   : https://github.com/petervanderdoes
About Me : https://about.me/petervanderdoes


Re: building Dovecot in Debian 9

2017-04-25 Thread KT Walrus

> On Apr 25, 2017, at 7:54 PM, Peter van der Does  
> wrote:
> 
> Kevin,
> 
> Regarding the configuration error, your missing a package:
> zlib1g-dev

Thanks! I guess default-libmysqlclient-dev drags in zlib1g-dev for some reason 
that the Oracle package doesn’t. Everything builds with the Oracle 
libmysqlclient now, so I’m good to go. Thanks for your help.

> 
> As far as the deprecation warning, it's a bit more complicated. The
> source of Dovecot needs to be patched to check for the OpenSSL version
> and depending on the version use a different DH_generate_numbers function.

Okay. Should I just ignore this then? I’m not actually going to do much with 
this build until Debian 9 is released and all the packages that I use have had 
time to be production hardened on Debian 9. I’m building against Ubuntu 16.04 
for my actual work. I really want to use Debian 9 in production since it comes 
with OpenSSL 1.1.0e and I want to support the ChaCha20-Poly1305 ciphers for 
NGINX sessions (and maybe Dovecot too).

https://github.com/openssl/openssl/issues/304 


Any other comments on my Dockerfile? Since everything builds, I assume it uses 
sane options to build Dovecot. I couldn’t find any other example Dockerfiles 
for building Dovecot so just made this one up from other Dockerfiles that I use 
to build other images.

I’d really like to see an official Dovecot image in the Docker Hub and base my 
containers off that. I actually use s6-overlay and other extras in my real 
Dovecot image, but it would be nice to see a Dockerfile that is based on Alpine 
Linux too. Alpine seems to be the preferred distro for official Docker Hub 
images, as I understand it.

Kevin