# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 inherit cmake 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="redis sqlite test" RESTRICT="!test? ( test )" RDEPEND="acct-user/postsrsd dev-libs/confuse:= redis? ( dev-libs/hiredis:= ) sqlite? ( dev-db/sqlite:3 )" 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_USER=postsrsd -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 -DFETCHCONTENT_FULLY_DISCONNECTED=ON # 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=OFF # "Note that the Milter code is less tested and should be # considered experimental for now and not ready for production." -DWITH_MILTER=OFF -DWITH_REDIS=$(usex redis) -DWITH_SQLITE=$(usex sqlite) ) cmake_src_configure } src_install() { cmake_src_install newinitd "${FILESDIR}"/postsrsd-2.0.11.initd postsrsd newconfd "${FILESDIR}"/postsrsd-2.0.11.confd postsrsd diropts -o postsrsd -g root -m 0755 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" if [[ ! -s ${f} ]]; then ebegin "Generate the SRS signing secret and install it in ${f}" ( umask 077 set -o pipefail rnd="$(dd if=/dev/urandom bs=18 count=1 status=none | base64)" \ && printf "%s\n" "${rnd}" > "${f}" ) eend $? "Installing ${f} failed" fi ver_replacing -lt 2.0.11-r1 && local FORCE_PRINT_ELOG=1 readme.gentoo_print_elog }