packages/mail/pigeonhole/Makefile
Daniel F. Dickinson f0fb968346 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>
2018-08-19 14:35:23 -04:00

59 lines
1.8 KiB
Makefile

#
# Copyright (C) 2006-2017 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=dovecot-pigeonhole
PKG_VERSION_PLUGIN:=0.5.2
PKG_VERSION_DOVECOT:=$(shell make --no-print-directory -C ../dovecot/ val.PKG_VERSION V=s)
PKG_VERSION:=$(PKG_VERSION_DOVECOT)-$(PKG_VERSION_PLUGIN)
PKG_RELEASE:=4
DOVECOT_VERSION:=2.3
PKG_SOURCE:=dovecot-$(DOVECOT_VERSION)-pigeonhole-$(PKG_VERSION_PLUGIN).tar.gz
PKG_SOURCE_URL:=https://pigeonhole.dovecot.org/releases/$(DOVECOT_VERSION)
PKG_HASH:=950e8e15c58e539761255e140dd3678dd2477fa432a5f2b804e53821bdc02535
PKG_LICENSE:=LGPL-2.1
PKG_LICENSE_FILES:=COPYING COPYING.LGPL
PKG_BUILD_DIR:=$(BUILD_DIR)/dovecot-$(DOVECOT_VERSION)-pigeonhole-$(PKG_VERSION_PLUGIN)
PKG_INSTALL:=1
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk
define Package/dovecot-pigeonhole
SECTION:=mail
CATEGORY:=Mail
DEPENDS:=+dovecot
EXTRA_DEPENDS:=dovecot (>= $(PKG_VERSION_DOVECOT))
TITLE:=Mail filtering facilities for Dovecot
MAINTAINER:=W. Michael Petullo <mike@flyn.org>
URL:=https://wiki2.dovecot.org/Pigeonhole
endef
define Package/dovecot-pigeonhole/description
Pigeonhole provides mail filtering facilities for Dovecot using the Sieve
(RFC 5228) language.
endef
CONFIGURE_ARGS += \
--with-dovecot=$(STAGING_DIR)/usr/lib/dovecot/
CONFIGURE_VARS += \
LDFLAGS="$(TARGET_LDFLAGS) -L$(STAGING_DIR)/usr/lib/dovecot/" \
CPPFLAGS="$(TARGET_CPPFLAGS) -I$(STAGING_DIR)/usr/include/dovecot/"
define Package/dovecot-pigeonhole/install
$(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib/dovecot/
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/dovecot/* $(1)/usr/lib/dovecot/
find $(1)/usr/lib/dovecot/ -name "*.a" -o -name "*.la" | xargs rm
endef
$(eval $(call BuildPackage,dovecot-pigeonhole))