commit:     c4220ea02a750f4da1165be1eb4ccae93e3cfca2
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Sat Aug 30 20:29:17 2025 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Sat Aug 30 20:29:17 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c4220ea0

mail-filter/postsrsd: Generate the signing secret in pkg_postinst

Signed-off-by: Ulrich Müller <ulm <AT> gentoo.org>

 mail-filter/postsrsd/postsrsd-2.0.11-r2.ebuild | 99 ++++++++++++++++++++++++++
 1 file changed, 99 insertions(+)

diff --git a/mail-filter/postsrsd/postsrsd-2.0.11-r2.ebuild 
b/mail-filter/postsrsd/postsrsd-2.0.11-r2.ebuild
new file mode 100644
index 000000000000..b2da5d9f4635
--- /dev/null
+++ b/mail-filter/postsrsd/postsrsd-2.0.11-r2.ebuild
@@ -0,0 +1,99 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake eapi9-pipestatus eapi9-ver readme.gentoo-r1 systemd
+
+DESCRIPTION="Postfix Sender Rewriting Scheme daemon"
+HOMEPAGE="https://github.com/roehling/postsrsd";
+SRC_URI="https://github.com/roehling/postsrsd/archive/${PV}.tar.gz -> 
${P}.tar.gz"
+
+# See REUSE.toml; GPL-3 for the main software, BSD for src/sha*.
+LICENSE="GPL-3 BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="dev-libs/confuse:="
+DEPEND="
+       ${RDEPEND}
+       test? ( dev-libs/check )
+"
+
+CHROOT_DIR="${EPREFIX}/var/lib/postsrsd"
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-2.0.11-sysconfdir.patch
+)
+DOCS=( README.rst CHANGELOG.rst )
+
+src_configure() {
+       local mycmakeargs=(
+               -DBUILD_TESTING=$(usex test)
+
+               -DPOSTSRSD_CHROOTDIR="${CHROOT_DIR}"
+               -DSYSTEMD_UNITDIR="$(systemd_get_systemunitdir)"
+               -DSYSTEMD_SYSUSERSDIR="${EPREFIX}/usr/lib/sysusers.d"
+
+               -DINSTALL_SYSTEMD_SERVICE=ON
+               # 
https://github.com/roehling/postsrsd/blob/main/doc/packaging.rst#third-party-dependencies
+               -DFETCHCONTENT_TRY_FIND_PACKAGE_MODE=ALWAYS
+               # We don't want to run tests with sanitizers. They're
+               # unreliable under sandbox and don't run on all platforms
+               -DTESTS_WITH_ASAN=OFF
+
+               # Do not generate the signing secret in src_install, as it would
+               # a) embed it in binary packages and b) overwrite existing 
secrets
+               # on every reinstall. Generate the secret in pkg_postinst 
instead.
+               -DGENERATE_SRS_SECRET=ON
+
+               -DWITH_MILTER=OFF
+               -DWITH_SQLITE=OFF
+               -DWITH_REDIS=OFF
+       )
+
+       cmake_src_configure
+}
+
+src_install() {
+       cmake_src_install
+
+       newinitd "${FILESDIR}"/postsrsd-2.0.11.initd postsrsd
+       newconfd "${FILESDIR}"/postsrsd-2.0.11.confd postsrsd
+       keepdir "${CHROOT_DIR}"
+
+       local DOC_CONTENTS="When updating from version 1.x:
+               \n\nNote that most configuration options can no longer be set 
from the
+               command line, therefore we cannot define them in OpenRC's 
conf.d file
+               either. You will have to set them in 
${EPREFIX}/etc/postsrsd.conf
+               instead.
+               \n\nIn the config file, you must *at least* set the \"domains\"
+               variable, i.e. the local domain name. In most cases, using the 
output
+               of \"postconf -h mydomain\" should be okay.
+               \n\nAlso note that PostSRSd 2.x by default uses Unix domain 
sockets
+               instead of TCP sockets, so you must update 
\"sender_canonical_maps\"
+               and \"recipient_canonical_maps\" in 
${EPREFIX}/etc/postfix/main.cf.
+               (Alternatively, you can update \"socketmap\" in postsrsd.conf.)
+               \n\nSee README.rst and the comments in postsrsd.conf for more 
detailed
+               information."
+       readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+       local f="${EROOT}/etc/postsrsd.secret" ret=0
+
+       if [[ ! -e ${f} ]]; then
+               ebegin "Generate the SRS signing secret and install it in ${f}"
+               (
+                       umask 077
+                       dd if=/dev/urandom bs=18 count=1 status=none | base64 > 
"${f}"
+                       pipestatus
+               )
+               eend $? "Installing ${f} failed"
+       fi
+
+       ver_replacing -lt 2.0.11-r1 && local FORCE_PRINT_ELOG=1
+       readme.gentoo_print_elog
+}

Reply via email to