cyrus-imapd2
Build times (auto-updated)
- i686: 1m10s (2026-09-10 07:20 UTC, serial)
- x86_64: 1m15s (2026-09-10 07:21 UTC, serial)
- armv6h: 38m55s (2026-09-10 08:00 UTC, remote)
- armv7h: 14m54s (2026-09-10 08:00 UTC, remote)
- pentium4: 3m24s (2026-09-10 18:25 UTC, serial)
- Path: arch/adapted/cyrus-imapd2
2026-08-20: renamed pkgname to match the real AUR package; fixed a real 32-bit-only pointer-type bug
- This directory is descended from a plain “cyrus-imapd” AUR PKGBUILD
(maintainer Carsten Feuls), but the directory itself is named/intended
to be the separate, actual AUR
cyrus-imapd2package – the internalpkgname=had never been updated to match, the same class of directory/pkgname mismatch hit earlier this session withtrojita-git. Fixed the same way: kept a_pkgname=cyrus-imapdvar for the real upstream source references (tarball URL,$srcdirsubdirectory,cdtargets), setpkgname=cyrus-imapd2for everything package-identity-related (install=, licenses/doc install dirs). Renamedcyrus-imapd.install->cyrus-imapd2.installto match. Addedprovides/conflicts/replaces=('cyrus-imapd')(on top of the pre-existingimap-server/pop3-server) so it properly supersedes a plaincyrus-imapdinstall, matching the real AUR cyrus-imapd2’s own semantics.pkgrel2.1 -> 2.2 for the rename. - User had a reference copy at
/data/INSTALL/cyrus-imapd-2-from-eurobuild3with two useful patches this directory already had integrated (cyrus-imapd-2.5.17-perl-5.36-assert.patch,cyrus-imapd-2.5.17-mib-missing-semicocon-util-funcs.patch) – confirmed identical content, no changes needed there. Both patches are small local fixes (not fetched from an obscure/one-off source), so nosrc/mirror upload needed for them. CC=gcc CFLAGS='-fPIC -std=gnu17'(wasCC=clang, undeclared makedepend) – root cause:imap/mboxlist.hdeclares callback params as old K&R-style unprototyped function pointers, which clang tolerated but GCC’s current default standard (gnu23) now rejects as a hard incompatible-pointer-types error.-std=gnu17restores the looser semantics this code was written for.- New 32-bit-only bug found this build (i686 failed even with the
gnu17 fix applied, x86_64 succeeded):
imap/mboxevent.c:831declaredunsigned long len = 0;butlib/map.h’smap_refresh()/map_free()prototypes takesize_t *len. On x86_64,size_tandunsigned longare the identical 8-byte type, so this was silently fine. On i686,size_tisunsigned int– a genuinely distinct type fromunsigned longdespite matching 4-byte width – so GCC’s-Wincompatible-pointer-types(a hard error by default in current GCC) rejected it. This is a real, narrow, pre-existing upstream bug (latent on 64-bit, only surfaces as a build error on 32-bit); fixed with a new patch,cyrus-imapd-2.5.17-mboxevent-size_t-pointer-mismatch.patch(unsigned long len->size_t len, one-line change).pkgrel2.2 -> 2.3. - Result: builds and publishes cleanly on x86_64 and i686.
armv6h/armv7hare declared inarch=()but skipped both times (SKIPPED armv6h/armv7h (no local extra-*-build)) – no local archbuild chroot for those arches on this workstation, not a package problem.pentium4was never inarch=()to begin with (inherited from the original AUR package, not evaluated this round – would be worth trying given how narrow the i686 fix was, if picked up again). sed -i'' 's/gettid/_gettid/g' lib/cyrusdb_berkeley.cinline fix inbuild()still not converted to a proper patch file (per the project’s “patch files, not inline edits” convention) – left as-is, not addressed this round. ## 2026-09-10: content-free rebuild for armv6h/armv7h coverage, pkgrel 2.3 -> 2.4
Requested alongside private/optdb5.3 – pure rebuild-for-coverage,
no PKGBUILD content change. armv6h/armv7h were skipped in the
2026-08-20 build above for lack of a local chroot; now covered by the
eurobuild4/eurobuild5 remote-build boards. pkgrel 2.3 -> 2.4
(the existing adapted/ X.Y rule, unconditional regardless of
content-change status – see memory/PKGREL_VS_PKGVER.md).
Board collision with private/optdb5.3’s own armv7h build,
same session: both packages requested together, and repo_build.sh
launches all of a package’s remote archs concurrently with each
other (by design, they’re independent boards) – but optdb5.3 and
cyrus-imapd2 both need armv7h, i.e. the same board (eurobuild5).
optdb5.3’s armv7h job had a ~2min head start when
cyrus-imapd2’s own armv7h job launched on the same board
(eurobuild5 is single-core/low-RAM, per remote_build.conf’s own
comment – running two builds on it at once was a real risk, not
just theoretical). Killed cyrus-imapd2’s armv7h remote job (the
repo_build_remote.sh/ssh process pair, confirmed no orphaned
process left on the board afterward) while leaving optdb5.3’s alone
(further along) and cyrus-imapd2’s own armv6h (a different
board, eurobuild4) untouched. repo_build.sh handled the killed
job gracefully – reported armv7h FAILED, still signed/published
the 3 archs that did succeed (i686/x86_64/armv6h). Retried
armv7h alone afterward via REPO_BUILD_ONLY_ARCH=armv7h
./scripts/repo_release.sh adapted/cyrus-imapd2 once eurobuild5 was
confirmed free – built and published cleanly.
Takeaway for next time: check arch=() overlap across all
remote-mapped archs, not just whether two packages are literally the
same package, before launching multiple repo_release.sh runs
concurrently – the collision is per-board, not per-package.
New finding, unrelated to the rebuild itself: namcap flagged a
real missing runtime dependency during this build –
cyrus-imapd2 E: Dependency jansson detected and not included
(libraries ['usr/lib/libjansson.so.4'] needed in files
['usr/lib/libcyrus_imap.so.0.0.0']). Pre-existing (not introduced by
this rebuild, depends=() wasn’t touched), not fixed this round –
next real edit to this PKGBUILD should add jansson to depends=().
2026-09-10 (same day): fixed the jansson dependency, pkgrel 2.4 -> 2.5
Added jansson to depends=() (real content change, plain adapted/
X.Y bump). Cleaned a stale leftover armv7h build artifact in
/data/INSTALL/cyrus-imapd2 first (left over from the earlier
armv7h-only retry’s fetch step, not cleaned up automatically) –
per the “check stale artifacts before build” convention, since
repo-add is last-write-wins by pkgname and a stale file could have
silently clobbered this publish. Confirmed both remote boards
(eurobuild4/eurobuild5) free before launching this time, no
collision. Rebuilt and published cleanly on all 4 wished archs
(i686/x86_64/armv6h/armv7h); namcap’s missing-jansson
warning is gone from this build’s log. armv6h took notably longer
this time (38m55s vs the previous run) – board load variance, not a
regression to chase.
- Lesson: a K&R-implicit-declaration fix (
-std=gnu17) and a strict-pointer-type-mismatch fix (size_tvsunsigned long) look similar (both show up as-Wincompatible-pointer-typeserrors, both only bite on GCC’s stricter modern defaults) but are different root causes needing different fixes – worth checking whether an i686-only build failure surviving an existing K&R fix is actually a second, arch-width-dependent type mismatch rather than the same bug recurring.
2026-09-10 (later same day): added pentium4, no pkgrel bump needed
User asked why pentium4 was missing – answer: it was simply never
in arch=() at all (inherited unevaluated from the original AUR
PKGBUILD), not a build failure. Added it. Initially bumped pkgrel
2.5 -> 2.6 out of habit (the adapted/ X.Y rule) – user caught it:
“Are you sure we have to bump pkgrel here… Because we are just
adding new subarchs.” Correct: a purely-additive arch=() edit
(new arch only, no already-published arch touched) needs no bump at
all – there’s no existing publish for that arch to version-skew
against. Reverted to 2.5, built pentium4 alone
(REPO_BUILD_ONLY_ARCH=pentium4). Built and published cleanly in
3m24s, no arch-specific fixes needed – confirms the earlier hunch
that the narrow i686 size_t fix would carry over fine. Full
writeup of the general rule in memory/PKGREL_VS_PKGVER.md’s “A
purely-additive arch=() edit needs no pkgrel bump at all” section.