From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 01707158094 for ; Sat, 13 Aug 2022 19:24:48 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 03E0EE0769; Sat, 13 Aug 2022 19:24:47 +0000 (UTC) Received: from smtp.gentoo.org (dev.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id DD356E0769 for ; Sat, 13 Aug 2022 19:24:46 +0000 (UTC) Received: from oystercatcher.gentoo.org (unknown [IPv6:2a01:4f8:202:4333:225:90ff:fed9:fc84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id A7B73340F68 for ; Sat, 13 Aug 2022 19:24:44 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id E1A8B55B for ; Sat, 13 Aug 2022 19:24:42 +0000 (UTC) From: "Sam James" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Sam James" Message-ID: <1660418653.f67f7c6453fdd128489ea675935302099d66c1f5.sam@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: mail-filter/libmilter/ X-VCS-Repository: repo/gentoo X-VCS-Files: mail-filter/libmilter/libmilter-1.0.2_p2-r1.ebuild mail-filter/libmilter/libmilter-1.0.2_p3-r2.ebuild X-VCS-Directories: mail-filter/libmilter/ X-VCS-Committer: sam X-VCS-Committer-Name: Sam James X-VCS-Revision: f67f7c6453fdd128489ea675935302099d66c1f5 X-VCS-Branch: master Date: Sat, 13 Aug 2022 19:24:42 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 6b9d8103-43be-4908-9e1e-657eb7aba5f4 X-Archives-Hash: a7ca05731b90ac5c1aac4f02dbfb9afc commit: f67f7c6453fdd128489ea675935302099d66c1f5 Author: Thomas Bracht Laumann Jespersen laumann xyz> AuthorDate: Thu Aug 11 07:26:28 2022 +0000 Commit: Sam James gentoo org> CommitDate: Sat Aug 13 19:24:13 2022 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f67f7c64 mail-filter/libmilter: fix symlink order The extra symlink setup in src_install would produce something like: libmilter.so -> libmilter.so.1.0.2 libmilter.so.1.0.2_p2 -> libmilter.so.1.0.2 but from reading ldconfig(8) it reads as if the links should go from least specific to most specific versions, so in a chain like this: libmilter.so -> libmilter.so.1.0.2 -> libmilter.so.1.0.2_p2 Swapping the shared object and symlink fixes the referenced bugs. Closes: https://bugs.gentoo.org/863455 Closes: https://bugs.gentoo.org/863407 Closes: https://bugs.gentoo.org/862642 Closes: https://bugs.gentoo.org/863578 Closes: https://bugs.gentoo.org/863575 Closes: https://bugs.gentoo.org/863572 Closes: https://bugs.gentoo.org/863581 Closes: https://bugs.gentoo.org/864563 Signed-off-by: Thomas Bracht Laumann Jespersen laumann.xyz> Closes: https://github.com/gentoo/gentoo/pull/26819 Signed-off-by: Sam James gentoo.org> mail-filter/libmilter/libmilter-1.0.2_p2-r1.ebuild | 94 ++++++++++++++ mail-filter/libmilter/libmilter-1.0.2_p3-r2.ebuild | 136 +++++++++++++++++++++ 2 files changed, 230 insertions(+) diff --git a/mail-filter/libmilter/libmilter-1.0.2_p2-r1.ebuild b/mail-filter/libmilter/libmilter-1.0.2_p2-r1.ebuild new file mode 100644 index 000000000000..2cfbdff9b282 --- /dev/null +++ b/mail-filter/libmilter/libmilter-1.0.2_p2-r1.ebuild @@ -0,0 +1,94 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +# Note: please bump this together with mail-mta/sendmail + +inherit toolchain-funcs + +# This library is part of sendmail, but it does not share the version number with it. +# In order to find the right libmilter version number, check SMFI_VERSION definition +# that can be found in ${S}/include/libmilter/mfapi.h (see also SM_LM_VRS_* defines). +# For example, version 1.0.1 has a SMFI_VERSION of 0x01000001. +SENDMAIL_VER=8.17.1 + +DESCRIPTION="The Sendmail Filter API (Milter)" +HOMEPAGE="http://www.sendmail.org/" +SRC_URI="ftp://ftp.sendmail.org/pub/sendmail/sendmail.${SENDMAIL_VER}.tar.gz" +S="${WORKDIR}/sendmail-${SENDMAIL_VER}" + +LICENSE="Sendmail" +# We increment _pN when a new sendmail tarball comes out +# We change the actual "main version" (1.0.2 at time of writing) when the version +# of libmilter included in the tarball changes. +SLOT="0/$(ver_cut 1-3)" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE="ipv6 poll" + +RDEPEND="! devtools/Site/site.config.m4 \ + || die "failed to generate site.config.m4" +} + +src_compile() { + emake -j1 -C libmilter AR="$(tc-getAR)" MILTER_SOVER=${PV} +} + +src_install() { + dodir /usr/$(get_libdir) + + local emakeargs=( + DESTDIR="${D}" LIBDIR="/usr/$(get_libdir)" + MANROOT=/usr/share/man/man + SBINOWN=root SBINGRP=0 UBINOWN=root UBINGRP=0 + LIBOWN=root LIBGRP=0 GBINOWN=root GBINGRP=0 + MANOWN=root MANGRP=0 INCOWN=root INCGRP=0 + MSPQOWN=root CFOWN=root CFGRP=0 + MILTER_SOVER="$(ver_cut 1-3)" + ) + emake -C obj.*/libmilter "${emakeargs[@]}" install + + dodoc libmilter/README + + docinto html + dodoc -r libmilter/docs/. + + if [[ ${PV} != $(ver_cut 1-3) ]] ; then + # Move the .so file to the more specific name so it becomes a chain like + # .so -> .so.1.0.2 -> .so.1.0.2_p2, otherwise ldconfig can get confused + # (bug #864563). + # + # See comment above ${SLOT} definition above. + mv "${ED}"/usr/$(get_libdir)/"${PN}.so.$(ver_cut 1-3)" "${ED}"/usr/$(get_libdir)/${PN}.so.${PV} + dosym ${PN}.so.${PV} /usr/$(get_libdir)/${PN}.so.$(ver_cut 1-3) + fi + + find "${ED}" -name '*.a' -delete || die +} diff --git a/mail-filter/libmilter/libmilter-1.0.2_p3-r2.ebuild b/mail-filter/libmilter/libmilter-1.0.2_p3-r2.ebuild new file mode 100644 index 000000000000..52860f138132 --- /dev/null +++ b/mail-filter/libmilter/libmilter-1.0.2_p3-r2.ebuild @@ -0,0 +1,136 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# Note: please bump this together with mail-mta/sendmail + +inherit toolchain-funcs + +# This library is part of sendmail, but it does not share the version number with it. +# In order to find the right libmilter version number, check SMFI_VERSION definition +# that can be found in ${S}/include/libmilter/mfapi.h (see also SM_LM_VRS_* defines). +# For example, version 1.0.1 has a SMFI_VERSION of 0x01000001. +# +# See check in src_prepare too. +SENDMAIL_VER=8.17.1.9 + +DESCRIPTION="The Sendmail Filter API (Milter)" +HOMEPAGE="https://www.sendmail.org/" +if [[ -n $(ver_cut 4 ${SENDMAIL_VER}) ]] ; then + # Snapshots have an extra version component (e.g. 8.17.1 vs 8.17.1.9) + SRC_URI+="https://ftp.sendmail.org/snapshots/sendmail.${SENDMAIL_VER}.tar.gz + ftp://ftp.sendmail.org/pub/sendmail/snapshots/sendmail.${SENDMAIL_VER}.tar.gz" +else + SRC_URI="https://ftp.sendmail.org/sendmail.${SENDMAIL_VER}.tar.gz + ftp://ftp.sendmail.org/pub/sendmail/sendmail.${SENDMAIL_VER}.tar.gz" +fi + +S="${WORKDIR}/sendmail-${SENDMAIL_VER}" + +LICENSE="Sendmail" +# We increment _pN when a new sendmail tarball comes out and change the actual +# "main version" (1.0.2 at time of writing) when the version +# of libmilter included in the tarball changes. +# We used to use $(ver_cut 1-3) here (assuming ABI stability between sendmail +# versions) but that doesn't seem to apply for sendmail snapshots. +SLOT="0/${PV}" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE="ipv6 poll" + +RDEPEND="!> 24) + local actual_libmilter_ver_major=$(((actual_libmilter_ver & 0x7f000000) >> 24)) + + # SM_LM_VRS_MINOR(v) (((v) & 0x007fff00) >> 8) + local actual_libmilter_ver_minor=$(((actual_libmilter_ver & 0x007fff00) >> 8)) + + # SM_LM_VRS_PLVL(v) ((v) & 0x0000007f) + local actual_libmilter_ver_plvl=$((actual_libmilter_ver & 0x0000007f)) + + einfo "Extracted version (hex): ${actual_libmilter_ver}" + einfo "Extracted version (major): ${actual_libmilter_ver_major}" + einfo "Extracted version (minor): ${actual_libmilter_ver_minor}" + einfo "Extracted version (plvl): ${actual_libmilter_ver_plvl}" + einfo "Extracted version (final): ${actual_libmilter_ver_major}.${actual_libmilter_ver_minor}.${actual_libmilter_ver_plvl}" + + echo ${actual_libmilter_ver_major}.${actual_libmilter_ver_minor}.${actual_libmilter_ver_plvl} + } + + local actual_libmilter_ver_final=$(extract_version_from_source) + if [[ $(ver_cut 1-3) != ${actual_libmilter_ver_final} ]] ; then + eerror "Ebuild version ${PV} does not match detected version ${actual_libmilter_ver_final}!" + eerror "Expected version: $(ver_cut 1-3)" + eerror "Detected version: ${actual_libmilter_ver_final}" + die "Package version ${PV} appears to be incorrect. Please check the source or rename the ebuild." + fi + + local ENVDEF="-DNETUNIX -DNETINET -DHAS_GETHOSTBYNAME2=1" + + use ipv6 && ENVDEF+=" -DNETINET6" + use poll && ENVDEF+=" -DSM_CONF_POLL=1" + + if use elibc_musl; then + use ipv6 && ENVDEF+=" -DNEEDSGETIPNODE" + + eapply "${FILESDIR}"/${PN}-musl-stack-size.patch + eapply "${FILESDIR}"/${PN}-musl-disable-cdefs.patch + fi + + sed -e "s|@@CC@@|$(tc-getCC)|" \ + -e "s|@@CFLAGS@@|${CFLAGS}|" \ + -e "s|@@ENVDEF@@|${ENVDEF}|" \ + -e "s|@@LDFLAGS@@|${LDFLAGS}|" \ + "${FILESDIR}"/gentoo.config.m4 > devtools/Site/site.config.m4 \ + || die "failed to generate site.config.m4" +} + +src_compile() { + emake -j1 -C libmilter AR="$(tc-getAR)" MILTER_SOVER=${PV} +} + +src_install() { + dodir /usr/$(get_libdir) + + local emakeargs=( + DESTDIR="${D}" LIBDIR="/usr/$(get_libdir)" + MANROOT=/usr/share/man/man + SBINOWN=root SBINGRP=0 UBINOWN=root UBINGRP=0 + LIBOWN=root LIBGRP=0 GBINOWN=root GBINGRP=0 + MANOWN=root MANGRP=0 INCOWN=root INCGRP=0 + MSPQOWN=root CFOWN=root CFGRP=0 + MILTER_SOVER="$(ver_cut 1-3)" + ) + emake -C obj.*/libmilter "${emakeargs[@]}" install + + dodoc libmilter/README + + docinto html + dodoc -r libmilter/docs/. + + if [[ ${PV} != $(ver_cut 1-3) ]] ; then + # Move the .so file to the more specific name so it becomes a chain like + # .so -> .so.1.0.2 -> .so.1.0.2_p2, otherwise ldconfig can get confused + # (bug #864563). + # + # See comment above ${SLOT} definition above. + mv "${ED}"/usr/$(get_libdir)/"${PN}.so.$(ver_cut 1-3)" "${ED}"/usr/$(get_libdir)/${PN}.so.${PV} + dosym ${PN}.so.${PV} /usr/$(get_libdir)/${PN}.so.$(ver_cut 1-3) + fi + + find "${ED}" -name '*.a' -delete || die +}