Merge pull request #6766 from cshoredaniel/pr-fix-dovecot-pigeonhole-managesieve
dovecot & pigeonhole: Fix managesieve-login needs libdovecot-login
This commit is contained in:
commit
4bbf3e24c8
3 changed files with 65 additions and 4 deletions
|
@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=dovecot
|
PKG_NAME:=dovecot
|
||||||
PKG_VERSION:=2.3.2.1
|
PKG_VERSION:=2.3.2.1
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=2
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=https://www.dovecot.org/releases/2.3
|
PKG_SOURCE_URL:=https://www.dovecot.org/releases/2.3
|
||||||
|
@ -98,8 +98,8 @@ define Package/dovecot-utils
|
||||||
endef
|
endef
|
||||||
|
|
||||||
CONFIGURE_ARGS += \
|
CONFIGURE_ARGS += \
|
||||||
|
--libexecdir=/usr/libexec \
|
||||||
--without-pam \
|
--without-pam \
|
||||||
--with-moduledir=/usr/lib/dovecot/modules \
|
|
||||||
--with-notify=dnotify \
|
--with-notify=dnotify \
|
||||||
--without-lzma \
|
--without-lzma \
|
||||||
--without-lz4 \
|
--without-lz4 \
|
||||||
|
@ -137,10 +137,12 @@ define Package/dovecot/install
|
||||||
$(1)/etc/dovecot \
|
$(1)/etc/dovecot \
|
||||||
$(1)/usr/share/doc/dovecot \
|
$(1)/usr/share/doc/dovecot \
|
||||||
$(1)/usr/lib/dovecot \
|
$(1)/usr/lib/dovecot \
|
||||||
|
$(1)/usr/libexec/dovecot \
|
||||||
$(1)/usr/bin \
|
$(1)/usr/bin \
|
||||||
$(1)/usr/sbin
|
$(1)/usr/sbin
|
||||||
$(CP) $(PKG_INSTALL_DIR)/etc/dovecot/* $(1)/etc/dovecot/
|
$(CP) $(PKG_INSTALL_DIR)/etc/dovecot/* $(1)/etc/dovecot/
|
||||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/dovecot/* $(1)/usr/lib/dovecot/
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/dovecot/* $(1)/usr/lib/dovecot/
|
||||||
|
$(CP) $(PKG_INSTALL_DIR)/usr/libexec/dovecot/* $(1)/usr/libexec/dovecot/
|
||||||
$(CP) $(PKG_INSTALL_DIR)/usr/share/doc/dovecot/example-config $(1)/usr/share/doc/dovecot/
|
$(CP) $(PKG_INSTALL_DIR)/usr/share/doc/dovecot/example-config $(1)/usr/share/doc/dovecot/
|
||||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/doveconf $(1)/usr/bin/
|
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/doveconf $(1)/usr/bin/
|
||||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/* $(1)/usr/sbin/
|
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/* $(1)/usr/sbin/
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
pigeonhole: 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
|
||||||
|
|
||||||
|
This patch modifed dovecot-config that gets installed on the assumption
|
||||||
|
that users of libdovecot will also be cross-compiled (a safe bet).
|
||||||
|
Index: dovecot-2.3.2.1/Makefile.am
|
||||||
|
===================================================================
|
||||||
|
--- dovecot-2.3.2.1.orig/Makefile.am
|
||||||
|
+++ dovecot-2.3.2.1/Makefile.am
|
||||||
|
@@ -73,7 +73,7 @@ install-exec-hook:
|
||||||
|
grep -v '^LIBDOVECOT_.*_INCLUDE' dovecot-config | \
|
||||||
|
grep -v '^LIBDOVECOT.*_DEPS' | sed \
|
||||||
|
-e "s|^\(DOVECOT_INSTALLED\)=.*$$|\1=yes|" \
|
||||||
|
- -e "s|^\(LIBDOVECOT\)=.*$$|\1='-L$(pkglibdir) -ldovecot'|" \
|
||||||
|
+ -e "s|^\(LIBDOVECOT\)=.*$$|\1='-L$(STAGING_DIR)$(pkglibdir) -ldovecot'|" \
|
||||||
|
-e "s|^\(LIBDOVECOT_LOGIN\)=.*$$|\1='-ldovecot-login $(SSL_LIBS)'|" \
|
||||||
|
-e "s|^\(LIBDOVECOT_SQL\)=.*$$|\1=-ldovecot-sql|" \
|
||||||
|
-e "s|^\(LIBDOVECOT_COMPRESS\)=.*$$|\1=-ldovecot-compression|" \
|
||||||
|
@@ -81,7 +81,8 @@ install-exec-hook:
|
||||||
|
-e "s|^\(LIBDOVECOT_LDA\)=.*$$|\1=-ldovecot-lda|" \
|
||||||
|
-e "s|^\(LIBDOVECOT_LIBFTS\)=.*$$|\1=-ldovecot-fts|" \
|
||||||
|
-e "s|^\(LIBDOVECOT_STORAGE\)=.*$$|\1='-ldovecot-storage $(LINKED_STORAGE_LDADD)'|" \
|
||||||
|
- -e "s|^\(LIBDOVECOT_INCLUDE\)=.*$$|\1=-I$(pkgincludedir)|" \
|
||||||
|
+ -e "s|^\(LIBDOVECOT_INCLUDE\)=.*$$|\1=-I$(STAGING_DIR)$(pkgincludedir)|" \
|
||||||
|
+ -e "s|^\(DOVECOT_BINARY_LDFLAGS=\".*\)\"$$|\1 -Wl,-rpath -Wl,$(pkglibdir)\"|" \
|
||||||
|
> $(DESTDIR)$(pkglibdir)/dovecot-config
|
||||||
|
|
||||||
|
uninstall-hook:
|
|
@ -11,7 +11,7 @@ PKG_NAME:=dovecot-pigeonhole
|
||||||
PKG_VERSION_PLUGIN:=0.5.2
|
PKG_VERSION_PLUGIN:=0.5.2
|
||||||
PKG_VERSION_DOVECOT:=$(shell make --no-print-directory -C ../dovecot/ val.PKG_VERSION V=s)
|
PKG_VERSION_DOVECOT:=$(shell make --no-print-directory -C ../dovecot/ val.PKG_VERSION V=s)
|
||||||
PKG_VERSION:=$(PKG_VERSION_DOVECOT)-$(PKG_VERSION_PLUGIN)
|
PKG_VERSION:=$(PKG_VERSION_DOVECOT)-$(PKG_VERSION_PLUGIN)
|
||||||
PKG_RELEASE:=3
|
PKG_RELEASE:=4
|
||||||
|
|
||||||
DOVECOT_VERSION:=2.3
|
DOVECOT_VERSION:=2.3
|
||||||
|
|
||||||
|
@ -50,9 +50,10 @@ CONFIGURE_VARS += \
|
||||||
CPPFLAGS="$(TARGET_CPPFLAGS) -I$(STAGING_DIR)/usr/include/dovecot/"
|
CPPFLAGS="$(TARGET_CPPFLAGS) -I$(STAGING_DIR)/usr/include/dovecot/"
|
||||||
|
|
||||||
define Package/dovecot-pigeonhole/install
|
define Package/dovecot-pigeonhole/install
|
||||||
$(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib/dovecot/
|
$(INSTALL_DIR) $(1)/usr/bin $(1)/usr/lib/dovecot/ $(1)/usr/libexec/dovecot/
|
||||||
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/
|
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/
|
||||||
$(CP) $(PKG_INSTALL_DIR)/usr/lib/dovecot/* $(1)/usr/lib/dovecot/
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/dovecot/* $(1)/usr/lib/dovecot/
|
||||||
|
$(CP) $(PKG_INSTALL_DIR)/usr/libexec/dovecot/* $(1)/usr/libexec/dovecot/
|
||||||
find $(1)/usr/lib/dovecot/ -name "*.a" -o -name "*.la" | xargs rm
|
find $(1)/usr/lib/dovecot/ -name "*.a" -o -name "*.la" | xargs rm
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue