diff options
author | Sergei Trofimovich <slyfox@gentoo.org> | 2021-06-11 23:51:28 +0100 |
---|---|---|
committer | Sergei Trofimovich <slyfox@gentoo.org> | 2021-06-11 23:51:37 +0100 |
commit | e2e19839d429095acc15c6591d680498e1ae3597 (patch) | |
tree | c43e9b75dea3b955b5f183bfda9e3bd3d370fa4e /dev-util/ccache | |
parent | x11-misc/xscreensaver: Add rdepend media-gfx/fbida (diff) | |
download | gentoo-e2e19839d429095acc15c6591d680498e1ae3597.tar.gz gentoo-e2e19839d429095acc15c6591d680498e1ae3597.tar.bz2 gentoo-e2e19839d429095acc15c6591d680498e1ae3597.zip |
dev-util/ccache: add USE=static-c++ which embeds libstdc++
To ease building gcc with ccache we need to handle the case of
LD_PRELOAD=./inplace/libstdc++.so injected by gcc's build system.
USE=static-c++ uses -static-libstdc++ for it.
Reported-by: Mihai Moldovan
Bug: https://bugs.gentoo.org/761220
Package-Manager: Portage-3.0.19, Repoman-3.0.3
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Diffstat (limited to 'dev-util/ccache')
-rw-r--r-- | dev-util/ccache/ccache-4.3-r1.ebuild | 89 | ||||
-rw-r--r-- | dev-util/ccache/metadata.xml | 3 |
2 files changed, 92 insertions, 0 deletions
diff --git a/dev-util/ccache/ccache-4.3-r1.ebuild b/dev-util/ccache/ccache-4.3-r1.ebuild new file mode 100644 index 000000000000..1410477f616f --- /dev/null +++ b/dev-util/ccache/ccache-4.3-r1.ebuild @@ -0,0 +1,89 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit cmake toolchain-funcs + +DESCRIPTION="fast compiler cache" +HOMEPAGE="https://ccache.dev/" +SRC_URI="https://github.com/ccache/ccache/releases/download/v${PV}/ccache-${PV}.tar.xz" + +LICENSE="GPL-3 LGPL-3" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE="static-c++ test" + +DEPEND="" +RDEPEND="${DEPEND} + app-arch/zstd:0= + dev-util/shadowman + sys-apps/gentoo-functions +" +# clang-specific tests use dev-libs/elfutils to compare objects for equality. +# Let's pull in the dependency unconditionally. +DEPEND+=" + test? ( dev-libs/elfutils ) +" +BDEPEND=" + app-text/asciidoc +" + +RESTRICT="!test? ( test )" + +DOCS=( doc/{AUTHORS,MANUAL,NEWS}.adoc CONTRIBUTING.md README.md ) + +PATCHES=( + "${FILESDIR}"/${PN}-3.5-nvcc-test.patch + "${FILESDIR}"/${PN}-4.0-objdump.patch + "${FILESDIR}"/${PN}-4.1-avoid-run-user.patch +) + +src_prepare() { + cmake_src_prepare + + sed \ + -e "/^EPREFIX=/s:'':'${EPREFIX}':" \ + "${FILESDIR}"/ccache-config-3 > ccache-config || die + + # mainly used in tests + tc-export CC OBJDUMP + + # Avoid dependency on libstdc++.so. Useful for cases when + # we would like to use ccache to build older gcc which injects + # into ccache locally built (possibly outdated) libstdc++ + # See bug #761220 for examples. + # + # Ideally gcc should not use LD_PRELOAD to avoid this type of failures. + use static-c++ && append-ldflags -static-libstdc++ +} + +src_configure() { + local mycmakeargs=( + -DUSE_CCACHE=OFF + -DUSE_FASTER_LINKER=OFF + -DZSTD_FROM_INTERNET=OFF + ) + + cmake_src_configure +} + +src_install() { + cmake_src_install + + dobin ccache-config + insinto /usr/share/shadowman/tools + newins - ccache <<<"${EPREFIX}/usr/lib/ccache/bin" +} + +pkg_prerm() { + if [[ -z ${REPLACED_BY_VERSION} && ${ROOT:-/} == / ]] ; then + eselect compiler-shadow remove ccache + fi +} + +pkg_postinst() { + if [[ ${ROOT:-/} == / ]]; then + eselect compiler-shadow update ccache + fi +} diff --git a/dev-util/ccache/metadata.xml b/dev-util/ccache/metadata.xml index e27519ca728a..f673d3c58361 100644 --- a/dev-util/ccache/metadata.xml +++ b/dev-util/ccache/metadata.xml @@ -5,6 +5,9 @@ <email>toolchain@gentoo.org</email> <name>Gentoo Toolchain Project</name> </maintainer> + <use> + <flag name="static-c++">Avoid dynamic dependency on gcc's libstdc++.</flag> + </use> <longdescription lang="en"> ccache acts as a caching pre-processor to C/C++ compilers, improving compilation time when recompiling previously compiled source. |