summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2021-09-08 22:55:12 +0100
committerSam James <sam@gentoo.org>2021-09-13 00:19:01 +0100
commite90110a0a63cb9177bb529d61b3a70f9797b82d6 (patch)
tree8e493f48eb9b51d2105962cdf7781c2fe3227eba /dev-libs
parentsys-devel/bison: keyword 3.8.1 (diff)
downloadgentoo-e90110a0a63cb9177bb529d61b3a70f9797b82d6.tar.gz
gentoo-e90110a0a63cb9177bb529d61b3a70f9797b82d6.tar.bz2
gentoo-e90110a0a63cb9177bb529d61b3a70f9797b82d6.zip
dev-libs/libffi: use preserve-libs.eclass
1. Revision bump to re-install libffi now that glibc definitely has the correct version bounds on pax-utils. See linked bug for more information. This is unrelated to the preserve-libs eclass change, but we figured we should do this just as a nudge to help people in a "damaged" situation (see bug). 2. Use preserved-libs.eclass because SONAME of libffi changed from 7 -> 8. FEATURES="preserved-libs" (distinct from the eclass) is not required to be used (even if encouraged) and is not part of PMS, so alternative package managers to Portage don't have to implement it. Use the eclass to perserve libffi.so.7 to keep dev-lang/python working. Runtime failures will occur without Python being rebuilt in time. (Unfortunately, the same is true for the rewritten-in-Python revdep-rebuild, so revdep-rebuild.sh may help folks who are already bitten by this.) Bug: https://bugs.gentoo.org/811462 Signed-off-by: Sam James <sam@gentoo.org> Closes: https://github.com/gentoo/gentoo/pull/22247 Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'dev-libs')
-rw-r--r--dev-libs/libffi/libffi-3.4.2-r1.ebuild (renamed from dev-libs/libffi/libffi-3.4.2.ebuild)21
1 files changed, 15 insertions, 6 deletions
diff --git a/dev-libs/libffi/libffi-3.4.2.ebuild b/dev-libs/libffi/libffi-3.4.2-r1.ebuild
index 71baf938aacb..8af06625307f 100644
--- a/dev-libs/libffi/libffi-3.4.2.ebuild
+++ b/dev-libs/libffi/libffi-3.4.2-r1.ebuild
@@ -2,7 +2,8 @@
# Distributed under the terms of the GNU General Public License v2
EAPI=7
-inherit multilib-minimal
+
+inherit multilib-minimal preserve-libs
MY_PV=${PV/_rc/-rc}
MY_P=${PN}-${MY_PV}
@@ -10,22 +11,22 @@ MY_P=${PN}-${MY_PV}
DESCRIPTION="a portable, high level programming interface to various calling conventions"
HOMEPAGE="https://sourceware.org/libffi/"
SRC_URI="https://github.com/libffi/libffi/releases/download/v${MY_PV}/${MY_P}.tar.gz"
+S="${WORKDIR}"/${MY_P}
LICENSE="MIT"
+# This is a core package which is depended on by e.g. Python
+# Please use preserve-libs.eclass in pkg_{pre,post}inst to cover users
+# with FEATURES="-preserved-libs" or another package manager if SONAME
+# changes.
SLOT="0/8" # SONAME=libffi.so.8
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
IUSE="debug exec-static-trampoline pax-kernel static-libs test"
RESTRICT="!test? ( test )"
-
-RDEPEND=""
-DEPEND=""
BDEPEND="test? ( dev-util/dejagnu )"
DOCS="ChangeLog* README.md"
-S=${WORKDIR}/${MY_P}
-
ECONF_SOURCE=${S}
src_prepare() {
@@ -63,3 +64,11 @@ multilib_src_install_all() {
find "${ED}" -name "*.la" -delete || die
einstalldocs
}
+
+pkg_preinst() {
+ preserve_old_lib /usr/$(get_libdir)/libffi.so.7
+}
+
+pkg_postinst() {
+ preserve_old_lib_notify /usr/$(get_libdir)/libffi.so.7
+}