GNU bug report logs - #68541
[PATCH 1/2] gnu: dovecot: Prevent cross-compile errors.

Previous Next

Package: guix-patches;

Reported by: Herman Rimm <herman <at> rimm.ee>

Date: Wed, 17 Jan 2024 17:43:01 UTC

Severity: normal

Tags: patch

To reply to this bug, email your comments to 68541 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#68541; Package guix-patches. (Wed, 17 Jan 2024 17:43:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Herman Rimm <herman <at> rimm.ee>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Wed, 17 Jan 2024 17:43:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Herman Rimm <herman <at> rimm.ee>
To: guix-patches <at> gnu.org
Cc: Herman Rimm <herman <at> rimm.ee>
Subject: [PATCH 1/2] gnu: dovecot: Prevent cross-compile errors.
Date: Wed, 17 Jan 2024 18:37:49 +0100
* gnu/local.mk: Register patch.
* gnu/packages/mail.scm (dovecot): Fix cross-compile.
[arguments]: Remove '--with-clucene' configure flag.
[inputs]: Remove clucene.
[native-inputs]: Add autoconf, automake, gettext-minimal, libtool.
[patches]: Add patch to configure for cross-compiling.
* gnu/packages/patches/dovecot-bootstrap-cross-compile.patch: New file.

Change-Id: Iec697ccd92cc55652b83a683aa46f9955df9e15c
---
The first patch enables cross-compilation, at least on x86_64 targeting
Aarch64. The second patch runs guix style. Guix lint outputs:
dovecot <at> 2.3.21: label 'zstd' does not match package name 'zstd:lib'.
Do I need to specify the 'lib' output of zstd in a different way?

 gnu/local.mk                                  |   1 +
 gnu/packages/mail.scm                         |  12 +-
 .../dovecot-bootstrap-cross-compile.patch     | 165 ++++++++++++++++++
 3 files changed, 173 insertions(+), 5 deletions(-)
 create mode 100644 gnu/packages/patches/dovecot-bootstrap-cross-compile.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 34bed91fc3..35e4d6b7ed 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1088,6 +1088,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/docbook-xsl-support-old-url.patch	\
   %D%/packages/patches/doc++-include-directives.patch		\
   %D%/packages/patches/doc++-segfault-fix.patch			\
+  %D%/packages/patches/dovecot-bootstrap-cross-compile.patch	\
   %D%/packages/patches/dovecot-opensslv3.patch			\
   %D%/packages/patches/dovecot-trees-support-dovecot-2.3.patch	\
   %D%/packages/patches/doxygen-hurd.patch			\
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 4466e5e6d9..b522943294 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -54,6 +54,7 @@
 ;;; Copyright © 2023 Timo Wilken <guix <at> twilken.net>
 ;;; Copyright © 2023 Arjan Adriaanse <arjan <at> adriaan.se>
 ;;; Copyright © 2023 Wilko Meyer <w <at> wmeyer.eu>
+;;; Copyright © 2023 Herman Rimm <herman <at> rimm.ee>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -2015,13 +2016,15 @@ (define-public dovecot
        (sha256
         (base32 "0bah6rn5ihczai8q50p6pqxwj73j21smib89ycp7q8qwly9i1c85"))
        (patches
-        (search-patches "dovecot-opensslv3.patch"))))
+        (search-patches "dovecot-bootstrap-cross-compile.patch"
+                        "dovecot-opensslv3.patch"))
+       (modules '((guix build utils)))
+       (snippet '(delete-file "configure"))))
     (build-system gnu-build-system)
     (native-inputs
-     (list pkg-config))
+     (list autoconf automake gettext-minimal libtool pkg-config))
     (inputs
      (list bzip2
-           clucene
            icu4c
            libsodium ; extra password algorithms
            libstemmer
@@ -2035,8 +2038,7 @@ (define-public dovecot
     (arguments
      `(#:configure-flags '("--sysconfdir=/etc"
                            "--localstatedir=/var"
-                           "--with-sqlite"  ; not auto-detected
-                           "--with-lucene") ; not auto-detected
+                           "--with-sqlite") ; not auto-detected
        ;; The -rdynamic linker flag is needed for the backtrace() function to
        ;; have symbol names rather than just addresses.  Dovecot's tests rely
        ;; on this, see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=962630.
diff --git a/gnu/packages/patches/dovecot-bootstrap-cross-compile.patch b/gnu/packages/patches/dovecot-bootstrap-cross-compile.patch
new file mode 100644
index 0000000000..5b268082a0
--- /dev/null
+++ b/gnu/packages/patches/dovecot-bootstrap-cross-compile.patch
@@ -0,0 +1,165 @@
+Upstream status: sent to dovecot <at> dovecot.org.
+
+From f53b92560ed86144b880919b66c096ce74a0a9e6 Mon Sep 17 00:00:00 2001
+From: Herman Rimm <herman <at> rimm.ee>
+Date: Wed, 17 Jan 2024 17:59:08 +0100
+Subject: [PATCH] m4: Fill in 'action-if-cross-compiling' for every
+ AC_RUN_IFELSE.
+
+---
+ m4/c99_vsnprintf.m4 | 1 +
+ m4/fd_passing.m4    | 4 ++++
+ m4/glibc.m4         | 2 ++
+ m4/gmtime_max.m4    | 5 ++++-
+ m4/ioloop.m4        | 2 ++
+ m4/mmap_write.m4    | 2 ++
+ m4/mntctl.m4        | 2 ++
+ m4/vararg.m4        | 9 ++++++---
+ m4/want_gssapi.m4   | 2 ++
+ 9 files changed, 25 insertions(+), 4 deletions(-)
+
+diff --git a/m4/c99_vsnprintf.m4 b/m4/c99_vsnprintf.m4
+index e642083..3a5d21f 100644
+--- a/m4/c99_vsnprintf.m4
++++ b/m4/c99_vsnprintf.m4
+@@ -21,6 +21,7 @@ AC_DEFUN([DOVECOT_C99_VSNPRINTF], [
+       return f("hello %s%d", "world", 1);
+     }]])],
+     [i_cv_c99_vsnprintf=yes],
++    [i_cv_c99_vsnprintf=no],
+     [i_cv_c99_vsnprintf=no])
+   ])
+   if test $i_cv_c99_vsnprintf = no; then
+diff --git a/m4/fd_passing.m4 b/m4/fd_passing.m4
+index 6b96c0f..dc7e180 100644
+--- a/m4/fd_passing.m4
++++ b/m4/fd_passing.m4
+@@ -72,6 +72,10 @@ AC_DEFUN([DOVECOT_FD_PASSING], [
+         dnl no, try with BUGGY_CMSG_MACROS
+         CFLAGS=$old_cflags
+         i_cv_fd_passing=no
++      ], [
++        dnl no, try with BUGGY_CMSG_MACROS
++        CFLAGS=$old_cflags
++        i_cv_fd_passing=buggy_cmsg_macros
+       ])
+     done
+   ]);
+diff --git a/m4/glibc.m4 b/m4/glibc.m4
+index 5d722aa..1dee501 100644
+--- a/m4/glibc.m4
++++ b/m4/glibc.m4
+@@ -41,6 +41,8 @@ AC_DEFUN([DOVECOT_GLIBC], [
+       i_cv_posix_fallocate_works=yes
+     ], [
+       i_cv_posix_fallocate_works=no
++    ], [
++      i_cv_posix_fallocate_works=no
+     ])
+   ])
+   if test $i_cv_posix_fallocate_works = yes; then
+diff --git a/m4/gmtime_max.m4 b/m4/gmtime_max.m4
+index 1613cb2..1c193e5 100644
+--- a/m4/gmtime_max.m4
++++ b/m4/gmtime_max.m4
+@@ -36,7 +36,10 @@ AC_DEFUN([DOVECOT_GMTIME_MAX], [
+     ], [
+       printf "check failed, assuming "
+       i_cv_gmtime_max_time_t=31
+-    ],[])
++    ], [
++      printf "check failed, assuming "
++      i_cv_gmtime_max_time_t=31
++    ])
+   ])
+   AC_DEFINE_UNQUOTED(TIME_T_MAX_BITS, $i_cv_gmtime_max_time_t, [max. time_t bits gmtime() can handle])
+ ])
+diff --git a/m4/ioloop.m4 b/m4/ioloop.m4
+index 0f7dde0..3ec0902 100644
+--- a/m4/ioloop.m4
++++ b/m4/ioloop.m4
+@@ -15,6 +15,8 @@ AC_DEFUN([DOVECOT_IOLOOP], [
+         i_cv_epoll_works=yes
+       ], [
+         i_cv_epoll_works=no
++      ], [
++        i_cv_epoll_works=no
+       ])
+     ])
+     if test $i_cv_epoll_works = yes; then
+diff --git a/m4/mmap_write.m4 b/m4/mmap_write.m4
+index 3352c3a..f922957 100644
+--- a/m4/mmap_write.m4
++++ b/m4/mmap_write.m4
+@@ -36,6 +36,8 @@ AC_DEFUN([DOVECOT_MMAP_WRITE], [
+       i_cv_mmap_plays_with_write=yes
+     ], [
+       i_cv_mmap_plays_with_write=no
++    ], [
++      i_cv_mmap_plays_with_write=no
+     ])
+   ])
+   if test $i_cv_mmap_plays_with_write = no; then
+diff --git a/m4/mntctl.m4 b/m4/mntctl.m4
+index 9d0dde1..4ad18f2 100644
+--- a/m4/mntctl.m4
++++ b/m4/mntctl.m4
+@@ -25,6 +25,8 @@ AC_DEFUN([DOVECOT_MNTCTL], [
+       AC_MSG_RESULT($size)
+     ],[
+       AC_MSG_RESULT(default)
++    ],[
++      AC_MSG_RESULT(default)
+     ])
+   fi
+ ])
+diff --git a/m4/vararg.m4 b/m4/vararg.m4
+index 6bc8dcc..79ce983 100644
+--- a/m4/vararg.m4
++++ b/m4/vararg.m4
+@@ -16,7 +16,8 @@ AC_DEFUN([DOVECOT_VA_COPY], [
+             return 0;
+           }]])],
+           [lib_cv_va_copy=yes],
+-          [lib_cv_va_copy=no],[])
++          [lib_cv_va_copy=no],
++          [lib_cv_va_copy=yes])
+   ])
+   AC_CACHE_CHECK([for an implementation of __va_copy()],lib_cv___va_copy,[
+           AC_RUN_IFELSE([AC_LANG_SOURCE([[
+@@ -35,7 +36,8 @@ AC_DEFUN([DOVECOT_VA_COPY], [
+             return 0;
+           }]])],
+           [lib_cv___va_copy=yes],
+-          [lib_cv___va_copy=no],[])
++          [lib_cv___va_copy=no],
++          [lib_cv___va_copy=no])
+   ])
+   
+   if test "x$lib_cv_va_copy" = "xyes"; then
+@@ -68,7 +70,8 @@ AC_DEFUN([DOVECOT_VA_COPY_BYVAL], [
+             return 0;
+           }]])],
+           [lib_cv_va_val_copy=yes],
+-          [lib_cv_va_val_copy=no],[])
++          [lib_cv_va_val_copy=no],
++          [lib_cv_va_val_copy=no])
+   ])
+   
+   if test "x$lib_cv_va_val_copy" = "xno"; then
+diff --git a/m4/want_gssapi.m4 b/m4/want_gssapi.m4
+index 7866aba..c318b0a 100644
+--- a/m4/want_gssapi.m4
++++ b/m4/want_gssapi.m4
+@@ -82,6 +82,8 @@ AC_DEFUN([DOVECOT_WANT_GSSAPI], [
+   				    i_cv_gssapi_spnego=yes
+   				  ], [
+   				    i_cv_gssapi_spnego=no
++  				  ], [
++  				    i_cv_gssapi_spnego=no
+   				  ])
+   				])
+   				if test "$i_cv_gssapi_spnego" = "yes"; then
+-- 
+2.41.0
+

base-commit: 8ca490e6600c55b2dab5db12cf1aefa2b1b27f9a
prerequisite-patch-id: 80cc6bb367fd6671f325eb5f88b030db5979b74b
prerequisite-patch-id: 60a91900bd16347223fd517454ca7c20c655ae2e
-- 
2.41.0





Information forwarded to guix-patches <at> gnu.org:
bug#68541; Package guix-patches. (Wed, 17 Jan 2024 17:51:02 GMT) Full text and rfc822 format available.

Message #8 received at 68541 <at> debbugs.gnu.org (full text, mbox):

From: Herman Rimm <herman <at> rimm.ee>
To: 68541 <at> debbugs.gnu.org
Cc: Herman Rimm <herman <at> rimm.ee>
Subject: [PATCH 2/2] gnu: dovecot: Apply guix style.
Date: Wed, 17 Jan 2024 18:50:11 +0100
* gnu/packages/mail.scm (dovecot): Apply guix style.

Change-Id: I2f50fa15ccbd2391be1f6f12e13e62aff707c54a
---
 gnu/packages/mail.scm | 88 +++++++++++++++++++++++--------------------
 1 file changed, 47 insertions(+), 41 deletions(-)

diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index b522943294..5bbe4ca7ea 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -2011,57 +2011,63 @@ (define-public dovecot
      (origin
        (method url-fetch)
        (uri (string-append "https://www.dovecot.org/releases/"
-                           (version-major+minor version) "/"
-                           "dovecot-" version ".tar.gz"))
+                           (version-major+minor version)
+                           "/"
+                           "dovecot-"
+                           version
+                           ".tar.gz"))
        (sha256
         (base32 "0bah6rn5ihczai8q50p6pqxwj73j21smib89ycp7q8qwly9i1c85"))
-       (patches
-        (search-patches "dovecot-bootstrap-cross-compile.patch"
-                        "dovecot-opensslv3.patch"))
+       (patches (search-patches "dovecot-bootstrap-cross-compile.patch"
+                                "dovecot-opensslv3.patch"))
        (modules '((guix build utils)))
        (snippet '(delete-file "configure"))))
     (build-system gnu-build-system)
-    (native-inputs
-     (list autoconf automake gettext-minimal libtool pkg-config))
-    (inputs
-     (list bzip2
-           icu4c
-           libsodium ; extra password algorithms
-           libstemmer
-           libunwind
-           linux-pam
-           lz4
-           openssl
-           sqlite
-           zlib
-           `(,zstd "lib")))
+    (native-inputs (list autoconf automake gettext-minimal libtool pkg-config))
+    (inputs (list bzip2
+                  icu4c
+                  libsodium ;extra password algorithms
+                  libstemmer
+                  libunwind
+                  linux-pam
+                  lz4
+                  openssl
+                  sqlite
+                  zlib
+                  `(,zstd "lib")))
     (arguments
-     `(#:configure-flags '("--sysconfdir=/etc"
-                           "--localstatedir=/var"
-                           "--with-sqlite") ; not auto-detected
+     `(#:configure-flags '("--sysconfdir=/etc" "--localstatedir=/var"
+                           "--with-sqlite") ;not auto-detected
        ;; The -rdynamic linker flag is needed for the backtrace() function to
        ;; have symbol names rather than just addresses.  Dovecot's tests rely
        ;; on this, see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=962630.
        #:make-flags (list "LDFLAGS=-rdynamic")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-file-names
-           (lambda _
-             (substitute* "src/lib-program-client/test-program-client-local.c"
-               (("(/bin/| )cat") (which "cat"))
-               (("/bin/echo") (which "echo"))
-               (("/bin/false") (which "false"))
-               (("/bin/sh") (which "bash"))
-               (("head") (which "head"))
-               (("sleep") (which "sleep")))
-             (substitute* (list "src/lib-smtp/test-bin/sendmail-exit-1.sh"
-                                "src/lib-smtp/test-bin/sendmail-success.sh")
-               (("cat") (which "cat")))))
-         (replace 'install
-           (lambda* (#:key make-flags #:allow-other-keys)
-             ;; Simple hack to avoid installing a trivial README in /etc.
-             (apply invoke "make" "install" "sysconfdir=/tmp/bogus"
-                    make-flags))))))
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'patch-file-names
+                    (lambda _
+                      (substitute* "src/lib-program-client/test-program-client-local.c"
+                        (("(/bin/| )cat")
+                         (which "cat"))
+                        (("/bin/echo")
+                         (which "echo"))
+                        (("/bin/false")
+                         (which "false"))
+                        (("/bin/sh")
+                         (which "bash"))
+                        (("head")
+                         (which "head"))
+                        (("sleep")
+                         (which "sleep")))
+                      (substitute* (list
+                                    "src/lib-smtp/test-bin/sendmail-exit-1.sh"
+                                    "src/lib-smtp/test-bin/sendmail-success.sh")
+                        (("cat")
+                         (which "cat")))))
+                  (replace 'install
+                    (lambda* (#:key make-flags #:allow-other-keys)
+                      ;; Simple hack to avoid installing a trivial README in /etc.
+                      (apply invoke "make" "install" "sysconfdir=/tmp/bogus"
+                             make-flags))))))
     (home-page "https://www.dovecot.org")
     (synopsis "Secure POP3/IMAP server")
     (description
-- 
2.41.0





Information forwarded to guix-patches <at> gnu.org:
bug#68541; Package guix-patches. (Wed, 17 Jan 2024 23:48:01 GMT) Full text and rfc822 format available.

Message #11 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Clément Lassieur <clement <at> lassieur.org>
To: Herman Rimm via Guix-patches via <guix-patches <at> gnu.org>
Cc: 68541 <at> debbugs.gnu.org, Herman Rimm <herman <at> rimm.ee>
Subject: Re: [bug#68541] [PATCH 2/2] gnu: dovecot: Apply guix style.
Date: Thu, 18 Jan 2024 00:47:23 +0100
On Wed, Jan 17 2024, Herman Rimm via Guix-patches via wrote:

> * gnu/packages/mail.scm (dovecot): Apply guix style.
>
> Change-Id: I2f50fa15ccbd2391be1f6f12e13e62aff707c54a
> ---
>  gnu/packages/mail.scm | 88 +++++++++++++++++++++++--------------------
>  1 file changed, 47 insertions(+), 41 deletions(-)

Hi, "guix style" is not perfect, and in this case the previous style
was, I believe, way better.  I think it's meant to help people automate
some stuff, but not to reformat the whole source tree.

Thanks!  And sorry :)
Clément

> diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
> index b522943294..5bbe4ca7ea 100644
> --- a/gnu/packages/mail.scm
> +++ b/gnu/packages/mail.scm
> @@ -2011,57 +2011,63 @@ (define-public dovecot
>       (origin
>         (method url-fetch)
>         (uri (string-append "https://www.dovecot.org/releases/"
> -                           (version-major+minor version) "/"
> -                           "dovecot-" version ".tar.gz"))
> +                           (version-major+minor version)
> +                           "/"
> +                           "dovecot-"
> +                           version
> +                           ".tar.gz"))

This is not readable :/

>         (sha256
>          (base32 "0bah6rn5ihczai8q50p6pqxwj73j21smib89ycp7q8qwly9i1c85"))
> -       (patches
> -        (search-patches "dovecot-bootstrap-cross-compile.patch"
> -                        "dovecot-opensslv3.patch"))
> +       (patches (search-patches "dovecot-bootstrap-cross-compile.patch"
> +                                "dovecot-opensslv3.patch"))
>         (modules '((guix build utils)))
>         (snippet '(delete-file "configure"))))
>      (build-system gnu-build-system)
> -    (native-inputs
> -     (list autoconf automake gettext-minimal libtool pkg-config))
> -    (inputs
> -     (list bzip2
> -           icu4c
> -           libsodium ; extra password algorithms
> -           libstemmer
> -           libunwind
> -           linux-pam
> -           lz4
> -           openssl
> -           sqlite
> -           zlib
> -           `(,zstd "lib")))
> +    (native-inputs (list autoconf automake gettext-minimal libtool pkg-config))
> +    (inputs (list bzip2
> +                  icu4c
> +                  libsodium ;extra password algorithms
> +                  libstemmer
> +                  libunwind
> +                  linux-pam
> +                  lz4
> +                  openssl
> +                  sqlite
> +                  zlib
> +                  `(,zstd "lib")))
>      (arguments
> -     `(#:configure-flags '("--sysconfdir=/etc"
> -                           "--localstatedir=/var"
> -                           "--with-sqlite") ; not auto-detected
> +     `(#:configure-flags '("--sysconfdir=/etc" "--localstatedir=/var"
> +                           "--with-sqlite") ;not auto-detected
>         ;; The -rdynamic linker flag is needed for the backtrace() function to
>         ;; have symbol names rather than just addresses.  Dovecot's tests rely
>         ;; on this, see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=962630.
>         #:make-flags (list "LDFLAGS=-rdynamic")
> -       #:phases
> -       (modify-phases %standard-phases
> -         (add-after 'unpack 'patch-file-names
> -           (lambda _
> -             (substitute* "src/lib-program-client/test-program-client-local.c"
> -               (("(/bin/| )cat") (which "cat"))
> -               (("/bin/echo") (which "echo"))
> -               (("/bin/false") (which "false"))
> -               (("/bin/sh") (which "bash"))
> -               (("head") (which "head"))
> -               (("sleep") (which "sleep")))
> -             (substitute* (list "src/lib-smtp/test-bin/sendmail-exit-1.sh"
> -                                "src/lib-smtp/test-bin/sendmail-success.sh")
> -               (("cat") (which "cat")))))
> -         (replace 'install
> -           (lambda* (#:key make-flags #:allow-other-keys)
> -             ;; Simple hack to avoid installing a trivial README in /etc.
> -             (apply invoke "make" "install" "sysconfdir=/tmp/bogus"
> -                    make-flags))))))
> +       #:phases (modify-phases %standard-phases
> +                  (add-after 'unpack 'patch-file-names
> +                    (lambda _
> +                      (substitute* "src/lib-program-client/test-program-client-local.c"
> +                        (("(/bin/| )cat")
> +                         (which "cat"))
> +                        (("/bin/echo")
> +                         (which "echo"))
> +                        (("/bin/false")
> +                         (which "false"))
> +                        (("/bin/sh")
> +                         (which "bash"))
> +                        (("head")
> +                         (which "head"))
> +                        (("sleep")
> +                         (which "sleep")))

Same here, the previous version was more readable.

> +                      (substitute* (list
> +                                    "src/lib-smtp/test-bin/sendmail-exit-1.sh"
> +                                    "src/lib-smtp/test-bin/sendmail-success.sh")
> +                        (("cat")
> +                         (which "cat")))))
> +                  (replace 'install
> +                    (lambda* (#:key make-flags #:allow-other-keys)
> +                      ;; Simple hack to avoid installing a trivial README in /etc.
> +                      (apply invoke "make" "install" "sysconfdir=/tmp/bogus"
> +                             make-flags))))))
>      (home-page "https://www.dovecot.org")
>      (synopsis "Secure POP3/IMAP server")
>      (description




Information forwarded to guix-patches <at> gnu.org:
bug#68541; Package guix-patches. (Wed, 17 Jan 2024 23:48:02 GMT) Full text and rfc822 format available.

This bug report was last modified 1 year and 149 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.