summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-util/ccache')
-rw-r--r--dev-util/ccache/ccache-99999999-r3.ebuild73
-rw-r--r--dev-util/ccache/files/ccache-3.1.10-size-on-disk.patch21
-rw-r--r--dev-util/ccache/files/ccache-3.1.7-no-perl.patch15
-rw-r--r--dev-util/ccache/files/ccache-config-397
-rw-r--r--dev-util/ccache/metadata.xml12
5 files changed, 218 insertions, 0 deletions
diff --git a/dev-util/ccache/ccache-99999999-r3.ebuild b/dev-util/ccache/ccache-99999999-r3.ebuild
new file mode 100644
index 00000000..0d9fed91
--- /dev/null
+++ b/dev-util/ccache/ccache-99999999-r3.ebuild
@@ -0,0 +1,73 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+WANT_LIBTOOL=none
+EGIT_REPO_URI="git://git.samba.org/ccache.git"
+inherit autotools eutils git-r3 readme.gentoo
+
+DESCRIPTION="fast compiler cache"
+HOMEPAGE="http://ccache.samba.org/"
+
+SRC_URI=""
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS=""
+IUSE=""
+
+DEPEND="app-arch/xz-utils
+ sys-libs/zlib"
+RDEPEND="${DEPEND}
+ sys-apps/gentoo-functions"
+
+src_prepare() {
+ # make sure we always use system zlib
+ rm -rf zlib || die
+ epatch "${FILESDIR}"/${PN}-3.1.7-no-perl.patch #421609
+ epatch "${FILESDIR}"/${PN}-3.1.10-size-on-disk.patch #456178
+ sed \
+ -e "/^EPREFIX=/s:'':'${EPREFIX}':" \
+ "${FILESDIR}"/ccache-config-3 > ccache-config || die
+ epatch_user
+ eautoreconf
+}
+
+src_install() {
+ DOCS=( AUTHORS.txt MANUAL.txt NEWS.txt README.txt )
+ default
+
+ dobin ccache-config
+
+ DOC_CONTENTS="
+To use ccache with **non-Portage** C compiling, add
+'${EPREFIX}/usr/lib/ccache/bin' to the beginning of your path, before '${EPREFIX}/usr/bin'.
+Portage 2.0.46-r11+ will automatically take advantage of ccache with
+no additional steps. If this is your first install of ccache, type
+something like this to set a maximum cache size of 2GB:
+# ccache -M 2G
+If you are upgrading from an older version than 3.x you should clear all of your caches like so:
+# CCACHE_DIR='${CCACHE_DIR:-${PORTAGE_TMPDIR}/ccache}' ccache -C
+ccache now supports sys-devel/clang and dev-lang/icc, too!"
+
+ readme.gentoo_create_doc
+}
+
+pkg_prerm() {
+ if [[ -z ${REPLACED_BY_VERSION} ]] ; then
+ "${EROOT}"/usr/bin/ccache-config --remove-links
+ "${EROOT}"/usr/bin/ccache-config --remove-links ${CHOST}
+ fi
+}
+
+pkg_postinst() {
+ "${EROOT}"/usr/bin/ccache-config --install-links
+ "${EROOT}"/usr/bin/ccache-config --install-links ${CHOST}
+
+ # nuke broken symlinks from previous versions that shouldn't exist
+ rm -f "${EROOT}"/usr/lib/ccache/bin/${CHOST}-cc || die
+ rm -rf "${EROOT}"/usr/lib/ccache.backup || die
+
+ readme.gentoo_print_elog
+}
diff --git a/dev-util/ccache/files/ccache-3.1.10-size-on-disk.patch b/dev-util/ccache/files/ccache-3.1.10-size-on-disk.patch
new file mode 100644
index 00000000..5e502912
--- /dev/null
+++ b/dev-util/ccache/files/ccache-3.1.10-size-on-disk.patch
@@ -0,0 +1,21 @@
+https://bugs.gentoo.org/56178
+
+stick to the size of files on disk rather than their byte size.
+this func is only used for stats management, so this should be safe.
+
+--- a/util.c
++++ b/util.c
+@@ -845,12 +845,7 @@ file_size(struct stat *st)
+ #ifdef _WIN32
+ return (st->st_size + 1023) & ~1023;
+ #else
+- size_t size = st->st_blocks * 512;
+- if ((size_t)st->st_size > size) {
+- /* probably a broken stat() call ... */
+- size = (st->st_size + 1023) & ~1023;
+- }
+- return size;
++ return st->st_blocks * 512;
+ #endif
+ }
+
diff --git a/dev-util/ccache/files/ccache-3.1.7-no-perl.patch b/dev-util/ccache/files/ccache-3.1.7-no-perl.patch
new file mode 100644
index 00000000..5abd15e1
--- /dev/null
+++ b/dev-util/ccache/files/ccache-3.1.7-no-perl.patch
@@ -0,0 +1,15 @@
+avoid weak perl usage in tests
+
+https://bugs.gentoo.org/421609
+
+--- a/test.sh
++++ b/test.sh
+@@ -1466,7 +1466,7 @@
+ mkdir -p $dir
+ i=0
+ while [ $i -lt 10 ]; do
+- perl -e 'print "A" x 4017' >$dir/result$i-4017.o
++ printf '%4017s' '' | tr ' ' 'A' >$dir/result$i-4017.o
+ touch $dir/result$i-4017.stderr
+ touch $dir/result$i-4017.d
+ if [ $i -gt 5 ]; then
diff --git a/dev-util/ccache/files/ccache-config-3 b/dev-util/ccache/files/ccache-config-3
new file mode 100644
index 00000000..7f604f00
--- /dev/null
+++ b/dev-util/ccache/files/ccache-config-3
@@ -0,0 +1,97 @@
+#!/bin/sh
+#
+# ccache-config - helper script for ccache and its ebuild
+#
+# Copyright 2003-2014 Superlucidity Services, LLC
+# Copyright 2013-2014 Gentoo Foundation
+# This program licensed under the GNU GPL version 2.
+#
+# This script developed by Zachary T Welch at Superlucidity Services, LLC
+# it was cloned from the distcc-config script
+#
+# Additional features to come; this provides a starting point
+
+EPREFIX=''
+
+. "${EPREFIX}"/lib/gentoo/functions.sh 2>/dev/null || {
+ ebegin() { echo " * $* ..."; }
+ eend() {
+ local r=${1:-$?}
+ [ ${r} -eq 0 ] && echo " [ OK ]" || echo " [ !! ]"
+ return $r
+ }
+}
+
+LIBDIR="lib"
+
+# this should be getopt'd someday (override with CC_QUIET=1)
+CC_VERBOSE=1
+unset _CC_QUIET
+c_quiet() {
+ [ -n "${CC_QUIET:-${_CC_QUIET}}" ] || [ -z "${CC_VERBOSE}" ]
+}
+
+c_ebegin() { c_quiet || ebegin "$@" ; }
+c_eend() { c_quiet || eend "$@" ; }
+
+###
+# the following functions manage the ccache symlinks
+# they allow the user or other scripts (namely gcc-config) to
+# automatically update ccache's links when upgrading toolchains
+#
+cc_path() {
+ echo ${ROOT%/}${EPREFIX}/usr/${LIBDIR}/ccache/bin/$1
+}
+cc_remove_link() {
+ local t=$(cc_path "$1")
+ if [ -L ${t} ]; then
+ c_ebegin "Removing ${t}"
+ rm -f "${t}"
+ c_eend
+
+ # Trim the empty dir if possible. #517242
+ t=${t%/*}
+ if rmdir "${t}" 2>/dev/null; then
+ rmdir "${t%/*}" 2>/dev/null
+ fi
+ :
+ fi
+}
+cc_install_link() {
+ # Search the PATH for the specified compiler
+ # then create shadow link in /usr/lib/ccache/bin to ccache
+
+ if command -v "$1" >/dev/null ; then
+ # first be sure any old link is removed
+ _CC_QUIET=1
+ cc_remove_link "$1"
+ unset _CC_QUIET
+
+ # then create the new link
+ local t=$(cc_path "$1")
+ c_ebegin "Creating ccache shadow link ${t}"
+ mkdir -p -m 0755 "${t%/*}" && ln -s "${EPREFIX}"/usr/bin/ccache "${t}"
+ c_eend
+ fi
+}
+cc_links() {
+ local a
+ for a in gcc cc c++ g++ icc icpc clang clang++ ; do
+ "cc_${1}_link" "${2}${2:+-}${a}"
+ done
+}
+
+###
+# main routine
+
+case $1 in
+ --install-links )
+ cc_links install "$2"
+ ;;
+ --remove-links )
+ cc_links remove "$2"
+ ;;
+ * )
+ echo "usage: $0 {--install-links|--remove-links} [ CHOST ]"
+ ;;
+esac
diff --git a/dev-util/ccache/metadata.xml b/dev-util/ccache/metadata.xml
new file mode 100644
index 00000000..21bd7702
--- /dev/null
+++ b/dev-util/ccache/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <herd>toolchain</herd>
+ <maintainer>
+ <email>robbat2@gentoo.org</email>
+ </maintainer>
+ <longdescription lang="en">
+ ccache acts as a caching pre-processor to C/C++ compilers, improving
+ compilation time when recompiling previously compiled source.
+ </longdescription>
+</pkgmetadata>