Initial update to 3.0.2.

This commit is contained in:
Jason Tibbitts 2017-06-22 10:44:44 -05:00
parent 2353fd391f
commit 8662054558
10 changed files with 15 additions and 497 deletions

View File

@ -8,8 +8,8 @@
%bcond_without cassandane
Name: cyrus-imapd
Version: 3.0.1
Release: 7%{?dist}
Version: 3.0.2
Release: 1%{?dist}
%define ssl_pem_file /etc/pki/%name/%name.pem
@ -26,25 +26,15 @@ 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-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
Patch0: patch-cyrus-testsuite-timeout
# Upstream https://github.com/cyrusimap/cyrus-imapd/issues/2026
Patch7: patch-cyrus-managesieve-linking
Patch1: patch-cyrus-managesieve-linking
# Upstream https://github.com/cyrusimap/cyrus-imapd/issues/2039
Patch2: patch-cyrus-pkgconfig-file
# Upstream https://github.com/cyrusimap/cassandane/issues/21
Patch8: patch-cyrus-32bit-reconstruct
Source10: cyrus-imapd.logrotate
Source11: cyrus-imapd.pam-config
@ -261,8 +251,7 @@ popd
# --with-cyrus-prefix and --with-service-path went away; use --with-libexecdir=
# instead.
# Running autoreconf will confuse the program about what version it is.
autoreconf -vi
#autoreconf -vi
%configure \
--disable-silent-rules \
@ -321,12 +310,10 @@ install -d \
%buildroot/%cyrexecdir \
%buildroot/etc/pki/%name
# Some tools which aren't installed by the makefile which we want
# Some tools which aren't installed by the makefile which we have always installed
install -m 755 notifyd/notifytest %buildroot%_bindir/
install -m 755 perl/imap/cyradm %buildroot%_bindir/
for i in arbitronsort.pl convert-sieve.pl dohash masssievec \
migrate-metadata mkimap mknewsgroups mupdate-loadgen.pl \
rehash translatesieve undohash upgradesieve; do
for i in arbitronsort.pl masssievec mkimap mknewsgroups rehash translatesieve; do
install -m 755 tools/$i %buildroot/%cyrexecdir/
done
@ -670,6 +657,9 @@ getent passwd cyrus >/dev/null || /usr/sbin/useradd -c "Cyrus IMAP Server" -d /v
%changelog
* Thu Jun 22 2017 Jason L Tibbitts III <tibbs@math.uh.edu> - 3.0.2-1
- Update to 3.0.2.
* Tue Jun 20 2017 Jason L Tibbitts III <tibbs@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.

View File

@ -1,22 +0,0 @@
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;
}

View File

@ -1,53 +0,0 @@
From 216934c3f4884999206715db3499fc0162e1d65c Mon Sep 17 00:00:00 2001
From: ellie timoney <ellie@fastmail.com>
Date: Tue, 30 May 2017 17:52:04 +1000
Subject: [PATCH] build: preserve release version across autoreconf
Administrators building from a release tarball can safely run
autoreconf without the source tree forgetting its version (or
worse, scavenging an unrelated version string from some git
repository in an ancestor directory).
---
Makefile.am | 6 +++++-
tools/git-version.sh | 4 ++++
3 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/Makefile.am b/Makefile.am
index 9a4fa49be..e37822aac 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -116,7 +116,8 @@ noinst_HEADERS =
noinst_LTLIBRARIES =
noinst_PROGRAMS =
EXTRA_DIST = \
- $(wildcard tools/vzic/*)
+ $(wildcard tools/vzic/*) \
+ VERSION
if COM_ERR
COMPILE_ET_DEP = com_err/et/compile_et
@@ -1910,6 +1911,9 @@ dist-hook:
find $(top_distdir) -type f -name .sphinx-build.stamp -delete
rm -rf $(top_distdir)/$(SPHINX_CACHE)
+VERSION: tools/git-version.sh
+ $(AM_V_GEN)$< > $@.NEW && mv $@.NEW $@
+
install-data-hook:
if CMULOCAL
$(INSTALL) -m 644 $(top_srcdir)/depot/depot.conf $(DESTDIR)/
diff --git a/tools/git-version.sh b/tools/git-version.sh
index 66563c162..c728769db 100755
--- a/tools/git-version.sh
+++ b/tools/git-version.sh
@@ -41,6 +41,10 @@
# OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
+# if we've come from a release package, ignore git entirely
+test -s VERSION &&
+ exec head -1 VERSION
+
# first try: based on annotated git tags (real releases)
version=$(git describe --dirty=-dirty 2>/dev/null)
test -n "$version" &&

View File

@ -1,66 +0,0 @@
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

View File

@ -1,18 +1,5 @@
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
index 45ae8ea..14d5327 100644
--- a/perl/sieve/managesieve/Makefile.PL.in
+++ b/perl/sieve/managesieve/Makefile.PL.in
@@ -69,7 +69,7 @@ WriteMakefile(

View File

@ -1,22 +0,0 @@
diff --git a/cunit/timeout.c b/cunit/timeout.c
index f02c9ac..a444ac8 100644
--- a/cunit/timeout.c
+++ b/cunit/timeout.c
@@ -197,7 +197,7 @@ int timeout_init(void (*cb)(void))
int timeout_begin(int millisec)
{
- int c;
+ char c;
int r;
// fprintf(stderr, "timeout_begin\n");
@@ -220,7 +220,7 @@ int timeout_begin(int millisec)
int timeout_end(void)
{
- int c;
+ char c;
int r;
// fprintf(stderr, "timeout_end\n");

View File

@ -1,20 +0,0 @@
diff --git a/imap/conversations.c b/imap/conversations.c
index 504c5db..2b151dc 100644
--- a/imap/conversations.c
+++ b/imap/conversations.c
@@ -560,11 +560,14 @@ EXPORTED int conversations_get_msgid(struct conversations_state *state,
&data, &datalen,
&state->txn);
+ if (r == CYRUSDB_NOTFOUND)
+ return 0; /* not an error, but nothing more to do */
+
if (!r) r = _conversations_parse(data, datalen, cids, NULL);
if (r) arrayu64_truncate(cids, 0);
- return 0;
+ return r;
}
/*

View File

@ -1,58 +0,0 @@
From e3ee582fcf74e0754d2a850fbabe270125e334e8 Mon Sep 17 00:00:00 2001
From: ellie timoney <ellie@fastmail.com>
Date: Wed, 31 May 2017 10:56:27 +1000
Subject: [PATCH] cunit: run cyrusdb tests first
Other suites depend on cyrusdb functionality so if it's broken, it
would be good to know that before they start complaining.
---
Makefile.am | 2 +-
cunit/{db.testc => aaa-db.testc} | 0
doc/internal/unit-tests.html | 2 +-
3 files changed, 2 insertions(+), 2 deletions(-)
rename cunit/{db.testc => aaa-db.testc} (100%)
diff --git a/Makefile.am b/Makefile.am
index e37822aac..c2c82d15d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -618,6 +618,7 @@ cunit_FRAMEWORK = \
cunit/timeofday.h
cunit_TESTS = \
+ cunit/aaa-db.testc \
cunit/annotate.testc \
cunit/backend.testc \
cunit/binhex.testc \
@@ -628,7 +629,6 @@ cunit_TESTS = \
cunit/command.testc \
cunit/conversations.testc \
cunit/crc32.testc \
- cunit/db.testc \
cunit/dlist.testc \
cunit/duplicate.testc \
cunit/getxstring.testc \
diff --git a/cunit/db.testc b/cunit/aaa-db.testc
similarity index 100%
rename from cunit/db.testc
rename to cunit/aaa-db.testc
diff --git a/doc/internal/unit-tests.html b/doc/internal/unit-tests.html
index a2c490dfb..75a945853 100644
--- a/doc/internal/unit-tests.html
+++ b/doc/internal/unit-tests.html
@@ -452,6 +452,7 @@
of the <tt>cunit_TESTS</tt> variable.</p>
<blockquote class="src">cunit_TESTS = \
+ cunit/aaa-db.testc \
cunit/annotate.testc \
cunit/backend.testc \
cunit/binhex.testc \
@@ -460,7 +461,6 @@
cunit/byteorder64.testc \
cunit/charset.testc \
cunit/<b>crc32</b>.testc \
- cunit/db.testc \
cunit/dlist.testc \
cunit/duplicate.testc \
</blockquote>

View File

@ -1,218 +0,0 @@
From 443e54646bc529654bc4bb2d58ddde9751f43fe2 Mon Sep 17 00:00:00 2001
From: ellie timoney <ellie@fastmail.com>
Date: Mon, 29 May 2017 15:35:38 +1000
Subject: [PATCH] cunit/conversations: conversations_open_path failures are
fatal
---
cunit/conversations.testc | 48 +++++++++++++++++++++++------------------------
1 file changed, 24 insertions(+), 24 deletions(-)
diff --git a/cunit/conversations.testc b/cunit/conversations.testc
index 026d271c9..85562cbed 100644
--- a/cunit/conversations.testc
+++ b/cunit/conversations.testc
@@ -22,7 +22,7 @@ static void test_open(void)
struct conversations_state *state = NULL;
r = conversations_open_path(DBNAME, &state);
- CU_ASSERT_EQUAL(r, 0);
+ CU_ASSERT_EQUAL_FATAL(r, 0);
r = conversations_abort(&state);
CU_ASSERT_EQUAL(r, 0);
@@ -38,7 +38,7 @@ static void test_getset(void)
arrayu64_t cids = ARRAYU64_INITIALIZER;
r = conversations_open_path(DBNAME, &state);
- CU_ASSERT_EQUAL(r, 0);
+ CU_ASSERT_EQUAL_FATAL(r, 0);
/* Database is empty, so get should succeed and report no results */
memset(&cid, 0x45, sizeof(cid));
@@ -62,7 +62,7 @@ static void test_getset(void)
CU_ASSERT_EQUAL(r, 0);
r = conversations_open_path(DBNAME, &state);
- CU_ASSERT_EQUAL(r, 0);
+ CU_ASSERT_EQUAL_FATAL(r, 0);
/* get should still succeed after the db is closed & reopened */
memset(&cid, 0x45, sizeof(cid));
@@ -87,7 +87,7 @@ static void test_abort(void)
arrayu64_t cids = ARRAYU64_INITIALIZER;
r = conversations_open_path(DBNAME, &state);
- CU_ASSERT_EQUAL(r, 0);
+ CU_ASSERT_EQUAL_FATAL(r, 0);
/* Database is empty, so get should succeed and report no results */
memset(&cid, 0x45, sizeof(cid));
@@ -113,7 +113,7 @@ static void test_abort(void)
/* open the db again */
r = conversations_open_path(DBNAME, &state);
- CU_ASSERT_EQUAL(r, 0);
+ CU_ASSERT_EQUAL_FATAL(r, 0);
/* the set vanished with the txn abort, so get should
* succeed and report no results */
@@ -147,7 +147,7 @@ static void test_prune(void)
unsigned int nseen = 0, ndeleted = 0;
r = conversations_open_path(DBNAME, &state);
- CU_ASSERT_EQUAL(r, 0);
+ CU_ASSERT_EQUAL_FATAL(r, 0);
/* Add keys, with delays in between */
/* TODO: CUnit needs a time warping system */
@@ -174,7 +174,7 @@ static void test_prune(void)
/* Should be able to get all 3 msgids */
r = conversations_open_path(DBNAME, &state);
- CU_ASSERT_EQUAL(r, 0);
+ CU_ASSERT_EQUAL_FATAL(r, 0);
memset(&cid, 0x45, sizeof(cid));
arrayu64_truncate(&cids, 0);
@@ -247,10 +247,10 @@ static void test_two(void)
arrayu64_t cids = ARRAYU64_INITIALIZER;
r = conversations_open_path(DBNAME, &state1);
- CU_ASSERT_EQUAL(r, 0);
+ CU_ASSERT_EQUAL_FATAL(r, 0);
r = conversations_open_path(DBNAME2, &state2);
- CU_ASSERT_EQUAL(r, 0);
+ CU_ASSERT_EQUAL_FATAL(r, 0);
/* Databases are empty, so gets of either msgid from either db
* should succeed and report no results */
@@ -385,8 +385,8 @@ static void test_folder_rename(void)
conv_folder_t *folder;
r = conversations_open_path(DBNAME, &state);
- CU_ASSERT_EQUAL(r, 0);
- CU_ASSERT_PTR_NOT_NULL(state);
+ CU_ASSERT_EQUAL_FATAL(r, 0);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(state);
/* setup the records we expect */
r = conversations_add_msgid(state, C_MSGID1, C_CID);
@@ -420,7 +420,7 @@ static void test_folder_rename(void)
/* open the db again */
r = conversations_open_path(DBNAME, &state);
- CU_ASSERT_EQUAL(r, 0);
+ CU_ASSERT_EQUAL_FATAL(r, 0);
/* do a rename */
r = conversations_rename_folder(state, FOLDER2, FOLDER3);
@@ -432,7 +432,7 @@ static void test_folder_rename(void)
/* open the db again */
r = conversations_open_path(DBNAME, &state);
- CU_ASSERT_EQUAL(r, 0);
+ CU_ASSERT_EQUAL_FATAL(r, 0);
conv = NULL;
r = conversation_load(state, C_CID, &conv);
@@ -475,7 +475,7 @@ static void test_folders(void)
imapopts[IMAPOPT_CONVERSATIONS_COUNTED_FLAGS].val.s = "\\Draft $HasRandom";
r = conversations_open_path(DBNAME3, &state);
- CU_ASSERT_EQUAL(r, 0);
+ CU_ASSERT_EQUAL_FATAL(r, 0);
imapopts[IMAPOPT_CONVERSATIONS_COUNTED_FLAGS].val.s = NULL;
@@ -672,7 +672,7 @@ static void test_folders(void)
/* open the db again */
r = conversations_open_path(DBNAME3, &state);
- CU_ASSERT_EQUAL(r, 0);
+ CU_ASSERT_EQUAL_FATAL(r, 0);
/* get should still succeed and report all values we gave it */
conv = NULL;
@@ -805,7 +805,7 @@ static void test_folder_ordering(void)
int *counts = 0;
r = conversations_open_path(DBNAME, &state);
- CU_ASSERT_EQUAL(r, 0);
+ CU_ASSERT_EQUAL_FATAL(r, 0);
/* Database is empty, so get should succeed and report no results */
conv = NULL;
@@ -903,7 +903,7 @@ static void test_folder_ordering(void)
/* open the db again */
r = conversations_open_path(DBNAME, &state);
- CU_ASSERT_EQUAL(r, 0);
+ CU_ASSERT_EQUAL_FATAL(r, 0);
/* get should still succeed and report all values we gave it */
conv = NULL;
@@ -956,7 +956,7 @@ static void __test_senders(void)
int *counts = 0;
r = conversations_open_path(DBNAME, &state);
- CU_ASSERT_EQUAL(r, 0);
+ CU_ASSERT_EQUAL_FATAL(r, 0);
/* Database is empty, so get should succeed and report no results */
conv = NULL;
@@ -1045,7 +1045,7 @@ static void __test_senders(void)
/* open the db again */
r = conversations_open_path(DBNAME, &state);
- CU_ASSERT_EQUAL(r, 0);
+ CU_ASSERT_EQUAL_FATAL(r, 0);
/* get should still succeed and report all values we gave it */
conv = NULL;
@@ -1150,7 +1150,7 @@ static void test_dump(void)
/* generate some data in the database */
r = conversations_open_path(DBNAME, &state);
- CU_ASSERT_EQUAL(r, 0);
+ CU_ASSERT_EQUAL_FATAL(r, 0);
for (i = 0 ; i < N_MSGID_TO_CID ; i++) {
gen_msgid_cid(i, msgid, sizeof(msgid), &cid);
@@ -1179,7 +1179,7 @@ static void test_dump(void)
/* open and dump the database */
r = conversations_open_path(DBNAME, &state);
- CU_ASSERT_EQUAL(r, 0);
+ CU_ASSERT_EQUAL_FATAL(r, 0);
conversations_dump(state, fp);
@@ -1198,7 +1198,7 @@ static void test_dump(void)
/* open and truncate the database */
r = conversations_open_path(DBNAME, &state);
- CU_ASSERT_EQUAL(r, 0);
+ CU_ASSERT_EQUAL_FATAL(r, 0);
r = conversations_truncate(state);
CU_ASSERT_EQUAL(r, 0);
@@ -1208,7 +1208,7 @@ static void test_dump(void)
/* check we can no longer find any of the data */
r = conversations_open_path(DBNAME, &state);
- CU_ASSERT_EQUAL(r, 0);
+ CU_ASSERT_EQUAL_FATAL(r, 0);
for (i = 0 ; i < N_MSGID_TO_CID ; i++) {
gen_msgid_cid(i, msgid, sizeof(msgid), &cid);
@@ -1234,7 +1234,7 @@ static void test_dump(void)
/* finally check that we got all the data back */
r = conversations_open_path(DBNAME, &state);
- CU_ASSERT_EQUAL(r, 0);
+ CU_ASSERT_EQUAL_FATAL(r, 0);
for (i = 0 ; i < N_MSGID_TO_CID ; i++) {
gen_msgid_cid(i, msgid, sizeof(msgid), &cid);

View File

@ -1,3 +1,3 @@
SHA512 (cassandane-testdata-20170523.tar.gz) = 705f5af6a31fe3b8d6e8027bbddbedb2f64d65997f8a06620ec07fcd30a95d98ac3f3fbef7af5080684ee21be1c5b8bcad2374b2749f0571099e780355a04420
SHA512 (cyrus-imapd-3.0.1.tar.gz) = 0a2bf13b4793e642f3df53231fd66774e0c5ad753b436a7fb0645db6ee70121d0da245038527cc58cb078255fec3e7b32a6230c196cceea040f74813ef78e337
SHA512 (cassandane-2f8f3f4.tar.gz) = b949155b85e30a9cabd5992806fafe78a462662297398e8a74856f345c063769e5e419d01777e08c1f326622244181667ead47a057e38b1974ec121e7913a955
SHA512 (cyrus-imapd-3.0.2.tar.gz) = 95f145733a4b2589b2f7eb6281ce0d1df5788521dea0c81fda10c7c7ae4ac7cf1a9037dba45deee6101a73bbde4552906d7c6bfa9369aa3c802061a7f5cec85d