Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package gromox for openSUSE:Factory checked in at 2026-09-28 10:44:30 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gromox (Old) and /work/SRC/openSUSE:Factory/.gromox.new.383539 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gromox" Mon Sep 28 10:44:30 2026 rev:62 rq:1380729 version:3.11 Changes: -------- --- /work/SRC/openSUSE:Factory/gromox/gromox.changes 2026-08-22 21:38:21.648977746 +0200 +++ /work/SRC/openSUSE:Factory/.gromox.new.383539/gromox.changes 2026-09-28 10:44:40.583487490 +0200 @@ -1,0 +2,43 @@ +Thu Sep 24 10:57:55 UTC 2026 - Jan Engelhardt <[email protected]> + +- Update to release 3.11 + * imap: implement FETCH BINARY / BINARY.SIZE + * lda: out-of-office replies now derive a subject from the + incoming message when the mailbox has none stored, e.g. when + OOF is set over EWS. The new config directive + gromox.cfg:``autoreply_subject_prefix`` was added. + * emsmdb, zcore: new per-mailbox settings MessageCopyForSentAs + and MessageCopyForSendOnBehalf. + * mbop: new "get-msgcopy", "set-msgcopy" and "clear-msgcopy" + commands + * delivery: the new gromox.cfg directive + ``lda_relay_unknown_recipients`` hands autoreplies and bounce + reports for mailbox-less addresses of local domains to the MTA, + for use in split domain setups + * The rule processor now logs the outcome of condition + evaluations. + * INET↔MAPI conversions specifically recognize OpenPGP MIME and + GpgOL messages. + * A delegate's answer to a meeting invitation is sent in the name + of the mailbox it was addressed to, rather than the delegate's + own. + * Meeting replies carry the ORGANIZER property that RFC 5546 asks + for, and name the delegate who answered in the attendee's + SENT-BY parameter. + * The rule processor executes Extended Rules' OP_MOVE/OP_COPY now + and matches string restrictions across PT_STRING8↔PT_UNICODE. + * zcore: When folder permissions are updated, the updated + delegate list for exmdb is now constructed from + PR_SCHDINFO_DELEGATE_ENTRYIDS rather than the recipients of the + "Schedule+ EMS Interface" rule, so that delegates who are to + not receive meeting copies actually get delegate permissions. + * During MAPI-to-iCalender conversions, TZID is now omitted when + exporting timeless DATE values. + * Repaired some instances where the by-time message lookup index + would go out of sync with a folder's message set and indicate + fewer messages present than there were. + * kdb2mt: An inefficiency that led to exponential time waste + processing deeply-nested messages was eliminated. +- Add 0001-build-drop-D_TIME_BITS-64.patch, 0002-zombies.patch + +------------------------------------------------------------------- Old: ---- gromox-3.10.tar.asc gromox-3.10.tar.zst New: ---- 0001-build-drop-D_TIME_BITS-64.patch 0002-zombies.patch gromox-3.11.tar.asc gromox-3.11.tar.zst ----------(New B)---------- New: processing deeply-nested messages was eliminated. - Add 0001-build-drop-D_TIME_BITS-64.patch, 0002-zombies.patch New: processing deeply-nested messages was eliminated. - Add 0001-build-drop-D_TIME_BITS-64.patch, 0002-zombies.patch ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gromox.spec ++++++ --- /var/tmp/diff_new_pack.gZoG3A/_old 2026-09-28 10:44:42.213555784 +0200 +++ /var/tmp/diff_new_pack.gZoG3A/_new 2026-09-28 10:44:42.215555868 +0200 @@ -19,7 +19,7 @@ %define _libexecdir %_prefix/libexec Name: gromox -Version: 3.10 +Version: 3.11 Release: 0 Summary: Groupware server backend with RPC, IMAP,POP3, PHP-MAPI support License: AGPL-3.0-or-later AND GPL-2.0-only AND GPL-3.0-or-later @@ -29,6 +29,8 @@ Source2: https://github.com/grommunio/gromox/releases/download/%name-%version/%name-%version.tar.asc Source8: %name.keyring Source15: debian.gromox.config +Patch1: 0001-build-drop-D_TIME_BITS-64.patch +Patch2: 0002-zombies.patch BuildRequires: fdupes %if 0%{?suse_version} && 0%{?suse_version} < 1600 BuildRequires: gcc12-c++ @@ -92,6 +94,7 @@ Requires: php-soap %endif Requires: (chawan or w3m) +Recommends: pandoc Requires(pre): user(grommunio) Requires(pre): user(gromox) Requires(pre): group(gromox) @@ -120,9 +123,10 @@ ready-to-run installation of Gromox. %prep -%autosetup -p0 +%autosetup -p1 %build +autoreconf -fi %configure \ %if 0%{?suse_version} && 0%{?suse_version} < 1600 CC=gcc-12 CXX=g++-12 \ @@ -170,7 +174,9 @@ %fdupes %buildroot/%_prefix %check +%ifnarch %ix86 %arm %make_build check V=1 +%endif # Though services autoreconnect, starting them in the preferred order services is smoother %global services gromox-timer.service gromox-http.service gromox-zcore.service gromox-event.service gromox-midb.service gromox-imap.service gromox-pop3.service gromox-delivery.service gromox-delivery-queue.service gromox-snapshot.service gromox-snapshot.timer gromox-cleaner.service ++++++ 0001-build-drop-D_TIME_BITS-64.patch ++++++ >From 3b92a099b5970b0fc4982630f1e753b4dcd03340 Mon Sep 17 00:00:00 2001 From: Jan Engelhardt <[email protected]> Date: Thu, 24 Sep 2026 13:34:16 +0200 Subject: [PATCH] build: drop -D_TIME_BITS=64 libvmime is built without -D_TIME_BITS, and the `vmime::datetime::datetime(time_t, int)` constructor gets encoded in the ABI as `_ZN5vmime8datetimeC1Eli`. Gromox however builds with -D_TIME_BITS=64, and the symbol reference becomes `_ZN5vmime8datetimeC1Exi`. ``` CXXLD tests/bodyconv /usr/lib/gcc/i586-suse-linux/16/../../../../i586-suse-linux/bin/ld: ./.libs/libgromox_mapi.so: undefined reference to `vmime::datetime::datetime(long long, int)' ``` Drop the two preprocessor flags. They are the default mode for 64-bit userspaces anyway, and 32-bit environment builders need to consistently present flags (e.g. Debian injects -D_TIME_BITS=64 globally for armhf). Fixes: gromox-2.14-41-g91c37ac94 --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 466a51df1..60908bf8f 100644 --- a/configure.ac +++ b/configure.ac @@ -19,7 +19,7 @@ saved_LDFLAGS="$LDFLAGS" saved_LIBS="$LIBS" AC_LANG_PUSH([C++]) -my_CPPFLAGS="-D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64" +my_CPPFLAGS="" my_CFLAGS="-Wall -Wmissing-declarations -Wwrite-strings" my_CXXFLAGS="-Wall -Wmissing-declarations" my_LDFLAGS="" -- 2.55.0 ++++++ 0002-zombies.patch ++++++ >From 809b35d405bb381e14c242b0ad863e8f157b0d20 Mon Sep 17 00:00:00 2001 From: Jan Engelhardt <[email protected]> Date: Thu, 24 Sep 2026 23:50:02 +0200 Subject: [PATCH] mapi_lib: plug process leak when exercising internal rtftohtml When a rtftohtml request is performed using the GROMOX_RTFTOHTML=internal (`rtf_to_html_boring`) converter, finished subprocesses pile up due to popenfd being exercised without a matching wait() call. References: GXF-2944 --- lib/mapi/rtf.cpp | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/lib/mapi/rtf.cpp b/lib/mapi/rtf.cpp index 6dabd4561..c631ca163 100644 --- a/lib/mapi/rtf.cpp +++ b/lib/mapi/rtf.cpp @@ -17,6 +17,7 @@ #include <libHX/io.h> #include <libHX/scope.hpp> #include <libHX/string.h> +#include <sys/wait.h> #include <gromox/element_data.hpp> #include <gromox/ext_buffer.hpp> #include <gromox/fileio.h> @@ -3510,15 +3511,21 @@ static ec_error_t gxht_transform(std::string_view inbuf, std::string &outbuf, attachment_list *atlist) try { static constexpr const char *argv[] = {"gromox-rtftohtml", "--rtftogxht", nullptr}; - int fin = -1, fout = -1; + int fin = -1, fout = -1, status = 0; + pid_t pid = -1; + auto cl_pid = HX::make_scope_exit([&]() { + if (pid > 0) + waitpid(pid, &status, 0); + }); + /* during destruction, fds need to be closed before wait()ing */ auto cl_0 = HX::make_scope_exit([&]() { if (fin >= 0) close(fin); if (fout >= 0) close(fout); }); - auto pid = popenfd(argv[0], argv, &fin, &fout, POPENFD_KEEP, - const_cast<const char *const *>(environ)); + pid = popenfd(argv[0], argv, &fin, &fout, POPENFD_KEEP, + const_cast<const char *const *>(environ)); if (pid < 0) return ecError; if (HXio_fullwrite(fin, inbuf.data(), inbuf.size()) < 0) @@ -3529,6 +3536,11 @@ static ec_error_t gxht_transform(std::string_view inbuf, std::string &outbuf, std::unique_ptr<char[], stdlib_delete> newbuf(HX_slurp_fd(fout, &fsize)); if (newbuf == nullptr) return ecMAPIOOM; + /* + * Unlike convert_doc_with_program, the exit status is ignored here. + * The stream has length markers, so we can already detect incomplete + * data that way. + */ if (fsize < 8 || memcmp(&newbuf[0], "GXHT0001", 8) != 0) { outbuf.assign(newbuf.get(), fsize); /* Try salvaging */ return ecRpcFormat; -- 2.55.0 ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.gZoG3A/_old 2026-09-28 10:44:42.261557795 +0200 +++ /var/tmp/diff_new_pack.gZoG3A/_new 2026-09-28 10:44:42.267558046 +0200 @@ -1,5 +1,5 @@ -mtime: 1787396237 -commit: 08333de654322f62ef931e5b71e3a9fd207c28858d8514746fafe03aca2f09a6 +mtime: 1790368033 +commit: d858db51a66f4a84507bd56698bb27696e7178de782f715ac0915c5a16246ff0 url: https://src.opensuse.org/jengelh/gromox revision: master ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-09-25 22:27:13.000000000 +0200 @@ -0,0 +1 @@ +.osc ++++++ debian.changelog ++++++ --- /var/tmp/diff_new_pack.gZoG3A/_old 2026-09-28 10:44:42.403563744 +0200 +++ /var/tmp/diff_new_pack.gZoG3A/_new 2026-09-28 10:44:42.405563828 +0200 @@ -1,2 +1,2 @@ -gromox (3.9) UNRELEASED; urgency=low +gromox (3.11) UNRELEASED; urgency=low ++++++ debian.control ++++++ --- /var/tmp/diff_new_pack.gZoG3A/_old 2026-09-28 10:44:42.428564792 +0200 +++ /var/tmp/diff_new_pack.gZoG3A/_new 2026-09-28 10:44:42.431564917 +0200 @@ -9,8 +9,16 @@ Architecture: any Pre-Depends: ${misc:Pre-Depends} Depends: ${misc:Depends}, ${shlibs:Depends}, - php-cli, php-fpm, php-mysql, php-simplexml, php-soap, - system-user-grommunio, system-user-gromox (>= 4), w3m + php-cli, + php-fpm, + php-mysql, + php-simplexml, + php-soap, + grommunio-triggers, + system-user-grommunio, + system-user-gromox (>= 4), + w3m +Recommends: media-types Provides: php-mapi-gromox Description: Groupware server (backend) with RPCH, IMAP and Z-MAPI support Gromox is the central groupware server component of grommunio. It is ++++++ debian.gromox.postinst ++++++ --- /var/tmp/diff_new_pack.gZoG3A/_old 2026-09-28 10:44:42.491567431 +0200 +++ /var/tmp/diff_new_pack.gZoG3A/_new 2026-09-28 10:44:42.494567557 +0200 @@ -37,8 +37,6 @@ systemctl daemon-reload || : systemctl try-restart \ grommunio-chat.service grommunio-keycloak.service \ - php7.4-fpm.service php8.0-fpm.service php8.1-fpm.service \ - php8.2-fpm.service php8.3-fpm.service \ saslauthd.service 2>/dev/null || : fi ++++++ gromox-3.10.tar.zst -> gromox-3.11.tar.zst ++++++ ++++ 27719 lines of diff (skipped)
