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>
59 lines
1.8 KiB
Makefile
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))
|