Skip to content

Commit

Permalink
Merge branch 'master' into master-good_bye_cyrus_db_sync
Browse files Browse the repository at this point in the history
  • Loading branch information
ksmurchison committed Sep 16, 2024
2 parents 9fa8aa1 + f6b964d commit b25a4f5
Show file tree
Hide file tree
Showing 2,631 changed files with 335,743 additions and 55,005 deletions.
2 changes: 2 additions & 0 deletions .github/dco.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
require:
members: false
82 changes: 82 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
name: Cyrus IMAP CI

on:
workflow_dispatch:
push:
branches:
- master
- main
- 'cyrus-imapd-*'
pull_request:
branches:
- master
- main
- 'cyrus-imapd-*'
jobs:
build:
runs-on: ubuntu-latest
container:
image: cyrusimapdocker/cyrus-buster:latest
options: --sysctl net.ipv6.conf.all.disable_ipv6=0 --init
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: install missing or frequently-updated deps
shell: bash
run: |
cpanm IO::File::fcntl
cpanm Digest::CRC
cpanm XML::Simple # XXX could be grabbed from apt by docker image
cpanm Mail::IMAPTalk # in image, but fetch latest!
- name: setup git safe directory
shell: bash
run: git config --global --add safe.directory /__w/cyrus-imapd/cyrus-imapd
- name: fetch upstream release tags
if: ${{ github.repository != 'cyrusimap/cyrus-imapd' }}
shell: bash
run: |
git remote add upstream https://github.com/cyrusimap/cyrus-imapd.git
# n.b. --no-tags does not mean "no tags", it means "no automatic tag
# following". we're explicitly fetching the tags we want, we do not
# need every other tag that's reachable from them
git fetch --no-tags upstream 'refs/tags/cyrus-imapd-*:refs/tags/cyrus-imapd-*'
- name: configure and build
shell: bash
run: |
echo "building cyrus version" $(./tools/git-version.sh)
./tools/build-with-cyruslibs.sh
- name: report version information
shell: bash
run: |
echo "debian" $(cat /etc/debian_version)
echo "Mail::IMAPTalk" $(cpanm --info Mail::IMAPTalk)
/usr/cyrus/libexec/master -V
/usr/cyrus/sbin/cyr_buildinfo
- name: update jmap test suite
working-directory: /srv/JMAP-TestSuite.git
shell: bash
run: |
git fetch
git checkout origin/master
git clean -f -x -d
cpanm --installdeps .
- name: set up cassandane
working-directory: cassandane
shell: bash
run: |
cp -af cassandane.ini.dockertests cassandane.ini
chown cyrus:mail cassandane.ini
make -j8
- name: run cassandane quietly
id: cass1
continue-on-error: true
working-directory: cassandane
run: setpriv --reuid=cyrus --regid=mail --clear-groups --inh-caps='-chown,-dac_override,-dac_read_search,-fowner,-fsetid,-kill,-setgid,-setuid,-setpcap,-linux_immutable,-net_bind_service,-net_broadcast,-net_admin,-net_raw,-ipc_lock,-ipc_owner,-sys_module,-sys_rawio,-sys_chroot,-sys_ptrace,-sys_pacct,-sys_admin,-sys_boot,-sys_nice,-sys_resource,-sys_time,-sys_tty_config,-mknod,-lease,-audit_write,-audit_control,-setfcap,-mac_override,-mac_admin,-syslog,-wake_alarm,-block_suspend,-audit_read,-cap_38,-cap_39,-cap_40' ./testrunner.pl --slow -f prettier -j 8 !Test::Core
- name: rerun cassandane failures noisily
if: ${{ steps.cass1.outcome == 'failure' }}
working-directory: cassandane
run: setpriv --reuid=cyrus --regid=mail --clear-groups --inh-caps='-chown,-dac_override,-dac_read_search,-fowner,-fsetid,-kill,-setgid,-setuid,-setpcap,-linux_immutable,-net_bind_service,-net_broadcast,-net_admin,-net_raw,-ipc_lock,-ipc_owner,-sys_module,-sys_rawio,-sys_chroot,-sys_ptrace,-sys_pacct,-sys_admin,-sys_boot,-sys_nice,-sys_resource,-sys_time,-sys_tty_config,-mknod,-lease,-audit_write,-audit_control,-setfcap,-mac_override,-mac_admin,-syslog,-wake_alarm,-block_suspend,-audit_read,-cap_38,-cap_39,-cap_40' ./testrunner.pl -f pretty -j 8 --rerun
- name: collect logs
if: always()
run: cat /tmp/cass/*/conf/log/syslog
23 changes: 15 additions & 8 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
*.gcda
*.la
*.lo
*.loT
*.o
*.orig
*.patch
Expand All @@ -14,6 +15,7 @@
*.tar.bz2
*.*-cunit.c
*~
.clang-format
.cunit-*.c
.deps
.dirstamp
Expand All @@ -32,8 +34,13 @@ backup/ctl_backups
backup/cyr_backup
backup/restore
bench/cyrdbbench
cmulocal/
cmulocal/libtool.m4
cmulocal/ltoptions.m4
cmulocal/ltsugar.m4
cmulocal/ltversion.m4
cmulocal/lt~obsolete.m4
compile
confdefs.h
config.guess
config.h
config.h.in
Expand All @@ -42,6 +49,7 @@ config.status
config.status.lineno
config.sub
configure
conftest*
com_err/et/compile_et
coverage.xml
cscope.out
Expand Down Expand Up @@ -79,11 +87,14 @@ imap/cyr_deny
imap/cyr_df
imap/cyr_expire
imap/cyr_info
imap/cyr_ls
imap/cyr_pwd
imap/cyr_sequence
imap/cyr_sphinxmgr
imap/cyr_synclog
imap/cyr_userseen
imap/cyr_virusscan
imap/cyr_withlock_run
imap/cyrdump
imap/dav_reconstruct
imap/deliver
Expand All @@ -94,6 +105,7 @@ imap/http_carddav_js.h
imap/http_err.c
imap/http_err.h
imap/httpd
imap/ical_apply_patch
imap/idled
imap/imap_err.c
imap/imap_err.h
Expand All @@ -104,8 +116,6 @@ imap/jmap_err.h
imap/lmtp_err.c
imap/lmtp_err.h
imap/lmtpd
imap/lmtpstats.c
imap/lmtpstats.h
imap/mbexamine
imap/mbpath
imap/mbtool
Expand All @@ -120,10 +130,9 @@ imap/pop3d
imap/promdata.c
imap/promdata.h
imap/promstatsd
imap/pushstats.c
imap/pushstats.h
imap/quota
imap/reconstruct
imap/relocate_by_id
imap/search_test
imap/smmapd
imap/squatter
Expand Down Expand Up @@ -199,10 +208,8 @@ sieve/sieve_err.h
sieve/sievec
sieve/sieved
sieve/test
sieve/test_mailbox
sieve/tests/
stamp-h1
timsieved/timsieved
vzic/test-output/
vzic/vzic_test
vzic/cyr_vzic
ylwrap
57 changes: 57 additions & 0 deletions .mailmap
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# See https://git-scm.com/docs/gitmailmap, but this format is one of:
# Proper Name <proper-email> <commit-email>
# Proper Name <proper-email> Commit Name <commit-email>

# People, alphabetical by last name. Most recent commit used where ambiguous.
Greg Banks <[email protected]> <[email protected]>
Greg Banks <[email protected]> <[email protected]>
Robert Bricheno <[email protected]> <[email protected]>
cketti <[email protected]> <[email protected]>
Julien Coloos <[email protected]> <[email protected]>
Chris Davies <[email protected]> <[email protected]>
Bron Gondwana <[email protected]> brong <brong>
Bron Gondwana <[email protected]> <[email protected]>
Bron Gondwana <[email protected]> <[email protected]>
Bron Gondwana <[email protected]> <[email protected]>
Bron Gondwana <[email protected]> <[email protected]>
Bron Gondwana <[email protected]> <[email protected]>
Bron Gondwana <[email protected]> <[email protected]>
Quanah Gibson-Mount <[email protected]> <[email protected]>
Matthew Horsfall <[email protected]> <[email protected]>
Matthew Horsfall <[email protected]> alh <[email protected]>
Anthony Howe <[email protected]> <[email protected]>
Neil Jenkins <[email protected]> <[email protected]>
Dave McMurtrie <[email protected]> <[email protected]>
Rob Mueller <[email protected]> <[email protected]>
Sven Mueller <[email protected]> <[email protected]>
Ken Murchison <[email protected]> <[email protected]>
Ken Murchison <[email protected]> Kenneth S Murchison <[email protected]>
David Murray <[email protected]> CambridgeDave <[email protected]>
John Gardiner Myers <[email protected]> John Gardiner Meyers <[email protected]>
Chris Newman <[email protected]> <[email protected]>
Chris Newman <[email protected]> <[email protected]>
Rob N ★ <[email protected]> Robert Norris <[email protected]>
Rob N ★ <[email protected]> <[email protected]>
Rob N ★ <[email protected]> <[email protected]>
Nicola Nye <[email protected]> Nicola N <[email protected]>
Дилян Палаузов <[email protected]> <[email protected]>
Olivier ROLAND <[email protected]> <[email protected]>
Ricardo Signes <[email protected]> <[email protected]>
Ricardo Signes <[email protected]> <[email protected]>
Ricardo Signes <[email protected]> <[email protected]>
Jean-Francois Smigielski <[email protected]> Jean-Francois SMIGIELSKI <[email protected]>
Robert Stepanek <[email protected]> [email protected] <[email protected]>
Robert Stepanek <[email protected]> <[email protected]>
Robert Stepanek <[email protected]> Robert <[email protected]>
Robert Stepanek <[email protected]> <[email protected]>
Robert Stepanek <[email protected]> <[email protected]>
Robert Stepanek <[email protected]> <rsto@debian>
Ondřej Surý <[email protected]> <[email protected]>
Partha Susarla <[email protected]> <[email protected]>
Partha Susarla <[email protected]> <[email protected]>
ellie timoney <[email protected]> <[email protected]>
ellie timoney <[email protected]> Ellie Timoney <[email protected]>
ellie timoney <[email protected]> elliefm <[email protected]>

# Mystery committers
Mystery Person <[email protected]> root <[email protected]>
31 changes: 0 additions & 31 deletions .travis.yml

This file was deleted.

89 changes: 89 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
# Contributing to Cyrus

So, you want to contribute to Cyrus? Great!

You'll probably want to join the [cyrus-devel mailing
list](https://www.cyrusimap.org/imap/support/feedback-mailing-lists.html#feedback-mailing-lists)
where development issues get discussed. You don't need to, but if you're
considering doing a substantial amount of work, it's a good idea to ask about
it first.

This document is meant to be a quick overview of the most important things you
need to know to get your work reviewed, approved, and into Cyrus.

## Your Code

Cyrus doesn't have a hard and fast style guide, *but it will*. For now,
consult the [Cyrus hacking
docs](https://www.cyrusimap.org/imap/developer/guidance/hacking.html), which
spell out some of the standards of formatting and construction. This document
is, at present, quite out of date. You are probably best served by just
copying the style of the surrounding code.


## The Tests

You should run the tests. Submitting a change that breaks existing tests isn't
good for anybody! If your pull request changes the code but doesn't add a
test, you should explain why. "Code changes add tests" is the default
assumption.

There are two kinds of tests:

* The [Cassandane test
suite](https://www.cyrusimap.org/imap/developer/developer-testing.html) is an
integration test suite. It can and should be run against your build of
Cyrus, and it's right there in the repo under `./cassandane`.
* The [cunit tests](https://www.cyrusimap.org/imap/developer/unit-tests.html)
are located in the Cyrus IMAP repository, in `./cunit` and run by `make
check`. You should run these, too.

## Submitting Your Work

We use GitHub, including pull requests. Submit a pull request. One of the
committers should review it soon. If they don't, the best place to ask for
a review is the cyrus-devel mailing list, mentioned above.

Remember to sign your commits. This just means that they should be made with
`git commit --signoff`. More importantly, it is how you certify the [Developer
Certificate of Origin](https://developercertificate.org/), which states your
assertion that you have the legal right to submit your code to Cyrus for
redistribution as part of Cyrus.

**All code is reviewed before merge.** This includes code submitted by
committers. This means that if you want to know what awaits you in code
review, you can look at some recently merged or closed pull requests.

## Cyrus Versioning and Bugfix Policy

Cyrus is free software that comes with no guarantees, but we try to fix bugs
when they're found. The policy on that is something like this:

* We release a new **development snapshot** of Cyrus about once a month. While
we won't make a release that doesn't *compile*, all other bets are off. If
we discover a critical security problem in a development snapshot, we'll just
merge the fix when it's ready. Running these in production is *your*
liability to worry about. These versions are numbered vX.Y.Z, where Y is
odd.
* We release a **new major version** about once a year. We release these when
we believe that all the new features work correctly and there are no known
regressions, other than those we've documented as intentional. These
versions are numbered vX.Y.0, where Y is even.
* We release **new minor version** for major releases once in a while, when
we've built up enough backported bugfixes, or when we've been waiting long
enough to ship the ones we've already applied. There are numbered vX.Y.Z,
where Y is even and Z is nonzero.

We stop releasing minor releases for major releases after two years. While we
might push bugfixes for significant problems to the git branch for an old major
release, we won't undertake a new release. If you're running an old version of
Cyrus, it's up to you (or your package manager) to track and package new
patches.

If we discover a security vulnerability in a non-development-snapshot version
of Cyrus, we practice responsible disclosure. We produce a fix, then inform
downstream package mangers of that fix, with an embargo date so that the fix
can be released publicly at the same time that updated packages become
available. In general, we do not pursue security fixes for major versions of
Cyrus over three years old. There may be exceptions to this, but generally you
should try to run a recent stable release.
3 changes: 2 additions & 1 deletion COPYING
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,5 @@ ALL versions of the Cyrus IMAP server are covered by the following copyright:
If you find this software useful and valuable in your work, we would
welcome any support you can offer toward continuing this work.

http://cyrusimap.org/ for information on how to contact us and contributing.
http://www.cyrusimap.org/ for information on how to contact us and
contributing.
Loading

0 comments on commit b25a4f5

Please sign in to comment.