dovecot: Fix managesieve-login needs libdovecot-login
authorDaniel F. Dickinson <cshored@thecshore.com>
Thu, 16 Aug 2018 07:32:50 +0000 (03:32 -0400)
committerDaniel F. Dickinson <cshored@thecshore.com>
Sun, 19 Aug 2018 18:35:23 +0000 (14:35 -0400)
commitf0fb968346dea9bbe8ff3872b9ade5e3a88f4e18
tree80d894cb8e8ab903a899fa66e2e845b569f072dd
parent53a912201c74c87d088fa29421719e49ec424365
dovecot: Fix managesieve-login needs libdovecot-login

When trying to use managesieve my MUA complained sieve wasn't supported.
On investigation dovecot logs the following could be seen:

    Aug 16 00:28:44 managesieve-login: Fatal: master:
      service(managesieve-login): child 1430 returned error 127
    Aug 16 00:31:32 managesieve-login: Error: Error loading shared
      library libdovecot-login.so.0: No such file or directory
      (needed by /usr/lib/dovecot/managesieve-login)
    Aug 16 00:31:32 managesieve-login: Error: Error loading
      shared library libdovecot.so.0: No such file or directory
      (needed by /usr/lib/dovecot/managesieve-login)
    Aug 16 00:31:32 managesieve-login: Error: Error relocating
      /usr/lib/dovecot/managesieve-login: net_ip2addr: symbol not found

The issue (verified with readelf on non-working build and build with my fix)
is that there is no RPATH information in the pigeonhole binaries (like
managesieve-login).

The dovecot-config that is 'installed' in the staging dir
assumes that plugins will be built on the same host as the installed files.
The 'installed' dovecot-config (partial) looks like:

LIBDOVECOT='-L/usr/lib/dovecot -ldovecot'
LIBDOVECOT_LOGIN='-ldovecot-login -L/home/user/Build/openwrt/openwrt-ath79/staging_dir/target-mips_24kc_musl/usr/lib -lssl -lcrypto'
LIBDOVECOT_SQL=-ldovecot-sql
LIBDOVECOT_COMPRESS=-ldovecot-compression
LIBDOVECOT_LDA=-ldovecot-lda
LIBDOVECOT_STORAGE='-ldovecot-storage '
LIBDOVECOT_DSYNC=-ldovecot-dsync
LIBDOVECOT_LIBFTS=-ldovecot-fts

The solution I used was to modify dovecot-config to add the rpath to
DOVECOT_BINARY_LDFLAGS, and to replace references to host directories
with staging_dir directories.

This results in RPATH being added as it needs to be, and results in a working
version of dovecot+pigeonhole.

NB: I've also touched package version of pigeonhole as this change in dovecot
results in (needed) binary changes for pigeonhole.

Signed-off-by: Daniel F. Dickinson <cshored@thecshore.com>
mail/dovecot/Makefile
mail/dovecot/patches/050-fix-dovecot-config-for-cross-compile.patch [new file with mode: 0644]
mail/pigeonhole/Makefile