emacs-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#43347: closed ([PATCH] services: dovecot: Do not require dovecot to


From: GNU bug Tracking System
Subject: bug#43347: closed ([PATCH] services: dovecot: Do not require dovecot to be globally installed.)
Date: Fri, 11 Sep 2020 21:51:01 +0000

Your message dated Fri, 11 Sep 2020 22:50:16 +0100
with message-id <878sdg6l0n.fsf@gmx.com>
and subject line Re: [bug#43347] [PATCH] services: dovecot: Do not require 
dovecot to be globally installed.
has caused the debbugs.gnu.org bug report #43347,
regarding [PATCH] services: dovecot: Do not require dovecot to be globally 
installed.
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs@gnu.org.)


-- 
43347: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=43347
GNU Bug Tracking System
Contact help-debbugs@gnu.org with problems
--- Begin Message --- Subject: [PATCH] services: dovecot: Do not require dovecot to be globally installed. Date: Fri, 11 Sep 2020 20:40:06 +0100 User-agent: mu4e 1.4.13; emacs 27.1
Hello Guix!

I noticed recently my little dovecot mailserver failed to boot, I
tracked it down to our service installing a symlink as:

  /etc/dovecot/modules -> /run/current-system/profile/lib/dovecot

However, I didn't have the dovecot package globally installed, the
service does not install it AFAICT.

We could extend the service to install dovecot into the global profile,
however instead we can just symlink /etc/dovecot/modules to the dovecot
package in the store directly.

Here's the patch to do that! WDYT?

Thanks,
Pierre

Attachment: signature.asc
Description: PGP signature

>From a85def0a578bc1b53b8af5e524a5ea9ce18f8403 Mon Sep 17 00:00:00 2001
From: Pierre Langlois <pierre.langlois@gmx.com>
Date: Thu, 10 Sep 2020 23:25:02 +0100
Subject: [PATCH] services: dovecot: Do not require dovecot to be globally
 installed.

* gnu/services/mail.scm (%dovecot-activation): Unconditionally symlink
/etc/dovecot/modules to the dovecot package's /lib dir instead of
hardcoding /run/current-system/profile/lib.
---
 gnu/services/mail.scm | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/gnu/services/mail.scm b/gnu/services/mail.scm
index 291a2db8e1..47f686852a 100644
--- a/gnu/services/mail.scm
+++ b/gnu/services/mail.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
 ;;; Copyright © 2017, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Kristofer Buffington <kristoferbuffington@gmail.com>
+;;; Copyright © 2020 Pierre Langlois <pierre.langlois@gmx.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -1476,7 +1477,10 @@ greyed out, instead of only later giving \"not 
selectable\" popup error.
            (with-output-to-string
              (lambda ()
                (serialize-configuration config
-                                        dovecot-configuration-fields)))))))
+                                        dovecot-configuration-fields))))))
+         (dovecot (if (opaque-dovecot-configuration? config)
+                      (opaque-dovecot-configuration-dovecot config)
+                      (dovecot-configuration-dovecot config))))
     #~(begin
         (use-modules (guix build utils))
         (define (mkdir-p/perms directory owner perms)
@@ -1533,8 +1537,9 @@ greyed out, instead of only later giving \"not 
selectable\" popup error.
           (copy-file #$(plain-file "dovecot.conf" config-str)
                      "/etc/dovecot/dovecot.conf")
           (mkdir-p/perms "/etc/dovecot/private" user #o700)
-          (unless (file-exists? moduledir)
-            (symlink "/run/current-system/profile/lib/dovecot" moduledir))
+          (if (file-exists? moduledir)
+            (delete-file moduledir))
+          (symlink (string-append #$dovecot "/lib/dovecot") moduledir)
           (create-self-signed-certificate-if-absent
            #:private-key "/etc/dovecot/private/default.pem"
            #:public-key "/etc/dovecot/default.pem"
-- 
2.28.0


--- End Message ---
--- Begin Message --- Subject: Re: [bug#43347] [PATCH] services: dovecot: Do not require dovecot to be globally installed. Date: Fri, 11 Sep 2020 22:50:16 +0100 User-agent: mu4e 1.4.13; emacs 27.1
Tobias Geerinckx-Rice writes:

> Pierre,
>
> Thank you very much for the bug report.
>
> On 2020-09-11 21:40, Pierre Langlois wrote:
>> I noticed recently my little dovecot mailserver failed to boot, I
>> tracked it down to our service installing a symlink as:
>>   /etc/dovecot/modules -> /run/current-system/profile/lib/dovecot
>> However, I didn't have the dovecot package globally installed, the
>> service does not install it AFAICT.
>
> Sorry, this is my fault.  I've been slowly merging some Dovecot
> improvements[0] into master.
>
> While I'm happily replying from the latest Dovecot service, I run it
> in an... idiosyncratic manner that had me write some glue code to test 
> these patches.  I didn't realize that said glue was doing more work
> than I, er, realized.  Too much.

No worries! I see you've reverted the commits so I'll close this.

>> We could extend the service to install dovecot into the global profile,
>> however instead we can just symlink /etc/dovecot/modules to the dovecot
>> package in the store directly.
>
> Nack.  That just reverts to last week's monolithic Dovecot service
> that doesn't support modules, but now with pointless indirection via
> /etc.  Nor should the service add anything to the system profile, or
> expect the user to do so.
>
> The fix is to add a ‘modules’ field to the service configuration that,
> exactly like CUPS's ‘extensions’ field, adds module packages like 
> dovecot-pigeonhole to the union directory that /etc/dovecot/modules
> points to.

Ah I see, I wasn't aware of the dovecot modules, the indirection being
pointless with my changes should have been a hint there was something
wrong :-).

Thanks,
Pierre

Attachment: signature.asc
Description: PGP signature


--- End Message ---

reply via email to

[Prev in Thread] Current Thread [Next in Thread]