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
