From patchwork Tue Aug 18 12:00:30 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexey Abramov X-Patchwork-Id: 23669 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 4DCE127BBE5; Tue, 18 Aug 2020 13:02:02 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.9 required=5.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTP id AC94F27BBE6 for ; Tue, 18 Aug 2020 13:02:01 +0100 (BST) Received: from localhost ([::1]:52114 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1k80JV-0008R5-94 for patchwork@mira.cbaines.net; Tue, 18 Aug 2020 08:02:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53738) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1k80Ic-0007jC-0G for guix-patches@gnu.org; Tue, 18 Aug 2020 08:01:06 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:51087) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1k80Ib-0007Gt-Hf for guix-patches@gnu.org; Tue, 18 Aug 2020 08:01:05 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1k80Ib-0006Hp-GQ for guix-patches@gnu.org; Tue, 18 Aug 2020 08:01:05 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#42899] [PATCH v2 02/10] gnu: dovecot: Patch and provide a static path for module directory. Resent-From: Alexey Abramov Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Tue, 18 Aug 2020 12:01:05 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 42899 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 42899@debbugs.gnu.org Received: via spool by 42899-submit@debbugs.gnu.org id=B42899.159775205724085 (code B ref 42899); Tue, 18 Aug 2020 12:01:05 +0000 Received: (at 42899) by debbugs.gnu.org; 18 Aug 2020 12:00:57 +0000 Received: from localhost ([127.0.0.1]:34392 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1k80IO-0006GF-QL for submit@debbugs.gnu.org; Tue, 18 Aug 2020 08:00:56 -0400 Received: from mx4.mail.mmer.org ([178.22.66.29]:58183) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1k80IF-0006EM-RI for 42899@debbugs.gnu.org; Tue, 18 Aug 2020 08:00:49 -0400 Received: from delta (92-109-1-225.cable.dynamic.v4.ziggo.nl [92.109.1.225]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx4.mail.mmer.org (Postfix) with ESMTPSA id 74FC99CC71 for <42899@debbugs.gnu.org>; Tue, 18 Aug 2020 11:29:56 +0000 (UTC) From: Alexey Abramov Date: Tue, 18 Aug 2020 14:00:30 +0200 Message-Id: <20200818120037.30722-2-levenson@mmer.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200818120037.30722-1-levenson@mmer.org> References: <20200818120037.30722-1-levenson@mmer.org> MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: "Guix-patches" X-getmail-retrieved-from-mailbox: Patches * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/patches/dovecot-use-static-path-for-moduledir.patch: New file. * gnu/packages/mail.scm (dovecot)[source]: Use it. Signed-off-by: Alexey Abramov --- gnu/local.mk | 1 + gnu/packages/mail.scm | 3 +- ...ovecot-use-static-path-for-moduledir.patch | 146 ++++++++++++++++++ 3 files changed, 149 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/dovecot-use-static-path-for-moduledir.patch diff --git a/gnu/local.mk b/gnu/local.mk index 87bd7094bf..2817deb01f 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -900,6 +900,7 @@ dist_patch_DATA = \ %D%/packages/patches/doc++-include-directives.patch \ %D%/packages/patches/doc++-segfault-fix.patch \ %D%/packages/patches/docker-fix-tests.patch \ + %D%/packages/patches/dovecot-use-static-path-for-moduledir.patch \ %D%/packages/patches/dovecot-trees-support-dovecot-2.3.patch \ %D%/packages/patches/doxygen-test.patch \ %D%/packages/patches/doxygen-1.8.17-runtests.patch \ diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 98e75fa90f..8e7d5b2fc1 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -1411,7 +1411,8 @@ facilities for checking incoming mail.") (version-major+minor version) "/" "dovecot-" version ".tar.gz")) (sha256 - (base32 "1p5gp8jbavcsaara5mfn5cbrnlxssajnchczbgmmfzr7228fmnfk")))) + (base32 "1p5gp8jbavcsaara5mfn5cbrnlxssajnchczbgmmfzr7228fmnfk")) + (patches (search-patches "dovecot-use-static-path-for-moduledir.patch")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) diff --git a/gnu/packages/patches/dovecot-use-static-path-for-moduledir.patch b/gnu/packages/patches/dovecot-use-static-path-for-moduledir.patch new file mode 100644 index 0000000000..da9f4034f4 --- /dev/null +++ b/gnu/packages/patches/dovecot-use-static-path-for-moduledir.patch @@ -0,0 +1,146 @@ +Subject: [PATCH] Use static path for moduledir. + +Patch was taken from NixOS repo. Make dovecot look for plugins in +/etc/dovecot/modules so we can symlink plugins from several packages +there. + +The rational behind the patch can be found here: +https://dovecot.org/pipermail/dovecot/2013-April/089931.html + +--- + src/auth/main.c | 4 ++-- + src/config/config-parser.c | 2 +- + src/config/config-parser.h | 2 +- + src/dict/main.c | 2 +- + src/doveadm/doveadm-util.c | 4 ++-- + src/lib-fs/fs-api.c | 2 +- + src/lib-ssl-iostream/iostream-ssl.c | 4 ++-- + src/lib-storage/mail-storage-settings.c | 2 +- + 9 files changed, 12 insertions(+), 12 deletions(-) + +diff --git a/src/auth/main.c b/src/auth/main.c +index 2dbf9e176..b1e778ab7 100644 +--- a/src/auth/main.c ++++ b/src/auth/main.c +@@ -192,7 +192,7 @@ static void main_preinit(void) + mod_set.debug = global_auth_settings->debug; + mod_set.filter_callback = auth_module_filter; + +- modules = module_dir_load(AUTH_MODULE_DIR, NULL, &mod_set); ++ modules = module_dir_load("/etc/dovecot/modules/auth", NULL, &mod_set); + module_dir_init(modules); + + if (!worker) +@@ -223,7 +223,7 @@ void auth_module_load(const char *names) + mod_set.debug = global_auth_settings->debug; + mod_set.ignore_missing = TRUE; + +- modules = module_dir_load_missing(modules, AUTH_MODULE_DIR, names, ++ modules = module_dir_load_missing(modules, "/etc/dovecot/modules/auth", names, + &mod_set); + module_dir_init(modules); + } +diff --git a/src/config/config-parser.c b/src/config/config-parser.c +index 6894123ea..07e9fecb4 100644 +--- a/src/config/config-parser.c ++++ b/src/config/config-parser.c +@@ -1077,7 +1077,7 @@ void config_parse_load_modules(void) + + i_zero(&mod_set); + mod_set.abi_version = DOVECOT_ABI_VERSION; +- modules = module_dir_load(CONFIG_MODULE_DIR, NULL, &mod_set); ++ modules = module_dir_load("/etc/dovecot/modules/settings", NULL, &mod_set); + module_dir_init(modules); + + i_array_init(&new_roots, 64); +diff --git a/src/config/config-parser.h b/src/config/config-parser.h +index e0a0a5bea..32bd76804 100644 +--- a/src/config/config-parser.h ++++ b/src/config/config-parser.h +@@ -1,7 +1,7 @@ + #ifndef CONFIG_PARSER_H + #define CONFIG_PARSER_H + +-#define CONFIG_MODULE_DIR MODULEDIR"/settings" ++#define CONFIG_MODULE_DIR "/etc/dovecot/modules/settings" + + #define IS_WHITE(c) ((c) == ' ' || (c) == '\t') + +diff --git a/src/dict/main.c b/src/dict/main.c +index 722ed025f..4ed12ae5e 100644 +--- a/src/dict/main.c ++++ b/src/dict/main.c +@@ -104,7 +104,7 @@ static void main_init(void) + mod_set.abi_version = DOVECOT_ABI_VERSION; + mod_set.require_init_funcs = TRUE; + +- modules = module_dir_load(DICT_MODULE_DIR, NULL, &mod_set); ++ modules = module_dir_load("/etc/dovecot/modules/dict", NULL, &mod_set); + module_dir_init(modules); + + /* Register only after loading modules. They may contain SQL drivers, +diff --git a/src/doveadm/doveadm-util.c b/src/doveadm/doveadm-util.c +index a65ef7f72..c19eba06c 100644 +--- a/src/doveadm/doveadm-util.c ++++ b/src/doveadm/doveadm-util.c +@@ -33,7 +33,7 @@ void doveadm_load_modules(void) + mod_set.debug = doveadm_debug; + mod_set.ignore_dlopen_errors = TRUE; + +- modules = module_dir_load_missing(modules, DOVEADM_MODULEDIR, ++ modules = module_dir_load_missing(modules, "/etc/dovecot/modules/doveadm", + NULL, &mod_set); + module_dir_init(modules); + } +@@ -58,7 +58,7 @@ bool doveadm_has_unloaded_plugin(const char *name) + return FALSE; + } + +- dir = opendir(DOVEADM_MODULEDIR); ++ dir = opendir("/etc/dovecot/modules/doveadm"); + if (dir == NULL) + return FALSE; + +diff --git a/src/lib-fs/fs-api.c b/src/lib-fs/fs-api.c +index a939f612d..846cf86e6 100644 +--- a/src/lib-fs/fs-api.c ++++ b/src/lib-fs/fs-api.c +@@ -114,7 +114,7 @@ static void fs_class_try_load_plugin(const char *driver) + mod_set.abi_version = DOVECOT_ABI_VERSION; + mod_set.ignore_missing = TRUE; + +- fs_modules = module_dir_load_missing(fs_modules, MODULE_DIR, ++ fs_modules = module_dir_load_missing(fs_modules, "/etc/dovecot/modules", + module_name, &mod_set); + module_dir_init(fs_modules); + +diff --git a/src/lib-ssl-iostream/iostream-ssl.c b/src/lib-ssl-iostream/iostream-ssl.c +index f62c80d37..900ab46c4 100644 +--- a/src/lib-ssl-iostream/iostream-ssl.c ++++ b/src/lib-ssl-iostream/iostream-ssl.c +@@ -54,8 +54,8 @@ int ssl_module_load(const char **error_r) + mod_set.abi_version = DOVECOT_ABI_VERSION; + mod_set.setting_name = ""; + mod_set.require_init_funcs = TRUE; +- ssl_module = module_dir_load(MODULE_DIR, plugin_name, &mod_set); +- if (module_dir_try_load_missing(&ssl_module, MODULE_DIR, plugin_name, ++ ssl_module = module_dir_load("/etc/dovecot/modules", plugin_name, &mod_set); ++ if (module_dir_try_load_missing(&ssl_module, "/etc/dovecot/modules", plugin_name, + &mod_set, error_r) < 0) + return -1; + module_dir_init(ssl_module); +diff --git a/src/lib-storage/mail-storage-settings.c b/src/lib-storage/mail-storage-settings.c +index b314b529c..705509456 100644 +--- a/src/lib-storage/mail-storage-settings.c ++++ b/src/lib-storage/mail-storage-settings.c +@@ -337,7 +337,7 @@ static const struct mail_user_settings mail_user_default_settings = { + .last_valid_gid = 0, + + .mail_plugins = "", +- .mail_plugin_dir = MODULEDIR, ++ .mail_plugin_dir = "/etc/dovecot/modules", + + .mail_log_prefix = "%s(%u)<%{pid}><%{session}>: ", + +-- +2.27.0