diff options
author | Sam James <sam@gentoo.org> | 2021-09-08 22:55:12 +0100 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2021-09-13 00:19:01 +0100 |
commit | e90110a0a63cb9177bb529d61b3a70f9797b82d6 (patch) | |
tree | 8e493f48eb9b51d2105962cdf7781c2fe3227eba /dev-libs/libffi/libffi-3.4.2-r1.ebuild | |
parent | sys-devel/bison: keyword 3.8.1 (diff) | |
download | gentoo-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/libffi/libffi-3.4.2-r1.ebuild')
-rw-r--r-- | dev-libs/libffi/libffi-3.4.2-r1.ebuild | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/dev-libs/libffi/libffi-3.4.2-r1.ebuild b/dev-libs/libffi/libffi-3.4.2-r1.ebuild new file mode 100644 index 000000000000..8af06625307f --- /dev/null +++ b/dev-libs/libffi/libffi-3.4.2-r1.ebuild @@ -0,0 +1,74 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit multilib-minimal preserve-libs + +MY_PV=${PV/_rc/-rc} +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 )" +BDEPEND="test? ( dev-util/dejagnu )" + +DOCS="ChangeLog* README.md" + +ECONF_SOURCE=${S} + +src_prepare() { + default + if [[ ${CHOST} == arm64-*-darwin* ]] ; then + # ensure we use aarch64 asm, not x86 on arm64 + sed -i -e 's/aarch64\*-\*-\*/arm64*-*-*|&/' \ + configure configure.host || die + fi +} + +multilib_src_configure() { + use userland_BSD && export HOST="${CHOST}" + # --includedir= path maintains a few properties: + # 1. have stable name across libffi versions: some packages like + # dev-lang/ghc or kde-frameworks/networkmanager-qt embed + # ${includedir} at build-time. Don't require those to be + # rebuilt unless SONAME changes. bug #695788 + # + # We use /usr/.../${PN} (instead of former /usr/.../${P}). + # + # 2. have ${ABI}-specific location as ffi.h is target-dependent. + # + # We use /usr/$(get_libdir)/... to have ABI identifier. + econf \ + --includedir="${EPREFIX}"/usr/$(get_libdir)/${PN}/include \ + --disable-multi-os-directory \ + $(use_enable static-libs static) \ + $(use_enable exec-static-trampoline exec-static-tramp) \ + $(use_enable pax-kernel pax_emutramp) \ + $(use_enable debug) +} + +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 +} |