dovecot 2.3.16 fail one test on s390x, alpine linux
Hi,
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.
here is the part from CI build log which fails:
mail cache size corruption ........................................... : ok 0 / 10 tests failed test-mail-cache-fields.c:50: Assert failed: cache_field.last_used == priv->field.last_used && cache_field.decision == priv->field.decision test-mail-cache-fields.c:65: Assert failed: cache_field.last_used == priv->field.last_used && cache_field.decision == priv->field.decision test-mail-cache-fields.c:94: Assert failed: cache_field.last_used == priv->field.last_used && cache_field.decision == priv->field.decision mail cache fields read-write ......................................... : FAILED 1 / 1 tests failed make[3]: *** [Makefile:1279: check-local] Error 1 make[3]: Leaving directory '/builds/alpine/aports/main/dovecot/src/dovecot-2.3.16/src/lib-index' make[2]: *** [Makefile:1049: check-am] Error 2 make[2]: Target 'check' not remade because of errors. make[2]: Leaving directory '/builds/alpine/aports/main/dovecot/src/dovecot-2.3.16/src/lib-index' Making check in lib-storage
Full log is here: https://gitlab.alpinelinux.org/alpine/aports/-/jobs/459182/raw
-- Kind regards
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
Ciao, Michael.
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?
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
You can download the complete build log, e.g. deep-link for S/390 build log:
https://build.opensuse.org/build/home:stroeder:network/openSUSE_Factory_zSys...
Ciao, Michael.
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 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.
Timo,
On 8/10/21 5:55 PM, Timo Sirainen wrote:
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:
It's currently still building on other big-endian platforms. But at least S/390 succeeded. (All low-endian platforms now fail but that's expected.)
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.
openSUSE build system is open for the public:
Get yourself an account by clicking "Sign Up" here: https://build.opensuse.org
You then have a home project home:username in which you can build any packages you want for a wide range of platforms. The build workers are often native hardware.
You could branch the existing official devel dovecot23 package and do whatever tests you want to do:
https://build.opensuse.org/package/show/server:mail/dovecot23
My own package builds are also just a branch of the above where I prepare the 2.3.16 update:
https://build.opensuse.org/package/show/home:stroeder:network/dovecot23
Let me know if you need further information, though I'm not an OBS expert.
Ciao, Michael.
On 10. Aug 2021, at 19.54, Michael Ströder michael@stroeder.com wrote:
Timo,
On 8/10/21 5:55 PM, Timo Sirainen wrote:
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:
It's currently still building on other big-endian platforms. But at least S/390 succeeded. (All low-endian platforms now fail but that's expected.)
The attached patch should work. TIME_T_BITS was originally typoed, should have been TIME_T_MAX_BITS. But even that isn't really a good way to check it. SIZEOF_VOID_P == 8 should work well enough.
On 8/10/21 8:59 PM, Timo Sirainen wrote:
On 10. Aug 2021, at 19.54, Michael Ströder michael@stroeder.com wrote:
Timo,
On 8/10/21 5:55 PM, Timo Sirainen wrote:
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:
It's currently still building on other big-endian platforms. But at least S/390 succeeded. (All low-endian platforms now fail but that's expected.)
The attached patch should work.
This works. Thank you.
So I can push the update towards openSUSE Factory now.
Ciao, Michael.
On Wed, 2021-08-11 at 00:37, Michael Ströder wrote:
On 8/10/21 8:59 PM, Timo Sirainen wrote:
On 10. Aug 2021, at 19.54, Michael Str?der <michael at stroeder.com> wrote:
Timo,
On 8/10/21 5:55 PM, Timo Sirainen wrote:
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:
It's currently still building on other big-endian platforms. But at least S/390 succeeded. (All low-endian platforms now fail but that's expected.)
The attached patch should work.
This works. Thank you.
Can confirm that this also works on Alpine Linux. I pushed it to builders and it passed all of them.
Thank you all for the fixes and help.
-- Kind regards
So I can push the update towards openSUSE Factory now.
Ciao, Michael.
participants (3)
-
Michael Ströder
-
Milan P. Stanić
-
Timo Sirainen