Re: Cyrus IMAP 3.12.3, 3.10.3, and 3.8.7 released

"ellie timoney" <[email protected]> Fri, 17 Jul 2026 12:47:00 +1000
Newsgroups gmane.mail.imap.cyrus
Message-ID <[email protected]>
Hi,

On Thu, 16 Jul 2026, at 4:37 AM, Jean Charles Del=C3=A9pine wrote:
> I would like to backport my PR #6081 to the 3.8 branch (my production=20=
=20
> installation is currently running Cyrus 3.8), but I am having trouble=20=
=20
> reproducing the build/test environment used by the project.

If you create a new PR containing the backported code, and set its target b=
ranch to cyrus-imapd-3.8 instead of master, then it should run in the 3.8 C=
I for you.  So maybe you don't need to reproduce the environment locally.

That said, I'll provide some details below in case they're helpful or inter=
esting.

> I am using the Cyrus Docker environment=20=20
> (ghcr.io/cyrusimap/cyrus-docker:bookworm) and the dar workflow, but I=20=
=20
> have not been able to get a clean build, either for the 3.8 branch or=20=
=20
> for 3.10.

We don't expect dar to work for 3.8 or 3.10, they're too different from mas=
ter.  I think it should work for 3.12, but I don't know this for fact.  I d=
on't use it myself much yet, I already had my own tools.

> Could you please let me know how the development team currently builds=20=
=20
> and tests these branches?

Sure.

> In particular:
>
>      Which Docker image/tag is used for CI and developer testing?

Depends on the branch.  You can find out which by checking out the branch, =
and then look for "image:" in .github/workflows/main.yml.  For 3.8 and 3.10=
, it's:

image: ghcr.io/cyrusimap/cyrus-docker:bookworm-libs42

If you already know docker, I assume you can work out what to do with this.

>      What is the expected dar workflow to build a release branch?

There isn't one, yet.  I expect this will change when the current master br=
anch becomes a stable release, but the older branches will probably always =
use the older process.  I'll talk about this more shortly.

>      Are there any branch-specific configuration steps or dependencies=20=
=20
> that are not obvious from the Docker image?

If you mimic what that main.yml file does directly in your container, you s=
hould be on the right track.
In particular, notice that the step with the name "configure and build" run=
s "./tools/build-with-cyruslibs.sh", it does not run cyd.  So that script s=
hould provide some guidance as to what you need to set up.

If you build with -Werror like I do, then 3.8 and 3.10 will need -Wno-depre=
cated and -Wno-discarded-qualifiers.

The exact process I use to build 3.8, without docker, dar, or cyd, is this:

git checkout cyrus-imapd-3.8
git clean -xfd
use-cyruslibs 42
CFLAGS=3D'-Wno-deprecated -Wno-discarded-qualifiers' cyrus-cfg
make check
cyrus-instcass
(I then run cassandane in a different terminal.)

cyrus-cfg and cyrus-instcass are my convenience scripts, and use-cyruslibs =
is a shell alias in my bashrc.  These are all in https://github.com/elliefm=
/cyrus-build-tools -- I do not recommend using my tools directly, but they =
might be useful to refer to.

The exact process I use to build a 3.8 release tarball is this:

git checkout cyrus-imapd-3.8
git clean -xfd
use-cyruslibs 42
autoreconf -is
./configure --enable-maintainer-mode
distcheck

Note that I don't use my cyrus-cfg script here, I run configure directly.  =
distcheck is another shell alias, it just runs `make distcheck` with PATH f=
ixed for cyruslibs.

> I am asking because I need to prepare a backport for a Cyrus 3.8=20=20
> installation in production, and the security fixes included in 3.8.7=20=20
> make it important for me to validate the backport quickly.
>
> I would like to make sure I am using the same environment as the=20=20
> project before preparing the patch.

Hope this is helpful!

Cheers,

ellie

------------------------------------------
Cyrus: Info
Permalink: https://cyrus.topicbox.com/groups/info/T78ae3d33b340593c-M2488c4=
43f4c5885c4193deb3
Delivery options: https://cyrus.topicbox.com/groups/info/subscription