Cassandane related improvements
Cassandane: Sync split CI test and spec file Cassandane: Fully turn off sending messages through syslog() and allow syslog dependent tests to pass Cassandane: Enable building with cld2 support to fix failing tests
This commit is contained in:
parent
473e4cdd2a
commit
f8deeb399d
@ -1,12 +1,14 @@
|
|||||||
%global testdata_commit ca669d4b76c71cbeb4fa840e263e2c031e19ea88
|
%global testdata_commit ca669d4b76c71cbeb4fa840e263e2c031e19ea88
|
||||||
%global testdata_short %(echo %{testdata_commit} | cut -c -8)
|
%global testdata_short %(echo %{testdata_commit} | cut -c -8)
|
||||||
|
|
||||||
# Cassandane was split into separate CI test, run '--with cassandane' to enable it.
|
# Cassandane was split into separate CI test:
|
||||||
|
# https://src.fedoraproject.org/tests/cyrus-imapd/blob/main/f/Sanity/cassandane
|
||||||
|
# Run rpmbuild '--with cassandane' to enable it.
|
||||||
%bcond_with cassandane
|
%bcond_with cassandane
|
||||||
|
|
||||||
Name: cyrus-imapd
|
Name: cyrus-imapd
|
||||||
Version: 3.6.0
|
Version: 3.6.0
|
||||||
Release: 3%{?dist}
|
Release: 4%{?dist}
|
||||||
|
|
||||||
%define ssl_pem_file_prefix /etc/pki/%name/%name
|
%define ssl_pem_file_prefix /etc/pki/%name/%name
|
||||||
|
|
||||||
@ -137,6 +139,7 @@ BuildRequires: clamav-data perl(Unix::Syslog)
|
|||||||
BuildRequires: perl(HTTP::Daemon) perl(DBI) perl(Net::LDAP::Constant)
|
BuildRequires: perl(HTTP::Daemon) perl(DBI) perl(Net::LDAP::Constant)
|
||||||
BuildRequires: perl(Net::LDAP::Server)
|
BuildRequires: perl(Net::LDAP::Server)
|
||||||
BuildRequires: perl(Module::Load::Conditional)
|
BuildRequires: perl(Module::Load::Conditional)
|
||||||
|
BuildRequires: cpan cld2-devel
|
||||||
|
|
||||||
# These were only for JMAP-Tester
|
# These were only for JMAP-Tester
|
||||||
# perl(Moo), perl(Moose), perl(MooseX::Role::Parameterized) perl(Throwable), perl(Safe::Isa)
|
# perl(Moo), perl(Moose), perl(MooseX::Role::Parameterized) perl(Throwable), perl(Safe::Isa)
|
||||||
@ -297,16 +300,26 @@ sed -i \
|
|||||||
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
|
%if %{with cassandane}
|
||||||
|
# This module is not available in Fedora:
|
||||||
|
yes | cpan IO::File::fcntl
|
||||||
|
|
||||||
# This is the test suite, which doesn't build much but does verify its dependencies.
|
# This is the test suite, which doesn't build much but does verify its dependencies.
|
||||||
# If this is done after the configure call, the one thing it does build fails
|
# If this is done after the configure call, the one thing it does build fails
|
||||||
# because the configure macro puts some hardening flags into the environment.
|
# because the configure macro puts some hardening flags into the environment.
|
||||||
%if %{with cassandane}
|
|
||||||
pushd cassandane
|
pushd cassandane
|
||||||
export NOCYRUS=1
|
export NOCYRUS=1
|
||||||
make
|
make
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
# Needed for Cyrus::FastMail tests to pass
|
||||||
|
export CLD2_CFLAGS="-I/usr/include/cld2"
|
||||||
|
export CLD2_LIBS="-lcld2"
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
# Needed because of Patch4.
|
||||||
|
autoreconf -vi
|
||||||
|
|
||||||
# Notes about configure options:
|
# Notes about configure options:
|
||||||
# --enable-objectstore
|
# --enable-objectstore
|
||||||
# It's experimental, and it doesn't appear that either openio or caringo are
|
# It's experimental, and it doesn't appear that either openio or caringo are
|
||||||
@ -314,14 +327,15 @@ popd
|
|||||||
# --with-cyrus-prefix and --with-service-path went away; use --with-libexecdir=
|
# --with-cyrus-prefix and --with-service-path went away; use --with-libexecdir=
|
||||||
# instead.
|
# instead.
|
||||||
|
|
||||||
# Needed because of Patch4.
|
|
||||||
autoreconf -vi
|
|
||||||
|
|
||||||
%configure \
|
%configure \
|
||||||
--disable-silent-rules \
|
--disable-silent-rules \
|
||||||
\
|
\
|
||||||
--libexecdir=%cyrexecdir \
|
--libexecdir=%cyrexecdir \
|
||||||
--with-clamav \
|
--with-clamav \
|
||||||
|
%if %{with cassandane}
|
||||||
|
`# Needed for Cyrus::FastMail tests to pass` \
|
||||||
|
--with-cld2 \
|
||||||
|
%endif
|
||||||
--with-extraident="%release Fedora" \
|
--with-extraident="%release Fedora" \
|
||||||
--with-krbimpl=mit \
|
--with-krbimpl=mit \
|
||||||
--with-ldap=/usr \
|
--with-ldap=/usr \
|
||||||
@ -491,21 +505,29 @@ chmod -x %buildroot/%perl_vendorlib/Cyrus/Annotator/Daemon.pm
|
|||||||
|
|
||||||
%check
|
%check
|
||||||
export LD_LIBRARY_PATH=%buildroot/%_libdir
|
export LD_LIBRARY_PATH=%buildroot/%_libdir
|
||||||
export CYRUS_USER=$USER
|
|
||||||
|
|
||||||
# TODO: The mime_boundary_extended cunit test fails due to LTO on ppc64le, skip it for now:
|
%if %{without cassandane}
|
||||||
%ifnarch ppc64le
|
exit 0
|
||||||
make %{?_smp_mflags} check || exit 1
|
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%ifarch %{ix86} armv7hl
|
%ifarch %{ix86} armv7hl
|
||||||
exit 0
|
exit 0
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%if %{without cassandane}
|
# TODO: The mime_boundary_extended cunit test fails due to LTO on ppc64le, skip it for now:
|
||||||
exit 0
|
%ifnarch ppc64le
|
||||||
|
make %{?_smp_mflags} check || exit 1
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
# 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 cyrus >/dev/null || /usr/sbin/useradd -c "Cyrus IMAP Server" -d /var/lib/imap -g %cyrusgroup \
|
||||||
|
-G saslauth -s /sbin/nologin -u %uid -r %cyrususer
|
||||||
|
|
||||||
# Run the Cassandane test suite. This will exhaustively test the various
|
# Run the Cassandane test suite. This will exhaustively test the various
|
||||||
# server components, but running it in a mock chroot is rather an exercise.
|
# server components, but running it in a mock chroot is rather an exercise.
|
||||||
pushd cassandane
|
pushd cassandane
|
||||||
@ -514,11 +536,13 @@ mkdir -p imaptest/src
|
|||||||
ln -s /usr/bin/imaptest imaptest/src
|
ln -s /usr/bin/imaptest imaptest/src
|
||||||
ln -s /usr/share/imaptest/tests imaptest/src
|
ln -s /usr/share/imaptest/tests imaptest/src
|
||||||
|
|
||||||
|
chown -R cyrus:mail .
|
||||||
|
|
||||||
# Construct the set of excluded tests to pass to Cassandane
|
# Construct the set of excluded tests to pass to Cassandane
|
||||||
# ---------------------------------------------------------
|
# ---------------------------------------------------------
|
||||||
exclude=()
|
exclude=()
|
||||||
tests=(
|
tests=(
|
||||||
# This exclusion list was verified on 2021-08-11.
|
# This exclusion list was verified on 2023-06-28.
|
||||||
|
|
||||||
# This tests coredumping and won't work on a machine where systemd
|
# This tests coredumping and won't work on a machine where systemd
|
||||||
# intercepts coredumps, which includes our builders.
|
# intercepts coredumps, which includes our builders.
|
||||||
@ -528,21 +552,28 @@ tests=(
|
|||||||
# https://github.com/cyrusimap/cyrus-imapd/issues/2386
|
# https://github.com/cyrusimap/cyrus-imapd/issues/2386
|
||||||
Admin.imap_admins
|
Admin.imap_admins
|
||||||
|
|
||||||
Rename.intermediate_cleanup
|
# Failing with '405 Method Not Allowed':
|
||||||
|
Cyrus::FastMail.search_deleted_folder
|
||||||
|
Cyrus::JMAPCalendars.calendarevent_query_no_sched_inbox
|
||||||
|
|
||||||
# TODO check this one
|
# Failing with Perl exception: Cannot connect to server: hostname verification failed:
|
||||||
Cyrus::List.no_tombstones
|
Cyrus::MboxEvent.tls_login_event
|
||||||
# TODO run tests outside the build process:
|
|
||||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1887674
|
|
||||||
# The below tests try to search in syslog file which we don't allow due to mock,
|
|
||||||
# happenes for:
|
|
||||||
# $ grep -R "assert.*@lines" cyrus-imapd-*/cassandane/
|
|
||||||
Reconstruct.reconstruct_snoozed
|
|
||||||
SearchSquat.simple
|
|
||||||
SearchSquat.skip_unmodified
|
|
||||||
)
|
)
|
||||||
for i in ${tests[@]}; do exclude+=("!$i"); done
|
for i in ${tests[@]}; do exclude+=("!$i"); done
|
||||||
|
|
||||||
|
# If cyrus-imapd is built without cld2 support, the below tests are expected to fail:
|
||||||
|
if [ -z "$CLD2_CFLAGS" ]; then
|
||||||
|
exclude+=(
|
||||||
|
"!Cyrus::FastMail.cyr_expire_delete_findpaths_legacy"
|
||||||
|
"!Cyrus::FastMail.cyr_expire_delete_findpaths_nolegacy"
|
||||||
|
"!Cyrus::FastMail.relocate_legacy_domain"
|
||||||
|
"!Cyrus::FastMail.relocate_legacy_nodomain"
|
||||||
|
"!Cyrus::FastMail.relocate_legacy_nosearchdb"
|
||||||
|
"!Cyrus::FastMail.relocate_messages_still_exist"
|
||||||
|
"!Cyrus::FastMail.sync_reset_legacy"
|
||||||
|
"!Cyrus::FastMail.sync_reset_nolegacy"
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
|
||||||
%ifarch s390x
|
%ifarch s390x
|
||||||
# This one test fails occasionally on s390x because the hosts are just too slow
|
# This one test fails occasionally on s390x because the hosts are just too slow
|
||||||
@ -673,6 +704,12 @@ getent passwd cyrus >/dev/null || /usr/sbin/useradd -c "Cyrus IMAP Server" -d /v
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Jun 29 2023 Martin Osvald <mosvald@redhat.com> - 3.6.0-4
|
||||||
|
- Cassandane: Sync split CI test and spec file
|
||||||
|
- Cassandane: Fully turn off sending messages through syslog()
|
||||||
|
and allow syslog dependent tests to pass
|
||||||
|
- Cassandane: Enable building with cld2 support to fix failing tests
|
||||||
|
|
||||||
* Sun Jan 22 2023 Orion Poplawski <orion@nwra.com> - 3.6.0-3
|
* Sun Jan 22 2023 Orion Poplawski <orion@nwra.com> - 3.6.0-3
|
||||||
- Rebuild for clamav 1.0.0
|
- Rebuild for clamav 1.0.0
|
||||||
|
|
||||||
|
@ -1,24 +1,5 @@
|
|||||||
diff --git a/Cassandane/Instance.pm b/Cassandane/Instance.pm
|
|
||||||
index fb36b8f..78e7100 100644
|
|
||||||
--- a/Cassandane/Instance.pm
|
|
||||||
+++ b/Cassandane/Instance.pm
|
|
||||||
@@ -2146,12 +2146,8 @@ sub setup_syslog_replacement
|
|
||||||
{
|
|
||||||
my ($self) = @_;
|
|
||||||
|
|
||||||
- if (not(-e 'utils/syslog.so') || not(-e 'utils/syslog_probe')) {
|
|
||||||
- xlog "utils/syslog.so not found (do you need to run 'make'?)";
|
|
||||||
- xlog "tests will not examine syslog output";
|
|
||||||
- $self->{have_syslog_replacement} = 0;
|
|
||||||
- return;
|
|
||||||
- }
|
|
||||||
+ $self->{have_syslog_replacement} = 0;
|
|
||||||
+ return;
|
|
||||||
|
|
||||||
$self->{syslog_fname} = "$self->{basedir}/conf/log/syslog";
|
|
||||||
$self->{have_syslog_replacement} = 1;
|
|
||||||
diff --git a/Cassandane/Util/Log.pm b/Cassandane/Util/Log.pm
|
diff --git a/Cassandane/Util/Log.pm b/Cassandane/Util/Log.pm
|
||||||
index 7c17f0c..9eb07ad 100644
|
index a44005c..5bb5710 100644
|
||||||
--- a/Cassandane/Util/Log.pm
|
--- a/Cassandane/Util/Log.pm
|
||||||
+++ b/Cassandane/Util/Log.pm
|
+++ b/Cassandane/Util/Log.pm
|
||||||
@@ -51,9 +51,6 @@ our @EXPORT = qw(
|
@@ -51,9 +51,6 @@ our @EXPORT = qw(
|
||||||
@ -31,11 +12,46 @@ index 7c17f0c..9eb07ad 100644
|
|||||||
sub xlog
|
sub xlog
|
||||||
{
|
{
|
||||||
my $id;
|
my $id;
|
||||||
@@ -74,7 +71,6 @@ sub xlog
|
@@ -87,7 +84,6 @@ sub xlog
|
||||||
$msg .= "($id) " if $id;
|
else {
|
||||||
$msg .= join(' ', @_);
|
print STDERR "$msg\n";
|
||||||
print STDERR "$msg\n";
|
}
|
||||||
- syslog(LOG_ERR, "$msg");
|
- syslog(LOG_ERR, "$msg");
|
||||||
}
|
}
|
||||||
|
|
||||||
sub set_verbose
|
sub set_verbose
|
||||||
|
diff --git a/utils/syslog.c b/utils/syslog.c
|
||||||
|
index 20d3763..0238d82 100644
|
||||||
|
--- a/utils/syslog.c
|
||||||
|
+++ b/utils/syslog.c
|
||||||
|
@@ -116,14 +116,28 @@ EXPORTED void syslog(int priority, const char *format, ...)
|
||||||
|
va_start(ap, format);
|
||||||
|
fake_vsyslog(priority, format, ap);
|
||||||
|
va_end(ap);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+EXPORTED void
|
||||||
|
+__attribute__((format(printf, 3, 4)))
|
||||||
|
+__syslog_chk(int priority, int whatever __attribute__((unused)),
|
||||||
|
+ const char *format, ...)
|
||||||
|
+{
|
||||||
|
+ va_list ap;
|
||||||
|
|
||||||
|
va_start(ap, format);
|
||||||
|
- real_vsyslog(priority, format, ap);
|
||||||
|
+ fake_vsyslog(priority, format, ap);
|
||||||
|
va_end(ap);
|
||||||
|
}
|
||||||
|
|
||||||
|
EXPORTED void vsyslog(int priority, const char *format, va_list ap)
|
||||||
|
{
|
||||||
|
fake_vsyslog(priority, format, ap);
|
||||||
|
- real_vsyslog(priority, format, ap);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+EXPORTED void
|
||||||
|
+__attribute__((format(printf, 3, 0)))
|
||||||
|
+__vsyslog_chk(int priority, int whatever __attribute__((unused)), const char *format, va_list ap)
|
||||||
|
+{
|
||||||
|
+ fake_vsyslog(priority, format, ap);
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user