The package rpms/cyrus-imapd.git has added or updated architecture specific content in
its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/cyrus-imapd.git/commit/?id=20773f...
https://src.fedoraproject.org/cgit/rpms/cyrus-imapd.git/commit/?id=c6a7c0...
https://src.fedoraproject.org/cgit/rpms/cyrus-imapd.git/commit/?id=704701....
Change:
+%ifarch s390x
+%ifarch i686 armv7hl
+%ifarch s390x
Thanks.
Full change:
============
commit 2353fd391f7482aaa0dd4d11afb4745cb92d51e2
Author: Jason Tibbitts <tibbs(a)math.uh.edu>
Date: Wed Jun 21 08:24:37 2017 -0500
Add the necessary patch.
diff --git a/patch-cyrus-32bit-reconstruct b/patch-cyrus-32bit-reconstruct
new file mode 100644
index 0000000..d7497ab
--- /dev/null
+++ b/patch-cyrus-32bit-reconstruct
@@ -0,0 +1,22 @@
+diff --git a/imap/mailbox.c b/imap/mailbox.c
+index e7498c0..8b6f406 100644
+--- a/imap/mailbox.c
++++ b/imap/mailbox.c
+@@ -5425,7 +5425,7 @@ static int find_files(struct mailbox *mailbox, struct found_uids
*files,
+ }
+
+ /* make sure UIDs are sorted for comparison */
+- qsort(files->found, files->nused, sizeof(unsigned long), sort_found);
++ qsort(files->found, files->nused, sizeof(files->found[0]), sort_found);
+
+ strarray_fini(&paths);
+
+@@ -6206,7 +6206,7 @@ static int find_annots(struct mailbox *mailbox, struct found_uids
*annots)
+ if (r) return r;
+
+ /* make sure UIDs are sorted for comparison */
+- qsort(annots->found, annots->nused, sizeof(unsigned long), sort_found);
++ qsort(annots->found, annots->nused, sizeof(annots->found[0]), sort_found);
+
+ return 0;
+ }
commit 99372872179f8be0ad92b504bf3a99efe3f69ce3
Author: Jason Tibbitts <tibbs(a)math.uh.edu>
Date: Tue Jun 20 19:48:35 2017 -0500
Add upstream patch for reconstruct bug.
Add a patch from
https://github.com/cyrusimap/cassandane/issues/21 which
fixes a bug in reconstruct that appears on 32-bit architectures. This
lets us re-enable five Cassandane tests on 32-bit.
diff --git a/cyrus-imapd.spec b/cyrus-imapd.spec
index 7909032..91f936a 100644
--- a/cyrus-imapd.spec
+++ b/cyrus-imapd.spec
@@ -43,6 +43,9 @@ Patch6: patch-cyrus-autoreconf-keep-version
# Upstream
https://github.com/cyrusimap/cyrus-imapd/issues/2026
Patch7: patch-cyrus-managesieve-linking
+# Upstream
https://github.com/cyrusimap/cassandane/issues/21
+Patch8: patch-cyrus-32bit-reconstruct
+
Source10: cyrus-imapd.logrotate
Source11: cyrus-imapd.pam-config
Source12: cyrus-imapd.sysconfig
@@ -547,18 +550,6 @@ for i in ${tests[@]}; do exclude+=("!$i"); done
exclude+=("!Master.maxforkrate")
%endif
-%ifarch i686 armv7hl
-# Some additional failures only on 32-bit machines.
-# Reported upstream as
https://github.com/cyrusimap/cassandane/issues/21
-tests=(
- Reconstruct.reconstruct_removedfile
- Reconstruct.reconstruct_truncated
- Reconstruct.reconstruct_zerouid
- Quota.reconstruct
- Quota.reconstruct_orphans
-)
-for i in ${tests[@]}; do exclude+=("!$i"); done
-
%if 0%{?fedora} <= 26
# For F26 and older, 32-bit Perl doesn't support the quad types in unpack. The
# following tests use those, and so they fail on those releases.
@@ -581,7 +572,6 @@ tests=(
)
for i in ${tests[@]}; do exclude+=("!$i"); done
%endif
-%endif
# Add -vvv for too much output
./testrunner.pl %{?_smp_mflags} --cleanup -f pretty ${exclude[@]} 2>&1
@@ -683,6 +673,8 @@ getent passwd cyrus >/dev/null || /usr/sbin/useradd -c "Cyrus
IMAP Server" -d /v
* Tue Jun 20 2017 Jason L Tibbitts III <tibbs(a)math.uh.edu> - 3.0.1-7
- Add old /usr/lib/cyrus-imapd directory to the utils package and add a symlink
there to the deliver binary. This should help a bit with migrations.
+- Add upstream patch to fix reconstruct failures on 32-bit architectures.
+ Re-enable those five Cassandane tests.
* Thu Jun 15 2017 Jason L Tibbitts III <tibbs(a)math.uh.edu> - 3.0.1-6
- Rename two commands: quota -> cyr_quota, restore -> cyr_restore.
commit 373f513e1d1b534c3eea28ce52ef5fd055ddbe1c
Author: Jason Tibbitts <tibbs(a)math.uh.edu>
Date: Tue Jun 20 19:00:23 2017 -0500
Add the old /usr/lib/cyrus-imapd directory
To help with the transition to the new version, add back in the old
/usrlib/cyrus-imapd directory and symlink the deliver program there.
diff --git a/cyrus-imapd.spec b/cyrus-imapd.spec
index f71d5a5..7909032 100644
--- a/cyrus-imapd.spec
+++ b/cyrus-imapd.spec
@@ -9,7 +9,7 @@
Name: cyrus-imapd
Version: 3.0.1
-Release: 6%{?dist}
+Release: 7%{?dist}
%define ssl_pem_file /etc/pki/%name/%name.pem
@@ -307,8 +307,6 @@ make -C tools/vzic
%install
make install DESTDIR=%buildroot
-# Install some additional binaries
-
# Create directories
install -d \
%buildroot/etc/{rc.d/init.d,logrotate.d,pam.d,sysconfig,cron.daily} \
@@ -320,7 +318,6 @@ install -d \
%buildroot/%cyrexecdir \
%buildroot/etc/pki/%name
-
# Some tools which aren't installed by the makefile which we want
install -m 755 notifyd/notifytest %buildroot%_bindir/
install -m 755 perl/imap/cyradm %buildroot%_bindir/
@@ -412,6 +409,13 @@ mv %buildroot/%_mandir/man8/master.8
%buildroot/%_mandir/man8/master.8cyrus
# Rename 'httpd' manpage to avoid clash with Apache
mv %buildroot/%_mandir/man8/httpd.8 %buildroot/%_mandir/man8/cyr_httpd.8
+# Old cyrus packages used to keep some executables in /usr/lib/cyrus-imapd
+# RF hardcoded-library-path in %%buildroot/usr/lib/cyrus-imapd
+mkdir %buildroot/usr/lib/cyrus-imapd
+pushd %buildroot/usr/lib/cyrus-imapd
+ln -s ../../sbin/deliver
+popd
+
#remove executable bit from docs
for ddir in doc perl/imap/examples
do
@@ -667,6 +671,8 @@ getent passwd cyrus >/dev/null || /usr/sbin/useradd -c "Cyrus
IMAP Server" -d /v
%{perl_vendorlib}/Cyrus
%{_mandir}/man3/*.3pm*
%{_mandir}/man1/*
+# RF hardcoded-library-path in /usr/lib/cyrus-imapd
+/usr/lib/cyrus-imapd
%files vzic
@@ -674,6 +680,10 @@ getent passwd cyrus >/dev/null || /usr/sbin/useradd -c "Cyrus
IMAP Server" -d /v
%changelog
+* Tue Jun 20 2017 Jason L Tibbitts III <tibbs(a)math.uh.edu> - 3.0.1-7
+- Add old /usr/lib/cyrus-imapd directory to the utils package and add a symlink
+ there to the deliver binary. This should help a bit with migrations.
+
* Thu Jun 15 2017 Jason L Tibbitts III <tibbs(a)math.uh.edu> - 3.0.1-6
- Rename two commands: quota -> cyr_quota, restore -> cyr_restore.
- Fix Cassandane to handle those renames.
commit 77cd74be0189dd1c142babf6e8574cbf76f1d530
Author: Jason Tibbitts <tibbs(a)math.uh.edu>
Date: Thu Jun 15 18:17:48 2017 -0500
Rename quota and restore; fix perl-related FTBFS
Rename quota and restore to have a "cyr_" prefix, and fix testsuite
hardcoding of those names.
Fix FTBFS related to a change in the way perl compiles XS modules.
Re-enable some tests on 32-bit rawhide because perl there now supports
quad types. But leave them disabled for F26.
Fix the location of cyr_fetchnews
More cleanup and commenting of the spec.
Bump to release 6.
diff --git a/cyrus-imapd.spec b/cyrus-imapd.spec
index ade555d..f71d5a5 100644
--- a/cyrus-imapd.spec
+++ b/cyrus-imapd.spec
@@ -9,7 +9,7 @@
Name: cyrus-imapd
Version: 3.0.1
-Release: 5%{?dist}
+Release: 6%{?dist}
%define ssl_pem_file /etc/pki/%name/%name.pem
@@ -26,13 +26,22 @@ License: BSD
URL:
http://www.cyrusimap.org/
Source0:
http://www.cyrusimap.org/releases/%name-%version.tar.gz
+# Patches to fix some test suite issues
+# Upstream ticket
https://github.com/cyrusimap/cyrus-imapd/issues/1993
Patch0: patch-cyrus-testsuite-endianness
Patch1: patch-cyrus-testsuite-endianness2
Patch2: patch-cyrus-testsuite-endianness3
Patch3: patch-cyrus-testsuite-endianness4
-Patch4: patch-cyrus-testsuite-timeout
-Patch5: patch-cyrus-autoreconf-keep-version
-Patch6: patch-cyrus-fix-endianness-checks
+Patch4: patch-cyrus-fix-endianness-checks
+
+# Adapt a timeout to handle our slower builders
+Patch5: patch-cyrus-testsuite-timeout
+
+# Upstream
https://github.com/cyrusimap/cyrus-imapd/issues/1994
+Patch6: patch-cyrus-autoreconf-keep-version
+
+# Upstream
https://github.com/cyrusimap/cyrus-imapd/issues/2026
+Patch7: patch-cyrus-managesieve-linking
Source10: cyrus-imapd.logrotate
Source11: cyrus-imapd.pam-config
@@ -65,9 +74,18 @@ Source83: cassandane-redirect-syslog.c
# These are source files and not patches because you can't use autosetup to
# apply patches to secondary unpacked source files.
+
+# Prevent cassandane from trying to syslog things
Source91: 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
Source92: patch-cassandane-fix-annotator
+# Change hardcoded names from 'quota' to 'cyr_quota'
+# Upstream ticket
https://github.com/cyrusimap/cassandane/issues/26
+Source93: patch-cassandane-rename-quota
+
# Dependency notes:
# * clamav-devel and mariadb-devel removed because they both depend on
# compat-openssl.
@@ -208,6 +226,7 @@ tar xf %SOURCE81
patch -p1 < %SOURCE91
patch -p1 < %SOURCE92
+patch -p1 < %SOURCE93
cp %SOURCE82 cassandane.ini
# RF rpm-buildroot-usage
sed -i \
@@ -271,6 +290,7 @@ autoreconf -vi
# Fedora needs them. So regenerate them manually.
for i in perl/annotator perl/imap perl/sieve/managesieve; do
pushd $i
+ rm -f Makefile
perl Makefile.PL INSTALLDIRS=vendor # NO_PERLOCAL=1 NO_PACKLIST=1
popd
done
@@ -371,9 +391,17 @@ touch %buildroot/%ssl_pem_file
# Actual binary conflicts
# Rename 'fetchnews' binary and manpage to avoid clash with leafnode
-mv %buildroot/%_sbindir/fetchnews %buildroot/%cyrexecdir/cyr_fetchnews
+mv %buildroot/%_sbindir/fetchnews %buildroot/%_sbindir/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/%_mandir/man8/quota.8 %buildroot/%_mandir/man8/cyr_quota.8
+
# fix conflicts with uw-imap
mv %buildroot/%_mandir/man8/imapd.8 %buildroot/%_mandir/man8/imapd.8cyrus
mv %buildroot/%_mandir/man8/pop3d.8 %buildroot/%_mandir/man8/pop3d.8cyrus
@@ -517,9 +545,19 @@ exclude+=("!Master.maxforkrate")
%ifarch i686 armv7hl
# Some additional failures only on 32-bit machines.
-# 14 failures are due to Fedora's perl not supporting quad types in unpack.
-# This is due to be fixed in rawhide soon, so some of these can go away but
-# only on rawhide, not F26.
+# Reported upstream as
https://github.com/cyrusimap/cassandane/issues/21
+tests=(
+ Reconstruct.reconstruct_removedfile
+ Reconstruct.reconstruct_truncated
+ Reconstruct.reconstruct_zerouid
+ Quota.reconstruct
+ Quota.reconstruct_orphans
+)
+for i in ${tests[@]}; do exclude+=("!$i"); done
+
+%if 0%{?fedora} <= 26
+# For F26 and older, 32-bit Perl doesn't support the quad types in unpack. The
+# following tests use those, and so they fail on those releases.
tests=(
JMAPContacts.setcontacts_importance_later
Metadata.expunge_messages
@@ -536,14 +574,10 @@ tests=(
Metadata.msg_replication_mod_bot_msh
Metadata.msg_replication_new_bot_mse_guh
Metadata.msg_replication_mod_rep
- Reconstruct.reconstruct_removedfile
- Reconstruct.reconstruct_truncated
- Reconstruct.reconstruct_zerouid
- Quota.reconstruct
- Quota.reconstruct_orphans
)
for i in ${tests[@]}; do exclude+=("!$i"); done
%endif
+%endif
# Add -vvv for too much output
./testrunner.pl %{?_smp_mflags} --cleanup -f pretty ${exclude[@]} 2>&1
@@ -640,6 +674,13 @@ getent passwd cyrus >/dev/null || /usr/sbin/useradd -c "Cyrus
IMAP Server" -d /v
%changelog
+* Thu Jun 15 2017 Jason L Tibbitts III <tibbs(a)math.uh.edu> - 3.0.1-6
+- Rename two commands: quota -> cyr_quota, restore -> cyr_restore.
+- Fix Cassandane to handle those renames.
+- Fix location of cyr_fetchnews.
+- Fix Perl 5.26-related module linking issue which caused a test failure.
+ Fixes
https://bugzilla.redhat.com/show_bug.cgi?id=1461669
+
* Tue Jun 06 2017 Jason L Tibbitts III <tibbs(a)math.uh.edu> - 3.0.1-5
- Use proper path to ctl_mboxlist in cron file.
- Add patch to increase individual test timeout. Sometimes armv7hl can't
diff --git a/patch-cassandane-rename-quota b/patch-cassandane-rename-quota
new file mode 100644
index 0000000..cdb7365
--- /dev/null
+++ b/patch-cassandane-rename-quota
@@ -0,0 +1,120 @@
+diff --git a/Cassandane/Cyrus/Quota.pm b/Cassandane/Cyrus/Quota.pm
+index b231eda..893e141 100644
+--- a/Cassandane/Cyrus/Quota.pm
++++ b/Cassandane/Cyrus/Quota.pm
+@@ -1000,7 +1000,7 @@ sub test_quota_f_unixhs
+ my @data = $self->{instance}->run_command({
+ cyrus => 1,
+ redirects => { stdout => $self->{instance}{basedir} .
'/quota.out' },
+- }, 'quota', '-f');
++ }, 'cyr_quota', '-f');
+
+ open(FH, "<", $self->{instance}{basedir} . '/quota.out');
+ local $/ = undef;
+@@ -1095,7 +1095,7 @@ sub test_quota_f
+ );
+
+ xlog "find and add the quota";
+- $self->{instance}->run_command({ cyrus => 1 }, 'quota',
'-f');
++ $self->{instance}->run_command({ cyrus => 1 }, 'cyr_quota',
'-f');
+
+ xlog "check usages";
+ $self->_check_usages(
+@@ -1112,7 +1112,7 @@ sub test_quota_f
+ );
+
+ xlog "re-run the quota utility";
+- $self->{instance}->run_command({ cyrus => 1 }, 'quota',
'-f');
++ $self->{instance}->run_command({ cyrus => 1 }, 'cyr_quota',
'-f');
+
+ xlog "check usages";
+ $self->_check_usages(
+@@ -1165,7 +1165,7 @@ sub test_quota_f_vs_update
+ $self->{instance}->quota_Z_go("$basefolder.a");
+ $self->{instance}->quota_Z_go("$basefolder.b");
+ my (@bits) = $self->{instance}->run_command({ cyrus => 1, background =>
1 },
+- 'quota', '-Z', '-f', $basefolder);
++ 'cyr_quota', '-Z', '-f', $basefolder);
+
+ # waiting for quota -f to ensure that
+ # a) the -Z mechanism is working and
+@@ -1248,14 +1248,14 @@ sub test_quota_f_nested_qr
+ $self->_check_usages(quotaroot => "$inbox.nnn", storage => 0);
+
+ xlog "run quota -f to find and add the quota";
+- $self->{instance}->run_command({ cyrus => 1 }, 'quota',
'-f');
++ $self->{instance}->run_command({ cyrus => 1 }, 'cyr_quota',
'-f');
+
+ xlog "check that STORAGE quota is restored for both roots";
+ $self->_check_usages(quotaroot => $inbox, storage => int($ex1/1024));
+ $self->_check_usages(quotaroot => "$inbox.nnn", storage =>
int($ex2/1024));
+
+ xlog "run quota -f again";
+- $self->{instance}->run_command({ cyrus => 1 }, 'quota',
'-f');
++ $self->{instance}->run_command({ cyrus => 1 }, 'cyr_quota',
'-f');
+
+ xlog "check that STORAGE quota is still correct for both roots";
+ $self->_check_usages(quotaroot => $inbox, storage => int($ex1/1024));
+@@ -1330,7 +1330,7 @@ sub test_quota_f_prefix
+ storage => int($exp_baseplus/1024));
+
+ xlog "Run quota -f";
+- $self->{instance}->run_command({ cyrus => 1 }, 'quota',
'-f');
++ $self->{instance}->run_command({ cyrus => 1 }, 'cyr_quota',
'-f');
+
+ xlog "Check that the quotas were unchanged by quota -f";
+ $self->_check_usages(quotaroot => 'user.base',
+@@ -1353,7 +1353,7 @@ sub test_quota_f_prefix
+ storage => int($bogus_baseplus/1024));
+
+ xlog "Run quota -f with no prefix";
+- $self->{instance}->run_command({ cyrus => 1 }, 'quota',
'-f');
++ $self->{instance}->run_command({ cyrus => 1 }, 'cyr_quota',
'-f');
+
+ xlog "Check that the quotas were all fixed";
+ $self->_check_usages(quotaroot => 'user.base',
+@@ -1374,7 +1374,7 @@ sub test_quota_f_prefix
+ storage => int($bogus_baseplus/1024));
+
+ xlog "Run quota -f on user.base only";
+- $self->{instance}->run_command({ cyrus => 1 }, 'quota',
'-f', 'user.base');
++ $self->{instance}->run_command({ cyrus => 1 }, 'cyr_quota',
'-f', 'user.base');
+
+ xlog "Check that only the user.base and user.baseplus quotas were fixed";
+ $self->_check_usages(quotaroot => 'user.base',
+@@ -1395,7 +1395,7 @@ sub test_quota_f_prefix
+ storage => int($bogus_baseplus/1024));
+
+ xlog "Run quota -f on user.baseplus only";
+- $self->{instance}->run_command({ cyrus => 1 }, 'quota',
'-f', 'user.baseplus');
++ $self->{instance}->run_command({ cyrus => 1 }, 'cyr_quota',
'-f', 'user.baseplus');
+
+ xlog "Check that only the user.baseplus quotas were fixed";
+ $self->_check_usages(quotaroot => 'user.base',
+@@ -2384,7 +2384,7 @@ sub test_reconstruct
+ 'reconstruct', 'user.cassandane');
+ xlog "Running quota -f";
+ $self->{instance}->run_command({ cyrus => 1 },
+- 'quota', '-f', "user.cassandane");
++ 'cyr_quota', '-f', "user.cassandane");
+
+ $talk = $store->get_client();
+
+@@ -2520,7 +2520,7 @@ sub test_reconstruct_orphans
+ 'reconstruct', 'user.cassandane');
+ xlog "Running quota -f";
+ $self->{instance}->run_command({ cyrus => 1 },
+- 'quota', '-f', "user.cassandane");
++ 'cyr_quota', '-f', "user.cassandane");
+
+ $talk = $store->get_client();
+
+@@ -2566,7 +2566,7 @@ sub test_bug3735
+ $self->{instance}->run_command({
+ cyrus => 1,
+ redirects => { stdout => $filename },
+- }, 'quota', "user.a");
++ }, 'cyr_quota', "user.a");
+
+ open RESULTS, '<', $filename
+ or die "Cannot open $filename for reading: $!";
diff --git a/patch-cyrus-managesieve-linking b/patch-cyrus-managesieve-linking
new file mode 100644
index 0000000..1b1b8e0
--- /dev/null
+++ b/patch-cyrus-managesieve-linking
@@ -0,0 +1,26 @@
+diff --git a/perl/sieve/managesieve/Makefile.PL b/perl/sieve/managesieve/Makefile.PL
+index d817ce3..870cb7e 100644
+--- a/perl/sieve/managesieve/Makefile.PL
++++ b/perl/sieve/managesieve/Makefile.PL
+@@ -69,7 +69,7 @@ WriteMakefile(
+ 'ABSTRACT' => 'Cyrus Sieve management interface',
+ 'VERSION_FROM' =>
"../../../perl/sieve/managesieve/managesieve.pm", # finds $VERSION
+ 'MYEXTLIB' => '../lib/.libs/libisieve.a
../../../perl/.libs/libcyrus.a ../../../perl/.libs/libcyrus_min.a',
+- 'LIBS' => ["$LIB_SASL -lssl -lcrypto -lssl -lcrypto -luuid
-lz"],
++ 'LIBS' => ["$LIB_SASL -lssl -lcrypto -lssl -lcrypto -luuid -lz
-lsqlite3 -lpq"],
+ 'CCFLAGS' => '',
+ 'DEFINE' => '-DPERL_POLLUTE', # e.g.,
'-DHAVE_SOMETHING'
+ 'INC' => "-I../../../lib -I../../../perl/sieve
-I../../../perl/sieve/lib ",
+diff --git a/perl/sieve/managesieve/Makefile.PL.in
b/perl/sieve/managesieve/Makefile.PL.in
+index 45ae8ea..9fd0b12 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(a)/perl/sieve/managesieve/managesieve.pm", # finds $VERSION
+ 'MYEXTLIB' => '../lib/.libs/libisieve.a
@top_builddir(a)/perl/.libs/libcyrus.a @top_builddir(a)/perl/.libs/libcyrus_min.a',
+- 'LIBS' => ["$LIB_SASL @SSL_LIBS@ @LIB_RT@ @LIB_UUID@ @ZLIB@"],
++ 'LIBS' => ["$LIB_SASL @SSL_LIBS@ @LIB_RT@ @LIB_UUID@ @ZLIB@
-lsqlite3 -lpq"],
+ '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@",
commit 20773f689a7cb1b36a950661ea0fa372740e976f
Author: Jason Tibbitts <tibbs(a)math.uh.edu>
Date: Tue Jun 6 16:32:36 2017 -0500
Just stop trying to make Cassandane work on s390x.
diff --git a/cyrus-imapd.spec b/cyrus-imapd.spec
index f6c78b1..ade555d 100644
--- a/cyrus-imapd.spec
+++ b/cyrus-imapd.spec
@@ -406,6 +406,17 @@ make %{?_smp_mflags} check || exit 1
exit 0
%endif
+%ifarch s390x
+# Unfortunately s390x is simply too slow to reliably run the test suite right
+# now. The suite brings up and tears down a complete cyrus environment for
+# each test, and the builders are simply unable to handle this reliably right
+# now. Tests will simply fail randomly, and playing whack-a-mole with every
+# potential failure when a build takes seven hours is just too much.
+# s390x-specific test information is still present below in case situation
+# improves.
+exit 0
+%endif
+
# Run the Cassandane test suite. This will exhaustively test the various
# server components, but running it in a mock chroot is rather an exercise.
# Sadly Cassandane simply can't run on a 32-bit host at the moment. It needs
@@ -635,6 +646,8 @@ getent passwd cyrus >/dev/null || /usr/sbin/useradd -c "Cyrus
IMAP Server" -d /v
complete a single test in 20 seconds.
- Disable the Metronome tests; upstream says that they just won't reliably on
shared hardware.
+- Don't bother running Cassandane on s390x for now. The machines are simply
+ too slow.
* Tue Jun 06 2017 Jitka Plesnikova <jplesnik(a)redhat.com> - 3.0.1-4
- Perl 5.26 rebuild
commit ab4aa66f0184ba7dfdea85d4e6d56a792af36f61
Author: Jason Tibbitts <tibbs(a)math.uh.edu>
Date: Tue Jun 6 11:19:27 2017 -0500
Disable one more test and clean up a bit.
I'm still trying to get a build through without failures related to
timeouts in the test code on the slowest build hosts. The failures are
not consistent, which is what makes this so difficult.
diff --git a/cyrus-imapd.spec b/cyrus-imapd.spec
index f93ca40..f6c78b1 100644
--- a/cyrus-imapd.spec
+++ b/cyrus-imapd.spec
@@ -421,28 +421,27 @@ mkdir -p imaptest/src
ln -s /usr/bin/imaptest imaptest/src
ln -s /usr/share/imaptest/tests imaptest/src
-
-# Build the syslog interposer
-gcc -fPIC -shared -Wl,-soname,-libredirectsyslog.so.0 -ldl -o libredirectsyslog.so.0.0
redirect-syslog.c
+# Build the syslog interposer; not currently working
+#gcc -fPIC -shared -Wl,-soname,-libredirectsyslog.so.0 -ldl -o libredirectsyslog.so.0.0
redirect-syslog.c
export LD_LIBRARY_PATH=%buildroot/%_libdir
export CYRUS_USER=$USER
-# Most Cassandane tests pass, but using snapshots includes new tests which
-# aren't supposed to pass on released versions of cyrus. So we have a big
-# exclusion list.
-
+# Construct the set of excluded tests to pass to Cassandane
+# ---------------------------------------------------------
# Note that Cassandane::Test::Core must always be excluded; it can't possibly
-# work. The others are expected on 3.0.1 and should be removed and re-checked
-# at each release.
-exclude=('!Cassandane::Test::Core')
+# work.
+# Upstream says that the Metronome tests won't be reliable on shared hardware
+# and are more for testing system performance than for testing Cyrus itself.
+exclude=('!Cassandane::Test::Core' '!Metronome')
+# The below non-arch-specific excluded tests are expected to fail n 3.0.1 and
+# should be removed and re-checked at each release.
tests=(
Admin.imap_admins Fetch.fetch_flags_before_exists Quota.num_folders_rename
SearchFuzzy.cjk_words SearchFuzzy.xattachmentname
)
for i in ${tests[@]}; do exclude+=("!$i"); done
-
tests=(
creationids
getcalendareventlist
@@ -475,7 +474,6 @@ tests=(
setcalendarevents_simple
)
for i in ${tests[@]}; do exclude+=("!JMAPCalendars.$i"); done
-
tests=(
getmessagelist_attachments
getmessagelist_window
@@ -499,13 +497,18 @@ for i in ${tests[@]}; do exclude+=("!$i"); done
%endif
%ifarch s390x
-exclude+=("!Master.maxforkrate") # Our s390x hosts are too slow to complete
this test properly
+# This one test fails occasionally on s390x because the hosts are just too slow
+# to complete it. It's testing something valid (that the fork rate limiting
+# settings work properly) but s399x can'f fork quickly enough to exceeed the
+# limits it's testing.
+exclude+=("!Master.maxforkrate")
%endif
%ifarch i686 armv7hl
# Some additional failures only on 32-bit machines.
# 14 failures are due to Fedora's perl not supporting quad types in unpack.
-# This is due to be fixed in rawhide soon, so some of these can go away.
+# This is due to be fixed in rawhide soon, so some of these can go away but
+# only on rawhide, not F26.
tests=(
JMAPContacts.setcontacts_importance_later
Metadata.expunge_messages
@@ -630,6 +633,8 @@ getent passwd cyrus >/dev/null || /usr/sbin/useradd -c "Cyrus
IMAP Server" -d /v
- Use proper path to ctl_mboxlist in cron file.
- Add patch to increase individual test timeout. Sometimes armv7hl can't
complete a single test in 20 seconds.
+- Disable the Metronome tests; upstream says that they just won't reliably on
+ shared hardware.
* Tue Jun 06 2017 Jitka Plesnikova <jplesnik(a)redhat.com> - 3.0.1-4
- Perl 5.26 rebuild
commit 07a932cada3354c39010cfd2d7c599cd9d7553d9
Merge: af6aa51 369cf89
Author: Jason Tibbitts <tibbs(a)math.uh.edu>
Date: Tue Jun 6 09:40:04 2017 -0500
Merge branch 'master' of
ssh://pkgs.fedoraproject.org/rpms/cyrus-imapd
diff --cc cyrus-imapd.spec
index 69d1ef5,1ee5e69..f93ca40
--- a/cyrus-imapd.spec
+++ b/cyrus-imapd.spec
@@@ -9,7 -9,7 +9,7 @@@
Name: cyrus-imapd
Version: 3.0.1
- Release: 3%{?dist}
-Release: 4%{?dist}
++Release: 5%{?dist}
%define ssl_pem_file /etc/pki/%name/%name.pem
@@@ -626,14 -625,14 +626,19 @@@ getent passwd cyrus >/dev/null || /usr/
%changelog
- * Tue Jun 06 2017 Jason L Tibbitts III <tibbs(a)math.uh.edu> - 3.0.1-3
- - Remove clamav from build requirements.
- - Add --cleanup to Cassandane call to hopefully reduce build disk usage.
- - Disable maxforkrate test on s390x; our builders are too slow to run it.
++* Tue Jun 06 2017 Jason L Tibbitts III <tibbs(a)math.uh.edu> - 3.0.1-5
+- Use proper path to ctl_mboxlist in cron file.
+- Add patch to increase individual test timeout. Sometimes armv7hl can't
+ complete a single test in 20 seconds.
+
+ * Tue Jun 06 2017 Jitka Plesnikova <jplesnik(a)redhat.com> - 3.0.1-4
+ - Perl 5.26 rebuild
+
+ * Fri Jun 02 2017 Jason L Tibbitts III <tibbs(a)math.uh.edu> - 3.0.1-3
+ - Remove clamav from build requirements.
+ - Add --cleanup to Cassandane call to hopefully reduce build disk usage.
+ - Disable maxforkrate test on s390x; our builders are too slow to run it.
+
* Fri Jun 02 2017 Jason L Tibbitts III <tibbs(a)math.uh.edu> - 3.0.1-2
- Add patch to fix up some endianness issues.
- Enable both test suites on all architectures.
commit af6aa5128dbc118edb7b4b3121f5989e79d4f4f1
Author: Jason Tibbitts <tibbs(a)math.uh.edu>
Date: Tue Jun 6 09:32:18 2017 -0500
Add patch to increate test suite timeout.
Sometimes armv7hl is just too slow to complete some of the tests within
20 seconds. Sigh.
diff --git a/cyrus-imapd.spec b/cyrus-imapd.spec
index 8b7e8fd..69d1ef5 100644
--- a/cyrus-imapd.spec
+++ b/cyrus-imapd.spec
@@ -30,8 +30,9 @@ Patch0: patch-cyrus-testsuite-endianness
Patch1: patch-cyrus-testsuite-endianness2
Patch2: patch-cyrus-testsuite-endianness3
Patch3: patch-cyrus-testsuite-endianness4
-Patch4: patch-cyrus-autoreconf-keep-version
-Patch5: patch-cyrus-fix-endianness-checks
+Patch4: patch-cyrus-testsuite-timeout
+Patch5: patch-cyrus-autoreconf-keep-version
+Patch6: patch-cyrus-fix-endianness-checks
Source10: cyrus-imapd.logrotate
Source11: cyrus-imapd.pam-config
@@ -625,10 +626,13 @@ getent passwd cyrus >/dev/null || /usr/sbin/useradd -c
"Cyrus IMAP Server" -d /v
%changelog
-* Fri Jun 02 2017 Jason L Tibbitts III <tibbs(a)math.uh.edu> - 3.0.1-3
+* Tue Jun 06 2017 Jason L Tibbitts III <tibbs(a)math.uh.edu> - 3.0.1-3
- Remove clamav from build requirements.
- Add --cleanup to Cassandane call to hopefully reduce build disk usage.
- Disable maxforkrate test on s390x; our builders are too slow to run it.
+- Use proper path to ctl_mboxlist in cron file.
+- Add patch to increase individual test timeout. Sometimes armv7hl can't
+ complete a single test in 20 seconds.
* Fri Jun 02 2017 Jason L Tibbitts III <tibbs(a)math.uh.edu> - 3.0.1-2
- Add patch to fix up some endianness issues.
diff --git a/patch-cyrus-testsuite-timeout b/patch-cyrus-testsuite-timeout
new file mode 100644
index 0000000..74fa4f8
--- /dev/null
+++ b/patch-cyrus-testsuite-timeout
@@ -0,0 +1,13 @@
+diff --git a/cunit/unit.c b/cunit/unit.c
+index 46dc358..ca37f22 100644
+--- a/cunit/unit.c
++++ b/cunit/unit.c
+@@ -97,7 +97,7 @@ EXPORTED void fatal(const char *s, int code)
+ }
+
+ /* Each test gets a maximum of 20 seconds. */
+-#define TEST_TIMEOUT_MS (20*1000)
++#define TEST_TIMEOUT_MS (30*1000)
+
+ static jmp_buf jbuf;
+ static const char *code;
commit a3b9d95bb6fb8840bf43a7aa40f4621cc0d08fd5
Author: Jason Tibbitts <tibbs(a)math.uh.edu>
Date: Tue Jun 6 09:30:38 2017 -0500
Use proper ctl_mboxlist path in cron file.
diff --git a/cyrus-imapd.cron-daily b/cyrus-imapd.cron-daily
index e973692..ca897c0 100644
--- a/cyrus-imapd.cron-daily
+++ b/cyrus-imapd.cron-daily
@@ -20,7 +20,7 @@ if [ -f /etc/sysconfig/cyrus-imapd ]; then
. /etc/sysconfig/cyrus-imapd
fi
-[ -x /usr/lib/cyrus-imapd/ctl_mboxlist ] || exit 0
+[ -x /usr/sbin/ctl_mboxlist ] || exit 0
[ -f /var/lib/imap/db/skipstamp ] || exit 0
# rotate mailbox lists
@@ -30,7 +30,7 @@ done
[ -f ${MBOXLIST}.gz ] && mv -f ${MBOXLIST}.gz ${MBOXLIST}.1.gz
# export mailboxes.db
-$RUNUSER - cyrus -s /bin/sh -c "umask 077 < /dev/null ;
/usr/lib/cyrus-imapd/ctl_mboxlist -d | gzip > ${MBOXLIST}.gz"
+$RUNUSER - cyrus -s /bin/sh -c "umask 077 < /dev/null ; /usr/sbin/ctl_mboxlist -d
| gzip > ${MBOXLIST}.gz"
exit 0
# EOF
commit 369cf89b1b55b5737ab2a4e5be425fb0bb32d6a1
Author: Jitka Plesnikova <jplesnik(a)redhat.com>
Date: Tue Jun 6 13:25:41 2017 +0200
Perl 5.26 rebuild
diff --git a/cyrus-imapd.spec b/cyrus-imapd.spec
index 8b7e8fd..1ee5e69 100644
--- a/cyrus-imapd.spec
+++ b/cyrus-imapd.spec
@@ -9,7 +9,7 @@
Name: cyrus-imapd
Version: 3.0.1
-Release: 3%{?dist}
+Release: 4%{?dist}
%define ssl_pem_file /etc/pki/%name/%name.pem
@@ -625,6 +625,9 @@ getent passwd cyrus >/dev/null || /usr/sbin/useradd -c "Cyrus
IMAP Server" -d /v
%changelog
+* Tue Jun 06 2017 Jitka Plesnikova <jplesnik(a)redhat.com> - 3.0.1-4
+- Perl 5.26 rebuild
+
* Fri Jun 02 2017 Jason L Tibbitts III <tibbs(a)math.uh.edu> - 3.0.1-3
- Remove clamav from build requirements.
- Add --cleanup to Cassandane call to hopefully reduce build disk usage.
commit 70470145b240cd86fb4c4aa4f91b408fe4d4ac1c
Author: Jason Tibbitts <tibbs(a)math.uh.edu>
Date: Mon Jun 5 17:28:41 2017 -0500
Exclude maxforks test on s390x; it's too slow to run it.
diff --git a/cyrus-imapd.spec b/cyrus-imapd.spec
index 88b693c..8b7e8fd 100644
--- a/cyrus-imapd.spec
+++ b/cyrus-imapd.spec
@@ -497,6 +497,10 @@ tests=(
for i in ${tests[@]}; do exclude+=("!$i"); done
%endif
+%ifarch s390x
+exclude+=("!Master.maxforkrate") # Our s390x hosts are too slow to complete
this test properly
+%endif
+
%ifarch i686 armv7hl
# Some additional failures only on 32-bit machines.
# 14 failures are due to Fedora's perl not supporting quad types in unpack.
@@ -624,6 +628,7 @@ getent passwd cyrus >/dev/null || /usr/sbin/useradd -c "Cyrus
IMAP Server" -d /v
* Fri Jun 02 2017 Jason L Tibbitts III <tibbs(a)math.uh.edu> - 3.0.1-3
- Remove clamav from build requirements.
- Add --cleanup to Cassandane call to hopefully reduce build disk usage.
+- Disable maxforkrate test on s390x; our builders are too slow to run it.
* Fri Jun 02 2017 Jason L Tibbitts III <tibbs(a)math.uh.edu> - 3.0.1-2
- Add patch to fix up some endianness issues.
commit b177185281714e11448717fb904d99290fe72486
Author: Jason Tibbitts <tibbs(a)math.uh.edu>
Date: Mon Jun 5 13:33:11 2017 -0500
Remove clamav support and reduce build disk use.
Remove the build dependency on clamav-devel so that cyr_virusscan and
such aren't built. Clamav still uses the old openssl libraries, and so
cyr_virusscan would occasionally segfault. This caused a Cassandane
failure on ppc64. (I have no idea why it only failed there.)
Add --cleanup to the testrunner.pl command line to keep disk usage
lower, This may help to fix an intermittent test failure which was
potentially related to disk space.
Bump to 3.0.1-3.
diff --git a/cyrus-imapd.spec b/cyrus-imapd.spec
index 40e960d..88b693c 100644
--- a/cyrus-imapd.spec
+++ b/cyrus-imapd.spec
@@ -9,7 +9,7 @@
Name: cyrus-imapd
Version: 3.0.1
-Release: 2%{?dist}
+Release: 3%{?dist}
%define ssl_pem_file /etc/pki/%name/%name.pem
@@ -81,11 +81,10 @@ BuildRequires: pkgconfig systemd tcp_wrappers transfig
BuildRequires: perl-devel perl-generators perl(ExtUtils::MakeMaker)
BuildRequires: perl(Pod::Html)
-BuildRequires: clamav-devel CUnit-devel cyrus-sasl-devel glib2-devel
-BuildRequires: jansson-devel krb5-devel libical-devel libnghttp2-devel
-BuildRequires: libxml2-devel net-snmp-devel openldap-devel
-BuildRequires: openssl-devel postgresql-devel shapelib-devel sqlite-devel
-BuildRequires: xapian-core-devel
+BuildRequires: CUnit-devel cyrus-sasl-devel glib2-devel jansson-devel
+BuildRequires: krb5-devel libical-devel libnghttp2-devel libxml2-devel
+BuildRequires: net-snmp-devel openldap-devel openssl-devel postgresql-devel
+BuildRequires: shapelib-devel sqlite-devel xapian-core-devel
# Miscellaneous modules needed for 'make check' to function:
BuildRequires: cyrus-sasl-plain cyrus-sasl-md5
@@ -489,7 +488,6 @@ for i in ${tests[@]}; do exclude+=("!JMAPMail.$i"); done
%ifarch ppc64 s390x
# Some failures only on little-endian machines for some reason
tests=(
- ClamAV.remove_infected # Only on ppc64, actually
JMAPContacts.getcontactgroupupdates
JMAPContacts.getcontactupdates
JMAPMail.getmailboxupdates
@@ -529,7 +527,7 @@ for i in ${tests[@]}; do exclude+=("!$i"); done
%endif
# Add -vvv for too much output
-./testrunner.pl %{?_smp_mflags} -f pretty ${exclude[@]} 2>&1
+./testrunner.pl %{?_smp_mflags} --cleanup -f pretty ${exclude[@]} 2>&1
%pre
@@ -623,6 +621,10 @@ getent passwd cyrus >/dev/null || /usr/sbin/useradd -c "Cyrus
IMAP Server" -d /v
%changelog
+* Fri Jun 02 2017 Jason L Tibbitts III <tibbs(a)math.uh.edu> - 3.0.1-3
+- Remove clamav from build requirements.
+- Add --cleanup to Cassandane call to hopefully reduce build disk usage.
+
* Fri Jun 02 2017 Jason L Tibbitts III <tibbs(a)math.uh.edu> - 3.0.1-2
- Add patch to fix up some endianness issues.
- Enable both test suites on all architectures.
commit c6a7c0199cd138196ea8b2a21c42af555688d0a2
Author: Jason Tibbitts <tibbs(a)math.uh.edu>
Date: Fri Jun 2 16:50:48 2017 -0500
Fix enianness issues, enable more tests.
Both test suites are now run on all architectures. A few Cassandane
tests need to be excluded on 32-bit and big-endian architectures, but
the built-in test suite passes in its entirety and the vast majority of
Cassandane runs just fine.
diff --git a/cyrus-imapd.spec b/cyrus-imapd.spec
index 6b9d140..40e960d 100644
--- a/cyrus-imapd.spec
+++ b/cyrus-imapd.spec
@@ -9,7 +9,7 @@
Name: cyrus-imapd
Version: 3.0.1
-Release: 1%{?dist}
+Release: 2%{?dist}
%define ssl_pem_file /etc/pki/%name/%name.pem
@@ -31,6 +31,7 @@ Patch1: patch-cyrus-testsuite-endianness2
Patch2: patch-cyrus-testsuite-endianness3
Patch3: patch-cyrus-testsuite-endianness4
Patch4: patch-cyrus-autoreconf-keep-version
+Patch5: patch-cyrus-fix-endianness-checks
Source10: cyrus-imapd.logrotate
Source11: cyrus-imapd.pam-config
@@ -399,14 +400,12 @@ find %buildroot -name ".packlist" -exec rm {} \;
%check
-# The test suite fails on big-endian machines currently. This is tracked at
-#
https://github.com/cyrusimap/cyrus-imapd/issues/1993
-%ifnarch s390x ppc64
make %{?_smp_mflags} check || exit 1
+
+%if %{without cassandane}
+exit 0
%endif
-%if %{with cassandane}
-%ifnarch s390x ppc64 i686 armv7hl
# Run the Cassandane test suite. This will exhaustively test the various
# server components, but running it in a mock chroot is rather an exercise.
# Sadly Cassandane simply can't run on a 32-bit host at the moment. It needs
@@ -432,63 +431,106 @@ export CYRUS_USER=$USER
# Most Cassandane tests pass, but using snapshots includes new tests which
# aren't supposed to pass on released versions of cyrus. So we have a big
# exclusion list.
+
# Note that Cassandane::Test::Core must always be excluded; it can't possibly
# work. The others are expected on 3.0.1 and should be removed and re-checked
# at each release.
- #!JMAPCalendars.creationids \
-
-# Add -vvv for too much output
-./testrunner.pl %{?_smp_mflags} -f pretty \
- !Cassandane::Test::Core \
- !Admin.imap_admins \
- !Fetch.fetch_flags_before_exists \
-\
- !JMAPCalendars.creationids \
- !JMAPCalendars.getcalendareventlist \
- !JMAPCalendars.getcalendareventlist_date \
- !JMAPCalendars.getcalendareventlist_datetime \
- !JMAPCalendars.getcalendareventlist_text \
- !JMAPCalendars.getcalendarevents_privacy \
- !JMAPCalendars.getcalendarevents_properties \
- !JMAPCalendars.getcalendarevents_relatedto \
- !JMAPCalendars.getcalendarevents_simple \
- !JMAPCalendars.getcalendareventupdates \
-\
- !JMAPCalendars.setcalendarevents_alerts \
- !JMAPCalendars.setcalendarevents_caldav \
- !JMAPCalendars.setcalendarevents_endtimezone \
- !JMAPCalendars.setcalendarevents_endtimezone_recurrence \
- !JMAPCalendars.setcalendarevents_isallday \
- !JMAPCalendars.setcalendarevents_links \
- !JMAPCalendars.setcalendarevents_localizations \
- !JMAPCalendars.setcalendarevents_locations \
- !JMAPCalendars.setcalendarevents_move \
- !JMAPCalendars.setcalendarevents_participantid \
- !JMAPCalendars.setcalendarevents_participants \
- !JMAPCalendars.setcalendarevents_prodid \
- !JMAPCalendars.setcalendarevents_recurrenceoverrides \
- !JMAPCalendars.setcalendarevents_relatedto \
- !JMAPCalendars.setcalendarevents_recurrence \
- !JMAPCalendars.setcalendarevents_schedule_cancel \
- !JMAPCalendars.setcalendarevents_schedule_reply \
- !JMAPCalendars.setcalendarevents_schedule_request \
- !JMAPCalendars.setcalendarevents_simple \
-\
- !JMAPMail.getmessagelist_attachments \
- !JMAPMail.getmessagelist_window \
- !JMAPMail.getmessages_body_nontext \
- !JMAPMail.getmessages_attachment_name \
- !JMAPMail.setmailboxes_destroy_empty \
- !JMAPMail.setmessages_attachments \
-\
- !Quota.num_folders_rename \
- !SearchFuzzy.cjk_words \
- !SearchFuzzy.xattachmentname \
- 2>&1
-
+exclude=('!Cassandane::Test::Core')
+
+tests=(
+ Admin.imap_admins Fetch.fetch_flags_before_exists Quota.num_folders_rename
+ SearchFuzzy.cjk_words SearchFuzzy.xattachmentname
+)
+for i in ${tests[@]}; do exclude+=("!$i"); done
+
+tests=(
+ creationids
+ getcalendareventlist
+ getcalendareventlist_date
+ getcalendareventlist_datetime
+ getcalendareventlist_text
+ getcalendarevents_privacy
+ getcalendarevents_properties
+ getcalendarevents_relatedto
+ getcalendarevents_simple
+ getcalendareventupdates
+ setcalendarevents_alerts
+ setcalendarevents_caldav
+ setcalendarevents_endtimezone
+ setcalendarevents_endtimezone_recurrence
+ setcalendarevents_isallday
+ setcalendarevents_links
+ setcalendarevents_localizations
+ setcalendarevents_locations
+ setcalendarevents_move
+ setcalendarevents_participantid
+ setcalendarevents_participants
+ setcalendarevents_prodid
+ setcalendarevents_recurrenceoverrides
+ setcalendarevents_relatedto
+ setcalendarevents_recurrence
+ setcalendarevents_schedule_cancel
+ setcalendarevents_schedule_reply
+ setcalendarevents_schedule_request
+ setcalendarevents_simple
+)
+for i in ${tests[@]}; do exclude+=("!JMAPCalendars.$i"); done
+
+tests=(
+ getmessagelist_attachments
+ getmessagelist_window
+ getmessages_attachment_name
+ getmessages_body_nontext
+ setmailboxes_destroy_empty
+ setmessages_attachments
+)
+for i in ${tests[@]}; do exclude+=("!JMAPMail.$i"); done
+
+%ifarch ppc64 s390x
+# Some failures only on little-endian machines for some reason
+tests=(
+ ClamAV.remove_infected # Only on ppc64, actually
+ JMAPContacts.getcontactgroupupdates
+ JMAPContacts.getcontactupdates
+ JMAPMail.getmailboxupdates
+ JMAPMail.getmessageupdates
+ JMAPMail.getthreadupdates
+)
+for i in ${tests[@]}; do exclude+=("!$i"); done
%endif
+
+%ifarch i686 armv7hl
+# Some additional failures only on 32-bit machines.
+# 14 failures are due to Fedora's perl not supporting quad types in unpack.
+# This is due to be fixed in rawhide soon, so some of these can go away.
+tests=(
+ JMAPContacts.setcontacts_importance_later
+ Metadata.expunge_messages
+ Metadata.msg_replication_new_mas_partial_wwd
+ Metadata.msg_replication_new_rep
+ Metadata.msg_replication_new_mas
+ Metadata.msg_replication_exp_bot
+ Metadata.msg_replication_new_mas_partial_wwsw
+ Metadata.msg_replication_exp_mas
+ Metadata.msg_replication_mod_mas
+ Metadata.msg_replication_exp_rep
+ Metadata.msg_replication_mod_bot_msl
+ Metadata.msg_replication_new_bot_mse_gul
+ Metadata.msg_replication_mod_bot_msh
+ Metadata.msg_replication_new_bot_mse_guh
+ Metadata.msg_replication_mod_rep
+ Reconstruct.reconstruct_removedfile
+ Reconstruct.reconstruct_truncated
+ Reconstruct.reconstruct_zerouid
+ Quota.reconstruct
+ Quota.reconstruct_orphans
+)
+for i in ${tests[@]}; do exclude+=("!$i"); done
%endif
+# Add -vvv for too much output
+./testrunner.pl %{?_smp_mflags} -f pretty ${exclude[@]} 2>&1
+
%pre
# Create 'cyrus' user on target host
@@ -581,6 +623,11 @@ getent passwd cyrus >/dev/null || /usr/sbin/useradd -c "Cyrus
IMAP Server" -d /v
%changelog
+* Fri Jun 02 2017 Jason L Tibbitts III <tibbs(a)math.uh.edu> - 3.0.1-2
+- Add patch to fix up some endianness issues.
+- Enable both test suites on all architectures.
+- Add arch-specific excludes for a few Cassandane tests.
+
* Thu Apr 20 2017 Jason L Tibbitts III <tibbs(a)math.uh.edu> - 3.0.1-1
- Initial attempt at importing 3.0. Many new dependencies.
- Use a stock sample imapd.conf file instead of a Fedora-provided one.
diff --git a/patch-cyrus-fix-endianness-checks b/patch-cyrus-fix-endianness-checks
new file mode 100644
index 0000000..7d518b2
--- /dev/null
+++ b/patch-cyrus-fix-endianness-checks
@@ -0,0 +1,66 @@
+diff --git a/lib/crc32.c b/lib/crc32.c
+index c42e7d6..4193f0f 100644
+--- a/lib/crc32.c
++++ b/lib/crc32.c
+@@ -611,7 +611,7 @@ static const uint32_t crc32_lookup[16][256] =
+ }
+ };
+
+-#ifndef LITTLE_ENDIAN
++#if BYTE_ORDER != LITTLE_ENDIAN
+ /* swap endianness */
+ static uint32_t swap(uint32_t x)
+ {
+@@ -634,7 +634,7 @@ static uint32_t crc32_slice8(uint32_t prev, const void *data, size_t
length)
+
+ /* process eight bytes at once (Slicing-by-8) */
+ while (length >= 8) {
+-#ifdef LITTLE_ENDIAN
++#if BYTE_ORDER == LITTLE_ENDIAN
+ uint32_t one = *current++ ^ crc;
+ uint32_t two = *current++;
+ crc = crc32_lookup[0][(two>>24) & 0xFF] ^
+@@ -682,7 +682,7 @@ static uint32_t crc32_slice16(uint32_t prev, const void *data, size_t
length)
+ while (length >= bytes_at_once) {
+ size_t unrolling;
+ for (unrolling = 0; unrolling < unroll; unrolling++) {
+-#ifdef LITTLE_ENDIAN
++#if BYTE_ORDER == LITTLE_ENDIAN
+ uint32_t one = *current++ ^ crc;
+ uint32_t two = *current++;
+ uint32_t three = *current++;
+diff --git a/lib/crc32c.c b/lib/crc32c.c
+index e33e793..66fc16e 100644
+--- a/lib/crc32c.c
++++ b/lib/crc32c.c
+@@ -591,7 +591,7 @@ static const uint32_t crc32c_lookup[4][256] = {
+ },
+ };
+
+-#ifndef LITTLE_ENDIAN
++#if BYTE_ORDER != LITTLE_ENDIAN
+ /* swap endianness */
+ static uint32_t swap(uint32_t x)
+ {
+@@ -615,7 +615,7 @@ static uint32_t crc32c_sw(uint32_t crc, const void *buf, size_t len)
{
+
+ /* process four bytes at once (slicing-by-4) */
+ while (len >= 4) {
+-#ifdef LITTLE_ENDIAN
++#if BYTE_ORDER == LITTLE_ENDIAN
+ crc1 = *cur++ ^ crc0;
+ crc0 = crc32c_lookup[0][(crc1>>24) & 0xff] ^
+ crc32c_lookup[1][(crc1>>16) & 0xff] ^
+diff --git a/lib/xsha1.c b/lib/xsha1.c
+index 1c4547e..6e41eee 100644
+--- a/lib/xsha1.c
++++ b/lib/xsha1.c
+@@ -89,7 +89,7 @@ struct _SHA_CTX {
+ /* blk0() and blk() perform the initial expand. */
+ /* I got the idea of expanding during the round function from SSLeay */
+
+-#ifdef LITTLE_ENDIAN
++#if BYTE_ORDER == LITTLE_ENDIAN
+ #define blk0(i) (block->l[i] = (rol(block->l[i],24)&(sha1_quadbyte)0xFF00FF00)
\
+ |(rol(block->l[i],8)&(sha1_quadbyte)0x00FF00FF))
+ #else