From 978b5ce25f438e47bdc9614e47ed94e8aa42268d Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Tue, 22 Oct 2024 16:53:21 +0100 Subject: [PATCH 01/15] Rebuild for Jansson 2.14 (https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/3PYINSQGKQ4BB25NQUI2A2UCGGLAG5ND/) From 9085a5dda208c18705b7cf4b90f508c8caa3622d Mon Sep 17 00:00:00 2001 From: Orion Poplawski Date: Thu, 24 Oct 2024 21:23:58 -0600 Subject: [PATCH 02/15] Rebuild for clamav 1.4.1 From c8494b5a171ae72c0c3d5b8a18d2a2176a739a11 Mon Sep 17 00:00:00 2001 From: Pete Walter Date: Sun, 8 Dec 2024 22:08:58 +0000 Subject: [PATCH 03/15] Rebuild for ICU 76 From 32d115906fc201b63661e44f5f27e6767b2a0857 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 16 Jan 2025 15:09:06 +0000 Subject: [PATCH 04/15] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild From e188d2585e63960c56a87b4cb3fe226c7e85a1ec Mon Sep 17 00:00:00 2001 From: Nikita Sanjay Patwa Date: Mon, 27 Jan 2025 14:54:50 +0530 Subject: [PATCH 05/15] Corrected the declaration and defination of patch_doc_t and find_cb --- cyrus-imapd.spec | 1 + ...laration-initialization-of-functions.patch | 35 +++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 patch-cyrus-corrected-declaration-initialization-of-functions.patch diff --git a/cyrus-imapd.spec b/cyrus-imapd.spec index 1b44b5e..8ea4ed3 100644 --- a/cyrus-imapd.spec +++ b/cyrus-imapd.spec @@ -72,6 +72,7 @@ Patch92: patch-cassandane-fix-annotator # try to get fixed the below upstream to work on Fedora: # https://github.com/cyrusimap/cyrus-imapd/commit/f10eee167313418d84e63d215310477d4fe68e94 Patch93: patch-cassandane-xapian-delve-path +Patch94: patch-cyrus-corrected-declaration-initialization-of-functions.patch BuildRequires: autoconf automake bison flex gcc gcc-c++ git glibc-langpack-en BuildRequires: groff libtool make pkgconfig rsync systemd diff --git a/patch-cyrus-corrected-declaration-initialization-of-functions.patch b/patch-cyrus-corrected-declaration-initialization-of-functions.patch new file mode 100644 index 0000000..f87fe6a --- /dev/null +++ b/patch-cyrus-corrected-declaration-initialization-of-functions.patch @@ -0,0 +1,35 @@ +diff --git a/imap/httpd.h b/imap/httpd.h +index 67279a9..c381b02 100644 +--- a/imap/httpd.h ++++ b/imap/httpd.h +@@ -280,7 +280,7 @@ struct range { + + struct patch_doc_t { + const char *format; /* MIME format of patch document */ +- int (*proc)(); /* Function to parse and apply doc */ ++ int (*proc)(struct transaction_t *, void *); /* Function to parse and apply doc */ + }; + + typedef int (*encode_proc_t)(struct transaction_t *txn, +diff --git a/imap/zoneinfo_db.c b/imap/zoneinfo_db.c +index 3be631c..92584d6 100644 +--- a/imap/zoneinfo_db.c ++++ b/imap/zoneinfo_db.c +@@ -243,7 +243,7 @@ struct findrock { + const char *find; + int tzid_only; + time_t changedsince; +- int (*proc)(); ++ int (*proc)(const char *, int, struct zoneinfo *, void *); + void *rock; + }; + +@@ -302,7 +302,7 @@ static int find_cb(void *rock, + } + + EXPORTED int zoneinfo_find(const char *find, int tzid_only, time_t changedsince, +- int (*proc)(), void *rock) ++ int (*proc)(const char *tzid, int tzidlen, struct zoneinfo *zi, void *rock), void *rock) + { + struct findrock frock; + From 234d299804fd6a6226a78bd148f849e45c3dfa19 Mon Sep 17 00:00:00 2001 From: Joe Orton Date: Wed, 15 Jan 2025 16:13:50 +0000 Subject: [PATCH 06/15] - enable the idled daemon in the default cyrus.conf --- patch-cyrus-default-configs | 43 +++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/patch-cyrus-default-configs b/patch-cyrus-default-configs index 31c3647..adc8d7d 100644 --- a/patch-cyrus-default-configs +++ b/patch-cyrus-default-configs @@ -1,7 +1,27 @@ -diff --git a/doc/examples/imapd_conf/normal.conf b/doc/examples/imapd_conf/normal.conf -index 95b54e9..3935b77 100644 ---- a/doc/examples/imapd_conf/normal.conf -+++ b/doc/examples/imapd_conf/normal.conf +diff -uap cyrus-imapd-3.8.3/doc/examples/cyrus_conf/prefork.conf.2 cyrus-imapd-3.8.3/doc/examples/cyrus_conf/prefork.conf +--- cyrus-imapd-3.8.3/doc/examples/cyrus_conf/prefork.conf.2 2024-04-26 01:59:22.000000000 +0100 ++++ cyrus-imapd-3.8.3/doc/examples/cyrus_conf/prefork.conf 2025-01-15 15:56:40.112544167 +0000 +@@ -19,8 +19,8 @@ SERVICES { + # nntps cmd="nntpd -s" listen="nntps" prefork=1 + + # these are only necessary if using HTTP for CalDAV, CardDAV, or RSS +-# http cmd="httpd" listen="http" prefork=3 +-# https cmd="httpd -s" listen="https" prefork=1 ++ http cmd="httpd" listen="http" prefork=3 ++ https cmd="httpd -s" listen="https" prefork=1 + + # at least one LMTP is required for delivery + # lmtp cmd="lmtpd" listen="lmtp" prefork=0 +@@ -51,5 +51,5 @@ EVENTS { + + DAEMON { + # this is only necessary if using idled for IMAP IDLE +-# idled cmd="idled" ++ idled cmd="idled" + } +diff -uap cyrus-imapd-3.8.3/doc/examples/imapd_conf/normal.conf.2 cyrus-imapd-3.8.3/doc/examples/imapd_conf/normal.conf +--- cyrus-imapd-3.8.3/doc/examples/imapd_conf/normal.conf.2 2024-04-08 04:46:02.000000000 +0100 ++++ cyrus-imapd-3.8.3/doc/examples/imapd_conf/normal.conf 2025-01-15 15:55:44.361093153 +0000 @@ -10,7 +10,7 @@ admins: cyrus ################################################################### @@ -88,18 +108,3 @@ index 95b54e9..3935b77 100644 # File containing the global certificate used for ALL services (imap, # pop3, lmtp, sieve) #tls_server_cert: /etc/ssl/certs/ssl-cert-snakeoil.pem -diff --git a/doc/examples/cyrus_conf/prefork.conf b/doc/examples/cyrus_conf/prefork.conf -index 186fe66..ab97848 100644 ---- a/doc/examples/cyrus_conf/prefork.conf -+++ b/doc/examples/cyrus_conf/prefork.conf -@@ -19,8 +19,8 @@ SERVICES { - # nntps cmd="nntpd -s" listen="nntps" prefork=1 - - # these are only necessary if using HTTP for CalDAV, CardDAV, or RSS --# http cmd="httpd" listen="http" prefork=3 --# https cmd="httpd -s" listen="https" prefork=1 -+ http cmd="httpd" listen="http" prefork=3 -+ https cmd="httpd -s" listen="https" prefork=1 - - # at least one LMTP is required for delivery - # lmtp cmd="lmtpd" listen="lmtp" prefork=0 From c33ad39dd57fd12633eab7cbcd49209b9472fde0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 11 Feb 2025 14:36:23 +0100 Subject: [PATCH 07/15] Drop call to %sysusers_create_compat After https://fedoraproject.org/wiki/Changes/RPMSuportForSystemdSysusers, rpm will handle account creation automatically. --- cyrus-imapd.spec | 4 ---- 1 file changed, 4 deletions(-) diff --git a/cyrus-imapd.spec b/cyrus-imapd.spec index 8ea4ed3..3d285b2 100644 --- a/cyrus-imapd.spec +++ b/cyrus-imapd.spec @@ -214,9 +214,7 @@ BuildRequires: perl(Types::Standard) BuildRequires: perl(Unix::Syslog) %endif -Requires(pre): shadow-utils %{?systemd_requires} -%{?sysusers_requires_compat} Requires: cyrus-imapd-libs%{?_isa} = %{version}-%{release} Requires: cyrus-imapd-utils = %{version}-%{release} @@ -699,8 +697,6 @@ if [ -s "work/failed" ]; then fi -%pre -%sysusers_create_compat %{SOURCE19} %post %systemd_post cyrus-imapd.service From 0d1778b5d4648509cc58026012a17264f612fdc4 Mon Sep 17 00:00:00 2001 From: Jitka Plesnikova Date: Tue, 8 Jul 2025 14:25:18 +0200 Subject: [PATCH 08/15] Perl 5.42 rebuild From 0a4d6d316ab33b0a79a077bd296a252c4d8447b8 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 23 Jul 2025 18:58:33 +0000 Subject: [PATCH 09/15] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild From ec9a720aee76c875f007ea59d116598cfc6e0033 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Zatloukal?= Date: Wed, 6 Aug 2025 09:52:54 +0200 Subject: [PATCH 10/15] Rebuilt for icu 77.1 From adaa75194466af2d6248ecdba317f7c8d03d9233 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Hrdina?= Date: Tue, 12 Aug 2025 09:50:44 +0200 Subject: [PATCH 11/15] Update of fmf plans --- ci.fmf | 1 + gating.yaml | 15 +++++++-------- plans.fmf | 35 +++++++++++++++++++++++++++++++++++ plans/all.fmf | 6 ------ 4 files changed, 43 insertions(+), 14 deletions(-) create mode 100644 ci.fmf create mode 100644 plans.fmf delete mode 100644 plans/all.fmf diff --git a/ci.fmf b/ci.fmf new file mode 100644 index 0000000..c5aa0e0 --- /dev/null +++ b/ci.fmf @@ -0,0 +1 @@ +resultsdb-testcase: separate diff --git a/gating.yaml b/gating.yaml index 1773d0c..8085288 100644 --- a/gating.yaml +++ b/gating.yaml @@ -1,26 +1,25 @@ --- !Policy product_versions: - fedora-* -decision_contexts: [bodhi_update_push_testing] +decision_context: bodhi_update_push_testing subject_type: koji_build rules: - - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/tier1-public.functional} -#gating rawhide +#Rawhide --- !Policy product_versions: - fedora-* -decision_contexts: [bodhi_update_push_stable] +decision_context: bodhi_update_push_stable subject_type: koji_build rules: - - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} - + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build./plans/tier1-public.functional} + #gating rhel --- !Policy product_versions: - rhel-* decision_context: osci_compose_gate rules: - - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional} + - !PassingTestCaseRule {test_case_name: osci.brew-build./plans/tier1-public.functional} - !PassingTestCaseRule {test_case_name: osci.brew-build./plans/tier1-internal.functional} - - !PassingTestCaseRule {test_case_name: osci.brew-build./plans/public.functional} diff --git a/plans.fmf b/plans.fmf new file mode 100644 index 0000000..3615ed6 --- /dev/null +++ b/plans.fmf @@ -0,0 +1,35 @@ +/tier1-internal: + plan: + import: + url: https://gitlab.com/redhat/centos-stream/tests/cyrus-imapd.git + name: /plans/tier1/internal + +/tier1-public: + plan: + import: + url: https://gitlab.com/redhat/centos-stream/tests/cyrus-imapd.git + name: /plans/tier1/public + +/tier2-tier3-internal: + plan: + import: + url: https://gitlab.com/redhat/centos-stream/tests/cyrus-imapd.git + name: /plans/tier2-tier3/internal + +/tier2-tier3-public: + plan: + import: + url: https://gitlab.com/redhat/centos-stream/tests/cyrus-imapd.git + name: /plans/tier2-tier3/public + +/others-internal: + plan: + import: + url: https://gitlab.com/redhat/centos-stream/tests/cyrus-imapd.git + name: /plans/others/internal + +/others-public: + plan: + import: + url: https://gitlab.com/redhat/centos-stream/tests/cyrus-imapd.git + name: /plans/others/public \ No newline at end of file diff --git a/plans/all.fmf b/plans/all.fmf deleted file mode 100644 index 29b5c4f..0000000 --- a/plans/all.fmf +++ /dev/null @@ -1,6 +0,0 @@ -summary: Test plan with all Fedora tests -discover: - how: fmf - url: https://src.fedoraproject.org/tests/cyrus-imapd.git -execute: - how: tmt From cac73e1fb84517bbb79c5007c2823c834cfbaf17 Mon Sep 17 00:00:00 2001 From: Martin Osvald Date: Mon, 24 Nov 2025 07:58:01 +0100 Subject: [PATCH 12/15] Remove sscg option --package from cyrus-imapd-init.service (rhbz#2416688) Ref: https://sgallagh.wordpress.com/2025/10/23/sscg-4-0-0-release-announcement/ --- cyrus-imapd-init.service | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cyrus-imapd-init.service b/cyrus-imapd-init.service index 10823b7..3cecdea 100644 --- a/cyrus-imapd-init.service +++ b/cyrus-imapd-init.service @@ -9,4 +9,4 @@ ConditionPathExists=!/etc/pki/cyrus-imapd/cyrus-imapd-ca.pem Type=oneshot Group=mail RemainAfterExit=no -ExecStart=/usr/bin/sscg --package cyrus-imapd --cert-file /etc/pki/cyrus-imapd/cyrus-imapd.pem --cert-key-file /etc/pki/cyrus-imapd/cyrus-imapd-key.pem --ca-file /etc/pki/cyrus-imapd/cyrus-imapd-ca.pem --cert-key-mode=0640 +ExecStart=/usr/bin/sscg --cert-file /etc/pki/cyrus-imapd/cyrus-imapd.pem --cert-key-file /etc/pki/cyrus-imapd/cyrus-imapd-key.pem --ca-file /etc/pki/cyrus-imapd/cyrus-imapd-ca.pem --cert-key-mode=0640 From 65b8e0d76b345303c0ee694300d4e6ac29d79382 Mon Sep 17 00:00:00 2001 From: Martin Osvald Date: Fri, 12 Dec 2025 15:12:10 +0100 Subject: [PATCH 13/15] Create directory structure under /var using tmpfiles.d --- cyrus-imapd.spec | 4 ++-- cyrus-imapd.tmpfiles.conf | 5 ----- cyrus-imapd.sysusers => systemd-sysusers.conf | 0 systemd-tmpfiles.conf | 21 +++++++++++++++++++ 4 files changed, 23 insertions(+), 7 deletions(-) delete mode 100644 cyrus-imapd.tmpfiles.conf rename cyrus-imapd.sysusers => systemd-sysusers.conf (100%) create mode 100644 systemd-tmpfiles.conf diff --git a/cyrus-imapd.spec b/cyrus-imapd.spec index 3d285b2..f0c70c7 100644 --- a/cyrus-imapd.spec +++ b/cyrus-imapd.spec @@ -36,8 +36,8 @@ Source14: cyrus-imapd.cron-daily Source15: README.rpm Source16: cyrus-imapd.service Source17: cyrus-imapd-init.service -Source18: cyrus-imapd.tmpfiles.conf -Source19: cyrus-imapd.sysusers +Source18: systemd-tmpfiles.conf +Source19: systemd-sysusers.conf # A template config file for cassandane; we will substitute in varions values. Source81: cassandane.ini diff --git a/cyrus-imapd.tmpfiles.conf b/cyrus-imapd.tmpfiles.conf deleted file mode 100644 index 14a2791..0000000 --- a/cyrus-imapd.tmpfiles.conf +++ /dev/null @@ -1,5 +0,0 @@ -d /run/cyrus 0750 cyrus mail - -d /run/cyrus/db 0700 cyrus mail - -d /run/cyrus/lock 0700 cyrus mail - -d /run/cyrus/proc 0700 cyrus mail - -d /run/cyrus/socket 0750 cyrus mail - diff --git a/cyrus-imapd.sysusers b/systemd-sysusers.conf similarity index 100% rename from cyrus-imapd.sysusers rename to systemd-sysusers.conf diff --git a/systemd-tmpfiles.conf b/systemd-tmpfiles.conf new file mode 100644 index 0000000..10f80a3 --- /dev/null +++ b/systemd-tmpfiles.conf @@ -0,0 +1,21 @@ +d /run/cyrus 0750 cyrus mail - +d /run/cyrus/db 0700 cyrus mail - +d /run/cyrus/lock 0700 cyrus mail - +d /run/cyrus/proc 0700 cyrus mail - +d /run/cyrus/socket 0750 cyrus mail - +d /var/lib/imap 0750 cyrus mail - +d /var/lib/imap/backup 0700 cyrus mail - +d /var/lib/imap/db 0700 cyrus mail - +d /var/lib/imap/log 0700 cyrus mail - +d /var/lib/imap/meta 0700 cyrus mail - +d /var/lib/imap/md5 0700 cyrus mail - +d /var/lib/imap/msg 0700 cyrus mail - +d /var/lib/imap/proc 0700 cyrus mail - +d /var/lib/imap/ptclient 0700 cyrus mail - +d /var/lib/imap/quota 0700 cyrus mail - +d /var/lib/imap/rpm 0700 cyrus mail - +d /var/lib/imap/sieve 0700 cyrus mail - +d /var/lib/imap/socket 0750 cyrus mail - +d /var/lib/imap/sync 0700 cyrus mail - +d /var/lib/imap/user 0700 cyrus mail - +d /var/spool/imap 0700 cyrus mail - From 45c38600d423179f10a0d349468f7e8f52318f22 Mon Sep 17 00:00:00 2001 From: Martin Osvald Date: Fri, 12 Jul 2024 17:13:46 +0200 Subject: [PATCH 14/15] New version 3.12.1 (rhbz#2290535) Fix cassandane test failures --- .gitignore | 19 +- cassandane.ini | 9 +- cyrus-imapd.spec | 251 +++++++++--------- patch-cassandane-build-info.patch | 13 + patch-cassandane-no-syslog | 22 ++ patch-cassandane-xapian-delve-path | 15 -- ...laration-initialization-of-functions.patch | 35 --- patch-cyrus-perl-linking | 26 -- sources | 4 +- 9 files changed, 172 insertions(+), 222 deletions(-) create mode 100644 patch-cassandane-build-info.patch delete mode 100644 patch-cassandane-xapian-delve-path delete mode 100644 patch-cyrus-corrected-declaration-initialization-of-functions.patch delete mode 100644 patch-cyrus-perl-linking diff --git a/.gitignore b/.gitignore index ef9e8db..16a0be2 100644 --- a/.gitignore +++ b/.gitignore @@ -3,20 +3,5 @@ /.*.swp /results_cyrus-imapd/ /cyrus-imapd-*/ -/cassandane-testdata-ca669d4b.tar.gz -/cassandane-17d372f.tar.gz -/cyrus-imapd-3.2.4.tar.gz -/cassandane-8d3fced.tar.gz -/cyrus-imapd-3.2.6.tar.gz -/cyrus-imapd-3.4.3.tar.gz -/cyrus-imapd-3.4.4.tar.gz -/cyrus-imapd-3.6.0.tar.gz -/cyrus-imapd-3.6.0.tar.gz.sig -/cyrus-imapd-3.8.0.tar.gz -/cyrus-imapd-3.8.0.tar.gz.sig -/cyrus-imapd-3.8.1.tar.gz -/cyrus-imapd-3.8.1.tar.gz.sig -/cyrus-imapd-3.8.2.tar.gz -/cyrus-imapd-3.8.2.tar.gz.sig -/cyrus-imapd-3.8.3.tar.gz -/cyrus-imapd-3.8.3.tar.gz.sig +/cyrus-imapd-*.tar.gz +/cyrus-imapd-*.gz.sig diff --git a/cassandane.ini b/cassandane.ini index bbdb10c..ed9290e 100644 --- a/cassandane.ini +++ b/cassandane.ini @@ -4,6 +4,8 @@ # The idea here is to run tests on the just-compiled version of cyrus-imapd. # However, many of the build locations are just random temporary directories, and # so this requires some finesse. +# +# Example config: https://github.com/cyrusimap/cyrus-imapd/blob/master/cassandane/cassandane.ini.example [cassandane] rootdir = CASSDIR/work @@ -35,9 +37,10 @@ quota = cyr_quota # backupd = yes [config] -altnamespace = no -unixhierarchysep = no -client_timeout = 60 +# Keep altnamespace on by default, many tests fail when set to no +#altnamespace = no +#unixhierarchysep = no +#client_timeout = 60 #[caldavtalk] #basedir = CASSDIR/cassandane/testdata diff --git a/cyrus-imapd.spec b/cyrus-imapd.spec index f0c70c7..00a68aa 100644 --- a/cyrus-imapd.spec +++ b/cyrus-imapd.spec @@ -1,10 +1,16 @@ +#%%global prever rc1 + Name: cyrus-imapd -Version: 3.8.3 -Release: %autorelease +Version: 3.12.1 +Release: %autorelease %{?prever:-e %prever} Summary: A high-performance email, contacts and calendar server License: BSD-Attribution-HPND-disclaimer URL: http://www.cyrusimap.org/ +# cyrus-imapd does not to support LTO, but we keep it enabled +# https://github.com/cyrusimap/cyrus-imapd/pull/4679 +#%%define _lto_cflags %%{nil} + # UID/GID 76 have long been reserved for Cyrus %define uid 76 %define gid 76 @@ -18,14 +24,20 @@ URL: http://www.cyrusimap.org/ %global __provides_exclude ^perl\\(AnnotateInlinedCIDs\\)$ # Cassandane testsuite is no longer executed during build time. It is called from separate CI test: -# https://src.fedoraproject.org/tests/cyrus-imapd/blob/main/f/Sanity/cassandane +# +# https://gitlab.com/redhat/centos-stream/tests/cyrus-imapd/-/tree/main/Sanity/cassandane +# # Do not remove CASSANDANE* and CASSANDANE*_END tags - the content between them is extracted and executed inside the CI test. -# If you want to run cassandane locally: -# Run: `rpmbuild '--with cassandane'` or `echo '%%_with_cassandane 1' >> ~/.rpmmacros`. +# +# If you want to run cassandane manually through this spec file, run: +# # echo -e '%%_with_cassandane 1\n%%_topdir /tmp/rpmbuild' | sed -e 's/%//' >> ~/.rpmmacros +# # rpm -i cyrus-imapd-*.src.rpm +# # dnf builddep /tmp/rpmbuild/SPECS/cyrus-imapd.spec -y +# # rpmbuild -bi /tmp/rpmbuild/SPECS/cyrus-imapd.spec 2>&1 | tee build.log %bcond_with cassandane -Source0: https://github.com/cyrusimap/cyrus-imapd/releases/download/cyrus-imapd-%version/cyrus-imapd-%version.tar.gz -Source1: https://github.com/cyrusimap/cyrus-imapd/releases/download/cyrus-imapd-%version/cyrus-imapd-%version.tar.gz.sig +Source0: https://github.com/cyrusimap/cyrus-imapd/releases/download/cyrus-imapd-%version%{?prever:-%prever}/cyrus-imapd-%version%{?prever:-%prever}.tar.gz +Source1: https://github.com/cyrusimap/cyrus-imapd/releases/download/cyrus-imapd-%version%{?prever:-%prever}/cyrus-imapd-%version%{?prever:-%prever}.tar.gz.sig Source2: ellie-pub.key Source10: cyrus-imapd.logrotate Source11: cyrus-imapd.pam-config @@ -49,17 +61,12 @@ Patch1: patch-cyrus-default-configs # We rename quota to cyr_quota to avoid a conflict with /usr/bin/quota; one # place in the source must be patched to match. Patch2: patch-cyrus-rename-quota -# Workaround for some compiled Perl modules not being linked against -# libpcreposix, which causes them to fail to load. -# https://bugzilla.redhat.com/show_bug.cgi?id=1668723 -# https://github.com/cyrusimap/cyrus-imapd/issues/2629#issuecomment-456925909 -Patch3: patch-cyrus-perl-linking # cyrus-imapd does not support LTO # https://github.com/cyrusimap/cyrus-imapd/pull/4679 # Remove attribute always_inline to fix compilation error and keep LTO enabled: # https://bugzilla.redhat.com/show_bug.cgi?id=2223951 -Patch4: patch-cyrus-remove-always-inline-for-buf-len -Patch5: patch-cyrus-rename-imtest +Patch3: patch-cyrus-remove-always-inline-for-buf-len +Patch4: patch-cyrus-rename-imtest # Cassandane patches: # Prevent cassandane from trying to syslog things @@ -67,34 +74,28 @@ Patch91: patch-cassandane-no-syslog # Tell the annotator script to run as the current user/group # Upstream ticket https://github.com/cyrusimap/cyrus-imapd/issues/1995 Patch92: patch-cassandane-fix-annotator -# TODO libexec/cyrus-imapd path element got into upstream: -# https://github.com/cyrusimap/cyrus-imapd/commit/9233f70bf7a2872ab0b456ea294ce36e0e01e182 -# try to get fixed the below upstream to work on Fedora: -# https://github.com/cyrusimap/cyrus-imapd/commit/f10eee167313418d84e63d215310477d4fe68e94 -Patch93: patch-cassandane-xapian-delve-path -Patch94: patch-cyrus-corrected-declaration-initialization-of-functions.patch +# Due to the /usr/sbin->/usr/bin merge, add /usr/bin path to the mix +Patch93: patch-cassandane-build-info.patch BuildRequires: autoconf automake bison flex gcc gcc-c++ git glibc-langpack-en -BuildRequires: groff libtool make pkgconfig rsync systemd -BuildRequires: perl-devel perl-generators perl(ExtUtils::MakeMaker) -BuildRequires: perl(Pod::Html) +BuildRequires: groff libtool make perl-devel perl(ExtUtils::MakeMaker) +BuildRequires: perl-generators perl(Pod::Html) pkgconfig rsync systemd +BuildRequires: systemd-rpm-macros xxd +BuildRequires: CUnit-devel cyrus-sasl-devel glib2-devel +BuildRequires: jansson-devel krb5-devel libical-devel libicu-devel +BuildRequires: libnghttp2-devel libpq-devel libxml2-devel +BuildRequires: mariadb-connector-c-devel net-snmp-devel +BuildRequires: openldap-devel openssl-devel pcre2-devel +BuildRequires: sqlite-devel wslay-devel xapian-core-devel +# Miscellaneous modules needed for 'make check' to function: +BuildRequires: cyrus-sasl-plain cyrus-sasl-md5 +%if 0%{?fedora} +BuildRequires: clamav-devel shapelib-devel +%endif %if 0%{?fedora} || 0%{?rhel} > 8 BuildRequires: gnupg2 %endif -%if 0%{?fedora} -BuildRequires: clamav-devel shapelib-devel -%endif -BuildRequires: CUnit-devel cyrus-sasl-devel glib2-devel -BuildRequires: jansson-devel krb5-devel libical-devel libicu-devel -BuildRequires: libnghttp2-devel libxml2-devel mariadb-connector-c-devel net-snmp-devel -BuildRequires: openldap-devel openssl-devel pcre2-devel libpq-devel -BuildRequires: sqlite-devel xapian-core-devel - -# Miscellaneous modules needed for 'make check' to function: -BuildRequires: cyrus-sasl-plain cyrus-sasl-md5 - -BuildRequires: systemd-rpm-macros %if %{with cassandane} # Additional packages required for cassandane to function @@ -204,6 +205,7 @@ BuildRequires: perl(version) BuildRequires: perl(warnings) BuildRequires: perl(XML::DOM) BuildRequires: perl(XML::Generator) +BuildRequires: perl(XML::Simple) BuildRequires: perl(XML::Spice) # These were reported as missing during the build itself BuildRequires: perl(DBD::SQLite) @@ -239,7 +241,7 @@ is through software using the IMAP, IMAPS, JMAP, POP3, POP3S, KPOP, CalDAV and/or CardDAV protocols. The private mailbox database design gives the Cyrus IMAP server large -advantages in efficiency, scalability, and administratability. Multiple +advantages in efficiency, scalability, and administrability. Multiple concurrent read/write connections to the same mailbox are permitted. The server supports access control lists on mailboxes and storage quotas on mailbox hierarchies. @@ -303,7 +305,7 @@ This package contains Perl libraries used to interface with Cyrus IMAPd. %{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}' %endif -%autosetup -p1 +%autosetup -p1 -n cyrus-imapd-%{version}%{?prever:-%{prever}} # https://github.com/cyrusimap/cyrus-imapd/commit/216934c3f4884999206715db3499fc0162e1d65c echo %version > VERSION @@ -336,11 +338,10 @@ sed -i \ %if %{with cassandane} pushd cassandane -mkdir work cp %SOURCE81 cassandane.ini # RF rpm-buildroot-usage sed -i \ - -e "s!CASSDIR!$(pwd)!" \ + -e "s!CASSDIR!/tmp/cassandane!" \ -e "s!BUILDROOT!%buildroot!" \ cassandane.ini popd @@ -348,7 +349,7 @@ popd %build -#autoreconf -vi +autoreconf --verbose --force --install %if %{with cassandane} && 0%{?fedora} # Needed for Cyrus::FastMail tests to pass @@ -376,7 +377,6 @@ export CLD2_LIBS="-lcld2" --with-syslogfacility=MAIL \ \ --enable-autocreate \ - --enable-backup \ --enable-calalarmd \ --enable-http \ --enable-idled \ @@ -416,6 +416,52 @@ yes | cpan -T IO::File::fcntl pushd cassandane export NOCYRUS=1 make + +export IMAPTEST_COMMIT=44ff753f51d1a767b8d71b04e882847664d9f0c8 + +# Do not depend on imaptest package (missing on RHEL10) +wget https://github.com/dovecot/imaptest/archive/$IMAPTEST_COMMIT/imaptest-$IMAPTEST_COMMIT.tar.gz +rm -rf imaptest-src +mkdir imaptest-src +tar -xf imaptest-$IMAPTEST_COMMIT.tar.gz --strip-components=1 -C imaptest-src +pushd imaptest-src +cat <<'EOF_so-file.patch' > so-file.patch +From 39d3dcc8f8ae4e7e751cb0ba633301630e32f54e Mon Sep 17 00:00:00 2001 +From: Aki Tuomi +Date: Tue, 20 May 2025 11:47:24 +0300 +Subject: [PATCH] configure: Use libssl_iostream_openssl.so with installed + dovecot + +--- + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index d8c3405..df881b5 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -25,8 +25,8 @@ AS_IF([test "$DOVECOT_INSTALLED" = 'no'], [ + LIBDOVECOT=$abs_dovecotdir/src/lib-dovecot/libdovecot.la + LIBDOVECOT_SSL=$abs_dovecotdir/src/lib-ssl-iostream/libssl_iostream_openssl.la + ], [ +- LIBDOVECOT=$dovecot_pkglibdir/libdovecot.la +- LIBDOVECOT_SSL=$dovecot_moduledir/libssl_iostream_openssl.la ++ LIBDOVECOT=$dovecot_pkglibdir/libdovecot.so ++ LIBDOVECOT_SSL=$dovecot_moduledir/libssl_iostream_openssl.so + ]) + AC_SUBST([LIBDOVECOT_SSL]) +EOF_so-file.patch +patch -p1 < so-file.patch +autoreconf -i +# Workaround for https://bugzilla.redhat.com/show_bug.cgi?id=1103927#c4 (and later) +sed -e 's@\(^LIBDOVECOT .*\)@\1 -Wl,-rpath -Wl,/usr/lib64/dovecot@' -i src/Makefile.in +./configure --with-dovecot=/usr/lib64/dovecot +make +popd + +mkdir -p imaptest/src +ln -sfr ./imaptest-src/src/imaptest imaptest/src +ln -sfr ./imaptest-src/src/tests imaptest/src popd %endif # CASSANDANE_BUILD_END @@ -478,6 +524,7 @@ install -p -D -m 644 %{SOURCE19} %{buildroot}%{_sysusersdir}/cyrus-imapd.conf find doc perl -name CVS -type d -prune -exec rm -rf {} \; find doc perl -name .cvsignore -type f -exec rm -f {} \; rm -f doc/Makefile.dist* +rm -f doc/html/.buildinfo rm -f doc/text/htmlstrip.c rm -f doc/text/Makefile rm -rf doc/man @@ -501,15 +548,11 @@ find %buildroot/%_libdir/perl5/ -type f -name "*.so" -exec chmod 755 {} \; # Actual binary conflicts # Rename 'fetchnews' binary and manpage to avoid clash with leafnode -mv %buildroot/%_sbindir/fetchnews %buildroot/%_sbindir/cyr_fetchnews +mv %buildroot/%_bindir/fetchnews %buildroot/%_bindir/cyr_fetchnews mv %buildroot/%_mandir/man8/fetchnews.8 %buildroot/%_mandir/man8/cyr_fetchnews.8 -# Fix conflict with dump -mv %buildroot/%_sbindir/restore %buildroot/%_sbindir/cyr_restore -mv %buildroot/%_mandir/man8/restore.8 %buildroot/%_mandir/man8/cyr_restore.8 - # Fix conceptual conflict with quota -mv %buildroot/%_sbindir/quota %buildroot/%_sbindir/cyr_quota +mv %buildroot/%_bindir/quota %buildroot/%_bindir/cyr_quota mv %buildroot/%_mandir/man8/quota.8 %buildroot/%_mandir/man8/cyr_quota.8 # fix conflicts with uw-imap @@ -558,25 +601,27 @@ chmod -x %buildroot/%perl_vendorlib/Cyrus/Annotator/Daemon.pm %check +# TODO: unit tests fail on i686 - https://github.com/cyrusimap/cyrus-imapd/issues/5431 +%ifnarch i686 +LD_LIBRARY_PATH=%buildroot/%_libdir make -j%{?_smp_build_ncpus} check || exit 1 +%endif + %if %{without cassandane} exit 0 %endif -%ifarch %{ix86} armv7hl -exit 0 -%endif - -# TODO: The mime_boundary_extended cunit test fails due to LTO on ppc64le, skip it for now: -%ifnarch ppc64le -LD_LIBRARY_PATH=%buildroot/%_libdir make -j%{?_smp_build_ncpus} check || exit 1 -%endif - -# Cassandane cannot run solely as root because imap services would otherwise quit: +# Create user&group for Cassandane. Cassandane cannot run solely as root because imap services would otherwise quit: #$ grep -R "must run as the Cyrus user" | egrep "imapd|httpd|pop3d" #imap/imapd.c: if (geteuid() == 0) fatal("must run as the Cyrus user", EX_USAGE); #imap/httpd.c: if (geteuid() == 0) fatal("must run as the Cyrus user", EX_USAGE); #imap/pop3d.c: if (geteuid() == 0) fatal("must run as the Cyrus user", EX_USAGE); getent group saslauth >/dev/null || /usr/sbin/groupadd -g %gid -r saslauth +getent passwd saslauth >/dev/null && ( + # Workaround for systemd-sysusers bug: https://github.com/systemd/systemd/issues/37495 + # If cyrus-sasl package is installed first, it creates user saslauth with UID 76 instead of only group. + usermod -g users saslauth + userdel saslauth +) # Set up shell and home directory for cyrus so that debugging of failing tests is easier. getent passwd cyrus >/dev/null && /usr/sbin/usermod -s /bin/bash cyrus getent passwd cyrus >/dev/null || /usr/sbin/useradd -c "Cyrus IMAP Server" -d /var/lib/imap -g %cyrusgroup \ @@ -585,38 +630,19 @@ getent passwd cyrus >/dev/null || /usr/sbin/useradd -c "Cyrus IMAP Server" -d /v # Set LD_LIBRARY_PATH for cyrus so that it points to cyrus-imapd libraries we just built. [ -z "`grep LD_LIBRARY_PATH /var/lib/imap/.bashrc`" ] && echo "export LD_LIBRARY_PATH=%buildroot/%_libdir" >> /var/lib/imap/.bashrc -# CASSANDANE -# TODO: Temporary workaround for missing mail::IMAPTalk methods. -# https://github.com/robmueller/mail-imaptalk/commit/0cf2624edca6fc0dd1cdc851a8710af928ba1f1e -dnf downgrade -y https://kojipkgs.fedoraproject.org//packages/perl-Mail-IMAPTalk/4.04/22.fc39/noarch/perl-Mail-IMAPTalk-4.04-22.fc39.noarch.rpm +mkdir -p /tmp/cassandane/work +chown -R %cyrususer:%cyrusgroup /tmp/cassandane/ +# CASSANDANE # Run the Cassandane test suite. This will exhaustively test the various # server components, but running it in a mock chroot is rather an exercise. pushd cassandane -# Do not depend on imaptest package (missing on RHEL10) -wget https://dovecot.org/nightly/imaptest/imaptest-20210511.tar.gz -rm -rf imaptest-src -mkdir imaptest-src -tar -xf imaptest-20210511.tar.gz --strip-components=1 -C imaptest-src -pushd imaptest-src -# Workaround for https://bugzilla.redhat.com/show_bug.cgi?id=1103927#c4 (and later) -sed -e 's@\(^LIBDOVECOT .*\)@\1 -Wl,-rpath -Wl,/usr/lib64/dovecot@' -i src/Makefile.in -./configure --with-dovecot=/usr/lib64/dovecot -make -popd - -mkdir -p imaptest/src -ln -sfr ./imaptest-src/src/imaptest imaptest/src -ln -sfr ./imaptest-src/src/tests imaptest/src - -chown -R cyrus:mail . - # Construct the set of excluded tests to pass to Cassandane # --------------------------------------------------------- exclude=() tests=( - # This exclusion list was verified on 2024-06-10. + # This exclusion list was verified on 2025-12-19. # This tests coredumping and won't work on a machine where systemd # intercepts coredumps, which includes our builders. @@ -624,43 +650,26 @@ tests=( # Can't currently be run at build time because of compiled-in paths. See # https://github.com/cyrusimap/cyrus-imapd/issues/2386 - Admin.imap_admins + Cyrus::Admin.imap_admins + Cyrus::Admin.imap_admins_virtdomains # TODO currently failing - Cyrus::Flags.userflags_crash - Cyrus::JMAPCore.eventsource - Cyrus::JMAPEmail.email_query_no_guidsearch_ignore_jmapuploads - Cyrus::JMAPEmail.email_query_seen_multimbox - Cyrus::JMAPEmail.email_query_unicodefdfx - Cyrus::JMAPMailbox.mailbox_ignore_notes_subfolders - Cyrus::JMAPMailbox.mailbox_set_create_specialuse_nochildren - Cyrus::JMAPMailbox.mailbox_set_sharewith_acl - Cyrus::JMAPSieve.getmetadata + Cyrus::Caldav.freebusy_empty_rrule + Cyrus::ImapTest.urlauth2 + Cyrus::IMAPLimits.maxargssize_append_flags + Cyrus::JMAPCalendars.calendarevent_guesstz_ignore_xjmapid + Cyrus::JMAPCalendars.itip_ignore_invalid_timezone + Cyrus::JMAPEmail.email_query_emailaddress + Cyrus::JMAPEmail.email_query_messageid + Cyrus::LibCyrus.example_libcyrus + Cyrus::LibCyrus.example_libcyrus_min + Cyrus::SearchFuzzy.dedup_part_compact + Cyrus::SearchFuzzy.dedup_part_index + Cyrus::SearchFuzzy.index_tier_audit_bug Cyrus::SearchSquat.nonincremental Cyrus::SearchSquat.incremental Cyrus::SearchSquat.one_doc_per_message - - # The following fail only on f41 (f39,f40 pass) - # These time out: - Cyrus::Annotator.add_annot_deliver - Cyrus::Annotator.add_annot_splitconv - Cyrus::Annotator.add_annot_deliver_tomailbox - Cyrus::Annotator.add_annot_splitconv_rerun - Cyrus::Annotator.annotator_callout_disabled - Cyrus::Annotator.fetch_after_annotate - Cyrus::Annotator.reconstruct_after_delivery - Cyrus::Annotator.set_system_flag_deliver - Cyrus::Annotator.set_user_flag_deliver - Cyrus::Master.service_unix - # This unexpectedly ends with unsolicited response: - Cyrus::Idle.idled_default_timeout - # These end with 'BYE Fatal error: socket path too long' - Cyrus::MurderIMAP.frontend_commands - Cyrus::MurderIMAP.list_specialuse - Cyrus::MurderIMAP.move_to_backend_nonexistent - Cyrus::MurderIMAP.move_to_nonexistent - Cyrus::MurderIMAP.rename_with_location - Cyrus::MurderIMAP.xlist + Cyrus::Simple.sasl_ir ) for i in ${tests[@]}; do exclude+=("!$i"); done @@ -692,12 +701,11 @@ sudo -u cyrus -g mail LD_LIBRARY_PATH=%buildroot/%_libdir ./testrunner.pl -j%{?_ # CASSANDANE_END if [ -s "work/failed" ]; then - cat work/failed - exit 1 + cat work/failed + exit 1 fi - %post %systemd_post cyrus-imapd.service @@ -714,7 +722,6 @@ fi %{_sbindir}/arbitron %{_sbindir}/chk_cyrus -%{_sbindir}/ctl_backups %{_sbindir}/ctl_conversationsdb %{_sbindir}/ctl_cyrusdb %{_sbindir}/ctl_deliver @@ -722,7 +729,6 @@ fi %{_sbindir}/ctl_zoneinfo %{_sbindir}/cvt_cyrusdb %{_sbindir}/cvt_xlist_specialuse -%{_sbindir}/cyr_backup %{_sbindir}/cyr_buildinfo %{_sbindir}/cyr_cd.sh %{_sbindir}/cyr_dbtool @@ -734,9 +740,9 @@ fi %{_sbindir}/cyr_ls %{_sbindir}/cyr_pwd %{_sbindir}/cyr_quota -%{_sbindir}/cyr_restore %{_sbindir}/cyr_synclog %{_sbindir}/cyr_userseen +%{_sbindir}/cyr_withlock_run %{_sbindir}/cyrdump %{_sbindir}/dav_reconstruct %{_sbindir}/deliver @@ -759,11 +765,9 @@ fi %{_mandir}/man1/dav_reconstruct.1* %{_mandir}/man5/cyrus.conf.5* %{_mandir}/man5/imapd.conf.5* -%{_mandir}/man5/krb.equiv.5* %{_mandir}/man8/arbitron.8* -%{_mandir}/man8/backupd.8* +%{_mandir}/man8/calalarmd.8* %{_mandir}/man8/chk_cyrus.8* -%{_mandir}/man8/ctl_backups.8* %{_mandir}/man8/ctl_conversationsdb.8* %{_mandir}/man8/ctl_cyrusdb.8* %{_mandir}/man8/ctl_deliver.8* @@ -771,7 +775,6 @@ fi %{_mandir}/man8/ctl_zoneinfo.8* %{_mandir}/man8/cvt_cyrusdb.8* %{_mandir}/man8/cvt_xlist_specialuse.8* -%{_mandir}/man8/cyr_backup.8* %{_mandir}/man8/cyr_buildinfo.8* %{_mandir}/man8/cyr_dbtool.8* %{_mandir}/man8/cyr_deny.8* @@ -781,9 +784,9 @@ fi %{_mandir}/man8/cyr_info.8* %{_mandir}/man8/cyr_ls.8* %{_mandir}/man8/cyr_quota.8* -%{_mandir}/man8/cyr_restore.8* %{_mandir}/man8/cyr_synclog.8* %{_mandir}/man8/cyr_userseen.8* +%{_mandir}/man8/cyr_withlock_run.8* %{_mandir}/man8/cyradm.8* %{_mandir}/man8/cyrdump.8* %{_mandir}/man8/deliver.8* diff --git a/patch-cassandane-build-info.patch b/patch-cassandane-build-info.patch new file mode 100644 index 0000000..62f1e68 --- /dev/null +++ b/patch-cassandane-build-info.patch @@ -0,0 +1,13 @@ +diff --git a/cassandane/Cassandane/BuildInfo.pm b/cassandane/Cassandane/BuildInfo.pm +index f98bf2d..19720ec 100644 +--- a/cassandane/Cassandane/BuildInfo.pm ++++ b/cassandane/Cassandane/BuildInfo.pm +@@ -71,7 +71,7 @@ sub _read_buildinfo + my ($destdir, $prefix) = @_; + + my $cyr_buildinfo; +- foreach my $bindir (qw(sbin cyrus/bin)) { ++ foreach my $bindir (qw(bin sbin cyrus/bin)) { + my $p = "$destdir$prefix/$bindir/cyr_buildinfo"; + if (-x $p) { + $cyr_buildinfo = $p; diff --git a/patch-cassandane-no-syslog b/patch-cassandane-no-syslog index 556bdf4..a610726 100644 --- a/patch-cassandane-no-syslog +++ b/patch-cassandane-no-syslog @@ -55,3 +55,25 @@ index 20d3763..0238d82 100644 +{ + fake_vsyslog(priority, format, ap); } +diff --git a/cassandane/Cassandane/Instance.pm b/cassandane/Cassandane/Instance.pm +index 77ddd54..3162fc6 100644 +--- a/cassandane/Cassandane/Instance.pm ++++ b/cassandane/Cassandane/Instance.pm +@@ -2347,17 +2347,6 @@ sub setup_syslog_replacement + return; + } + +- # Can't reliably replace syslog when source fortification is in play, +- # and syslog_probe can't reliably detect whether the replacement has +- # worked or not in this case, so just turn syslog replacement off if +- # we detect source fortification +- if ($self->{buildinfo}->get('version', 'FORTIFY_LEVEL')) { +- xlog "Cyrus was built with -D_FORTIFY_SOURCE"; +- xlog "tests will not examine syslog output"; +- $self->{have_syslog_replacement} = 0; +- return; +- } +- + $self->{syslog_fname} = "$self->{basedir}/conf/log/syslog"; + $self->{have_syslog_replacement} = 1; + diff --git a/patch-cassandane-xapian-delve-path b/patch-cassandane-xapian-delve-path deleted file mode 100644 index 2ca64eb..0000000 --- a/patch-cassandane-xapian-delve-path +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/cassandane/Cassandane/Instance.pm b/cassandane/Cassandane/Instance.pm -index 78e7100..edf6f5d 100644 ---- a/cassandane/Cassandane/Instance.pm -+++ b/cassandane/Cassandane/Instance.pm -@@ -492,9 +492,7 @@ sub _find_binary - my $base = $self->{cyrus_destdir} . $self->{cyrus_prefix}; - - if ($name eq 'delve') { -- my $lib = `ldd $base/libexec/imapd` || die "can't ldd imapd"; -- $lib =~ m{(/\S+)/lib/libxapian-([0-9.]+)\.so}; -- return "$1/bin/xapian-delve-$2"; -+ return "/bin/xapian-delve"; - } - - foreach (qw( bin sbin libexec libexec/cyrus-imapd lib cyrus/bin )) diff --git a/patch-cyrus-corrected-declaration-initialization-of-functions.patch b/patch-cyrus-corrected-declaration-initialization-of-functions.patch deleted file mode 100644 index f87fe6a..0000000 --- a/patch-cyrus-corrected-declaration-initialization-of-functions.patch +++ /dev/null @@ -1,35 +0,0 @@ -diff --git a/imap/httpd.h b/imap/httpd.h -index 67279a9..c381b02 100644 ---- a/imap/httpd.h -+++ b/imap/httpd.h -@@ -280,7 +280,7 @@ struct range { - - struct patch_doc_t { - const char *format; /* MIME format of patch document */ -- int (*proc)(); /* Function to parse and apply doc */ -+ int (*proc)(struct transaction_t *, void *); /* Function to parse and apply doc */ - }; - - typedef int (*encode_proc_t)(struct transaction_t *txn, -diff --git a/imap/zoneinfo_db.c b/imap/zoneinfo_db.c -index 3be631c..92584d6 100644 ---- a/imap/zoneinfo_db.c -+++ b/imap/zoneinfo_db.c -@@ -243,7 +243,7 @@ struct findrock { - const char *find; - int tzid_only; - time_t changedsince; -- int (*proc)(); -+ int (*proc)(const char *, int, struct zoneinfo *, void *); - void *rock; - }; - -@@ -302,7 +302,7 @@ static int find_cb(void *rock, - } - - EXPORTED int zoneinfo_find(const char *find, int tzid_only, time_t changedsince, -- int (*proc)(), void *rock) -+ int (*proc)(const char *tzid, int tzidlen, struct zoneinfo *zi, void *rock), void *rock) - { - struct findrock frock; - diff --git a/patch-cyrus-perl-linking b/patch-cyrus-perl-linking deleted file mode 100644 index c8cbcfd..0000000 --- a/patch-cyrus-perl-linking +++ /dev/null @@ -1,26 +0,0 @@ -diff --git a/perl/sieve/managesieve/Makefile.PL.in b/perl/sieve/managesieve/Makefile.PL.in -index 7180b98..d589ebe 100644 ---- a/perl/sieve/managesieve/Makefile.PL.in -+++ b/perl/sieve/managesieve/Makefile.PL.in -@@ -69,7 +69,7 @@ WriteMakefile( - 'ABSTRACT' => 'Cyrus Sieve management interface', - 'VERSION_FROM' => "@top_srcdir@/perl/sieve/managesieve/managesieve.pm", # finds $VERSION - 'MYEXTLIB' => '../lib/.libs/libisieve.a @top_builddir@/perl/.libs/libcyrus.a @top_builddir@/perl/.libs/libcyrus_min.a', -- 'LIBS' => ["$LIB_SASL @SSL_LIBS@ @LIB_UUID@ @LIB_REGEX@ @ZLIB@ @SQLITE_LIBADD@ @MYSQL_LIBADD@ @PGSQL_LIBADD@"], -+ 'LIBS' => ["$LIB_SASL @SSL_LIBS@ @LIB_UUID@ @LIB_REGEX@ @ZLIB@ @SQLITE_LIBADD@ @MYSQL_LIBADD@ @PGSQL_LIBADD@ -lpcre2-posix"], - 'CCFLAGS' => '@GCOV_CFLAGS@', - 'DEFINE' => '-DPERL_POLLUTE', # e.g., '-DHAVE_SOMETHING' - 'INC' => "-I@top_srcdir@/lib -I@top_srcdir@/perl/sieve -I@top_srcdir@/perl/sieve/lib @SASLFLAGS@ @SSL_CPPFLAGS@", -diff --git a/perl/imap/Makefile.PL.in b/perl/imap/Makefile.PL.in -index 71416cc..f76cda6 100644 ---- a/perl/imap/Makefile.PL.in -+++ b/perl/imap/Makefile.PL.in -@@ -91,7 +91,7 @@ WriteMakefile( - 'LD' => $Config{ld} . ' @GCOV_LDFLAGS@', - 'OBJECT' => 'IMAP.o', - 'MYEXTLIB' => '@top_builddir@/perl/.libs/libcyrus.a @top_builddir@/perl/.libs/libcyrus_min.a', -- 'LIBS' => [ "$LIB_SASL @SSL_LIBS@ @LIB_UUID@ @ZLIB@ @GCOV_LIBS@ @LIBCAP_LIBS@"], -+ 'LIBS' => [ "$LIB_SASL @SSL_LIBS@ @LIB_UUID@ @ZLIB@ @GCOV_LIBS@ @LIBCAP_LIBS@ -lpcre2-posix"], - 'DEFINE' => '-DPERL_POLLUTE', # e.g., '-DHAVE_SOMETHING' - 'INC' => "-I@top_srcdir@ -I@top_srcdir@/com_err/et @SASLFLAGS@ @SSL_CPPFLAGS@ @GCOV_CFLAGS@ -I@top_srcdir@/perl/imap", - 'EXE_FILES' => [cyradm], diff --git a/sources b/sources index e33c6fc..c9b65e3 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (cyrus-imapd-3.8.3.tar.gz) = 6af60863ae2b8491bc36c74a760c080c94fa163851877976c33c43793409723660293ad469d1547e779d39b35a36c7c2d7ae7352260a9e8af18cb9f3fa566a1a -SHA512 (cyrus-imapd-3.8.3.tar.gz.sig) = f8bc7172b9f9f70bb3533efcd9f556c6b0c9a9c0e568b0585a0d8ba790ad57a732e918f12b5711c165d3ad806bd55d1ab52e396a91255f43a7da188be1a11c43 +SHA512 (cyrus-imapd-3.12.1.tar.gz) = ec2727eb0567ebf978ff4db9e9086bc01fdc2739b6e06cad73cf74f9af990c30a70130aa2474d822d8ca078e1012a60179101de90845bf40f7a9b47a8b5e4d92 +SHA512 (cyrus-imapd-3.12.1.tar.gz.sig) = a548769b7443a179cbfeabd20fce113d94b9ccbf134aab3c6aa5197edcad41f1a73f1d28ba8e2b80046457053949344385ca68b22489d47721d4760e42cd4dd4 From 27c9e2b2436560e2759406f28b31b6644d1ffbd6 Mon Sep 17 00:00:00 2001 From: Martin Osvald Date: Wed, 7 Jan 2026 14:50:23 +0100 Subject: [PATCH 15/15] Fix FTBFS due to gcc 16 on rawhide --- cyrus-imapd.spec | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cyrus-imapd.spec b/cyrus-imapd.spec index 00a68aa..b45d639 100644 --- a/cyrus-imapd.spec +++ b/cyrus-imapd.spec @@ -357,6 +357,9 @@ export CLD2_CFLAGS="-I/usr/include/cld2" export CLD2_LIBS="-lcld2" %endif +# C++17 or later needed for libicu-devel +export CXXFLAGS="%{optflags} -std=gnu++17" + %configure \ --disable-silent-rules \ \