Compare commits

...
Sign in to create a new pull request.

15 commits

Author SHA1 Message Date
Martin Osvald
27c9e2b243 Fix FTBFS due to gcc 16 on rawhide 2026-01-07 14:50:23 +01:00
Martin Osvald
45c38600d4 New version 3.12.1 (rhbz#2290535)
Fix cassandane test failures
2026-01-07 11:39:49 +01:00
Martin Osvald
65b8e0d76b Create directory structure under /var using tmpfiles.d 2025-12-12 15:12:10 +01:00
Martin Osvald
cac73e1fb8 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/
2025-11-24 07:58:01 +01:00
František Hrdina
adaa751944 Update of fmf plans 2025-08-12 09:50:44 +02:00
František Zatloukal
ec9a720aee Rebuilt for icu 77.1 2025-08-06 09:52:54 +02:00
Fedora Release Engineering
0a4d6d316a Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild 2025-07-23 18:58:33 +00:00
Jitka Plesnikova
0d1778b5d4 Perl 5.42 rebuild 2025-07-08 14:25:18 +02:00
Zbigniew Jędrzejewski-Szmek
c33ad39dd5 Drop call to %sysusers_create_compat
After https://fedoraproject.org/wiki/Changes/RPMSuportForSystemdSysusers,
rpm will handle account creation automatically.
2025-02-11 14:36:23 +01:00
Joe Orton
234d299804 - enable the idled daemon in the default cyrus.conf 2025-01-28 06:41:21 +00:00
Nikita Sanjay Patwa
e188d2585e Corrected the declaration and defination of patch_doc_t and find_cb 2025-01-27 14:54:50 +05:30
Fedora Release Engineering
32d115906f Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild 2025-01-16 15:09:06 +00:00
Pete Walter
c8494b5a17 Rebuild for ICU 76 2024-12-08 22:08:58 +00:00
Orion Poplawski
9085a5dda2 Rebuild for clamav 1.4.1 2024-10-24 21:23:58 -06:00
Richard W.M. Jones
978b5ce25f Rebuild for Jansson 2.14 (https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/3PYINSQGKQ4BB25NQUI2A2UCGGLAG5ND/) 2024-10-22 16:53:21 +01:00
17 changed files with 266 additions and 231 deletions

19
.gitignore vendored
View file

@ -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

View file

@ -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

1
ci.fmf Normal file
View file

@ -0,0 +1 @@
resultsdb-testcase: separate

View file

@ -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

View file

@ -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
@ -36,8 +48,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
@ -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,33 +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
# 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
@ -203,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)
@ -213,9 +216,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}
@ -240,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.
@ -304,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
@ -337,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
@ -349,7 +349,7 @@ popd
%build
#autoreconf -vi
autoreconf --verbose --force --install
%if %{with cassandane} && 0%{?fedora}
# Needed for Cyrus::FastMail tests to pass
@ -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 \
\
@ -377,7 +380,6 @@ export CLD2_LIBS="-lcld2"
--with-syslogfacility=MAIL \
\
--enable-autocreate \
--enable-backup \
--enable-calalarmd \
--enable-http \
--enable-idled \
@ -417,6 +419,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 <aki.tuomi@open-xchange.com>
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
@ -479,6 +527,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
@ -502,15 +551,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
@ -559,25 +604,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 \
@ -586,38 +633,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.
@ -625,43 +653,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
@ -693,14 +704,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
%pre
%sysusers_create_compat %{SOURCE19}
%post
%systemd_post cyrus-imapd.service
@ -717,7 +725,6 @@ fi
%{_sbindir}/arbitron
%{_sbindir}/chk_cyrus
%{_sbindir}/ctl_backups
%{_sbindir}/ctl_conversationsdb
%{_sbindir}/ctl_cyrusdb
%{_sbindir}/ctl_deliver
@ -725,7 +732,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
@ -737,9 +743,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
@ -762,11 +768,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*
@ -774,7 +778,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*
@ -784,9 +787,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*

View file

@ -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 -

View file

@ -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}

View file

@ -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;

View file

@ -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;

View file

@ -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 ))

View file

@ -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

View file

@ -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],

35
plans.fmf Normal file
View file

@ -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

View file

@ -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

View file

@ -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

21
systemd-tmpfiles.conf Normal file
View file

@ -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 -