On 10. Aug 2021, at 14.17, Michael Ströder <michael@stroeder.com> wrote:

On 8/10/21 11:16 AM, Timo Sirainen wrote:
On 10. Aug 2021, at 10.33, Michael Ströder <michael@stroeder.com> wrote:

On 8/10/21 10:02 AM, Milan P. Stanić wrote:
I'm trying to upgrade dovecot from version 2.3.15 to 2.3.16 for alpine
linux. Build and 'make check' pass on all alpine architectures except on
s390x which is big-endian while all other are little-endian.

You're probably hitting the same issues like me on openSUSE.

See Timo's response to that:

https://dovecot.org/pipermail/dovecot/2021-August/122787.html

The attached patch probably helps?

Assuming I've applied the patch correctly it does not help on ppc64 and
S/390:

https://build.opensuse.org/package/show/home:stroeder:network/dovecot23

Well, that's annoying. I thought it would have worked. I wonder if it's still some issue with the #if not being right. Can you try once more with disabling the #if lines, i.e. just:

+static void
+copy_to_buf_last_used(struct mail_cache *cache, buffer_t *dest, bool add_new)
+{
+ size_t offset = offsetof(struct mail_cache_field, last_used);
+//#if defined(WORDS_BIGENDIAN) && TIME_T_BITS > 32
+ offset += sizeof(uint32_t);
+//#endif
+ copy_to_buf(cache, dest, add_new, offset, sizeof(uint32_t));
+}

If that doesn't work either, I'd somehow need to get access to a big-endian CPU to try to figure out where it's going wrong.