Hi,

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

If you create a new PR containing the backported code, and set its target 
branch to cyrus-imapd-3.8 instead of master, then it should run in the 3.8 CI 
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 
interesting.

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

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

> Could you please let me know how the development team currently builds  
> 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 branch 
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  
> that are not obvious from the Docker image?

If you mimic what that main.yml file does directly in your container, you 
should be on the right track.
In particular, notice that the step with the name "configure and build" runs 
"./tools/build-with-cyruslibs.sh", it does not run cyd.  So that script should 
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-deprecated 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='-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 fixed 
for cyruslibs.

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

Hope this is helpful!

Cheers,

ellie

------------------------------------------
Cyrus: Info
Permalink: 
https://cyrus.topicbox.com/groups/info/T78ae3d33b340593c-M2488c443f4c5885c4193deb3
Delivery options: https://cyrus.topicbox.com/groups/info/subscription

Reply via email to