diff options
author | Robin H. Johnson <robbat2@gentoo.org> | 2015-08-08 13:49:04 -0700 |
---|---|---|
committer | Robin H. Johnson <robbat2@gentoo.org> | 2015-08-08 17:38:18 -0700 |
commit | 56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch) | |
tree | 3f91093cdb475e565ae857f1c5a7fd339e2d781e /dev-util/ccache | |
download | gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2 gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip |
proj/gentoo: Initial commit
This commit represents a new era for Gentoo:
Storing the gentoo-x86 tree in Git, as converted from CVS.
This commit is the start of the NEW history.
Any historical data is intended to be grafted onto this point.
Creation process:
1. Take final CVS checkout snapshot
2. Remove ALL ChangeLog* files
3. Transform all Manifests to thin
4. Remove empty Manifests
5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$
5.1. Do not touch files with -kb/-ko keyword flags.
Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests
X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project
X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration
X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn
X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts
X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration
X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging
X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'dev-util/ccache')
-rw-r--r-- | dev-util/ccache/Manifest | 5 | ||||
-rw-r--r-- | dev-util/ccache/ccache-2.4-r9.ebuild | 83 | ||||
-rw-r--r-- | dev-util/ccache/ccache-3.1.10-r1.ebuild | 69 | ||||
-rw-r--r-- | dev-util/ccache/ccache-3.1.9-r4.ebuild | 71 | ||||
-rw-r--r-- | dev-util/ccache/ccache-3.2.1-r1.ebuild | 69 | ||||
-rw-r--r-- | dev-util/ccache/ccache-3.2.2.ebuild | 69 | ||||
-rw-r--r-- | dev-util/ccache/files/ccache-2.4-profile.patch | 27 | ||||
-rw-r--r-- | dev-util/ccache/files/ccache-2.4-respectflags.patch | 13 | ||||
-rw-r--r-- | dev-util/ccache/files/ccache-2.4-utimes.patch | 105 | ||||
-rw-r--r-- | dev-util/ccache/files/ccache-2.4-xrealloc.patch | 35 | ||||
-rw-r--r-- | dev-util/ccache/files/ccache-3.1.10-real-temp-files.patch | 185 | ||||
-rw-r--r-- | dev-util/ccache/files/ccache-3.1.10-size-on-disk.patch | 21 | ||||
-rw-r--r-- | dev-util/ccache/files/ccache-3.1.7-no-perl.patch | 15 | ||||
-rw-r--r-- | dev-util/ccache/files/ccache-3.1.9-test-gcc-4.8.patch | 156 | ||||
-rw-r--r-- | dev-util/ccache/files/ccache-config | 100 | ||||
-rw-r--r-- | dev-util/ccache/files/ccache-config-2 | 97 | ||||
-rw-r--r-- | dev-util/ccache/files/ccache-config-3 | 97 | ||||
-rw-r--r-- | dev-util/ccache/metadata.xml | 12 |
18 files changed, 1229 insertions, 0 deletions
diff --git a/dev-util/ccache/Manifest b/dev-util/ccache/Manifest new file mode 100644 index 000000000000..a3ada3a55654 --- /dev/null +++ b/dev-util/ccache/Manifest @@ -0,0 +1,5 @@ +DIST ccache-2.4.tar.gz 86363 SHA256 435f862ca5168c346f5aa9e242174bbf19a5abcaeecfceeac2f194558827aaa0 SHA512 6ab05f74eba5c0a7472a3d53cfa6c24e45f421f2c773776f713a46121eda21213deb34fcef214d4f8d2e756cd375637e4639a9bdfeb6b9a44455c5bcca246b19 WHIRLPOOL eb308222713d17f52f88ac97a5c63add454b350d60259d1d2238e3b54f1e80ad8c8700e0e045b40aa5be64b1db54846a86da600436778a64d2270efff7763380 +DIST ccache-3.1.10.tar.xz 240932 SHA256 88439f43d3b426ab435afdf69a808511bada4de3a8a9527426bc4fbf6cb02857 SHA512 6a1c77161ec97b556a8c58592e2d6bba8e3d43cc039de3ebaa2a80fb92ae54bb7bad58eb011f52b750e29aadb0ed208220fb67d30deaf6c64aa4cfab31937fed WHIRLPOOL 5d527d986ba14a6312f82df277d7de47757bb43b7bcaf9eb6cbdbf337af862726f1f85ff7c352d0ad54344d98a8d8dc538e43de05976cdd29710b72917b42106 +DIST ccache-3.1.9.tar.xz 238988 SHA256 4981fdf3ad851de400d94083a0d03f115ce9ce8062c3fd7a291630294b0006c4 SHA512 b73f5816bb87c2d94200473510ea42a304c5a2c5e5f14720c513574ce3eb983423c5849a786a89df70cbb09852d9ec2761ad37a820a767d7350e1a3243148ac0 WHIRLPOOL 61ef671aae68516ecfaee88a50b8f442968a7ab24595fd7dfc652ab27de80834d90510c62cfcc75dd88e1f3832989633f518ebe5984149c16d5ab9848cff05fc +DIST ccache-3.2.1.tar.xz 297868 SHA256 872af34e1d2cef18694001d29db7f167d644e7602ca32cd6c74b28d81458bd9d SHA512 ef0e56f2d1775fb0f401f48cca2a65eb415f4e2ccf0bcfd769045a9c08c3c2977db4edea12e06629f4cb5406cde23cd3ee0910e2e4d5eff9376227fa23c78a7a WHIRLPOOL f3d07cf142258d588a1c6cb9ba77d31d7b568cd18ae131ed3526595c809352b0fa30ae61b0bfcbfde3ea8d959c545119662c25af0cd03c97517be361315e1ffe +DIST ccache-3.2.2.tar.xz 300808 SHA256 4f0d99699f24d198494addca0f41a93b0150cdfd01491f15a5d7eb02c7c2a0ca SHA512 fc438f3b00baa41076eee3e5783ea53a208eb348343e587c6f729f7e98462cd20c720fe323fe08f271bc14dae48f7828cef769882f028f3772992989b87b075d WHIRLPOOL 095a125e869910644622b98b7720a01ccc235fbeb8c84ec52017fe52f82fe7b8122584c3e5fa4d39c1344e9c062517a1edb46c3e64fe649e845ed5c1fb455c5a diff --git a/dev-util/ccache/ccache-2.4-r9.ebuild b/dev-util/ccache/ccache-2.4-r9.ebuild new file mode 100644 index 000000000000..6aeeaf5ddd70 --- /dev/null +++ b/dev-util/ccache/ccache-2.4-r9.ebuild @@ -0,0 +1,83 @@ +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +WANT_AUTOMAKE=none # not using automake + +inherit eutils autotools multilib + +DESCRIPTION="fast compiler cache" +HOMEPAGE="http://ccache.samba.org/" +SRC_URI="http://samba.org/ftp/ccache/${P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="alpha amd64 arm hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~x86-fbsd" +IUSE="" + +# Note: this version is designed to be auto-detected and used if +# you happen to have Portage 2.0.X+ installed. + +src_unpack() { + unpack ${A} + cd "${S}" + epatch "${FILESDIR}"/ccache-2.4-profile.patch + epatch "${FILESDIR}"/ccache-2.4-respectflags.patch + epatch "${FILESDIR}"/ccache-2.4-utimes.patch + epatch "${FILESDIR}"/ccache-2.4-xrealloc.patch #338137 + eautoconf +} + +do_links() { + insinto /usr/$(get_libdir)/ccache/bin + for a in ${CHOST}-{gcc,g++,c++} gcc c++ g++; do + dosym /usr/bin/ccache /usr/$(get_libdir)/ccache/bin/${a} + done +} + +src_install() { + dobin ccache || die + doman ccache.1 + dodoc README + dohtml web/*.html + + diropts -m0755 + dodir /usr/$(get_libdir)/ccache/bin + keepdir /usr/$(get_libdir)/ccache/bin + + dobin "${FILESDIR}"/ccache-config || die + + diropts -m0700 + dodir /root/.ccache + keepdir /root/.ccache +} + +pkg_preinst() { + # Do NOT duplicate this in your ebuilds or phear of the wrath!!! + if [[ ${ROOT} = "/" ]] ; then + einfo "Scanning for compiler front-ends..." + do_links + else + ewarn "Install is incomplete; you must run the following commands:" + ewarn " # ccache-config --install-links" + ewarn " # ccache-config --install-links ${CHOST}" + ewarn "after booting or chrooting to ${ROOT} to complete installation." + fi +} + +pkg_postinst() { + # nuke broken symlinks from previous versions that shouldn't exist + for i in cc ${CHOST}-cc ; do + [[ -L "${ROOT}/usr/$(get_libdir)/ccache/bin/${i}" ]] && \ + rm -rf "${ROOT}/usr/$(get_libdir)/ccache/bin/${i}" + done + [[ -d "${ROOT}/usr/$(get_libdir)/ccache.backup" ]] && \ + rm -fr "${ROOT}/usr/$(get_libdir)/ccache.backup" + + elog "To use ccache with **non-Portage** C compiling, add" + elog "/usr/$(get_libdir)/ccache/bin to the beginning of your path, before /usr/bin." + elog "Portage 2.0.46-r11+ will automatically take advantage of ccache with" + elog "no additional steps. If this is your first install of ccache, type" + elog "something like this to set a maximum cache size of 2GB:" + elog "# ccache -M 2G" +} diff --git a/dev-util/ccache/ccache-3.1.10-r1.ebuild b/dev-util/ccache/ccache-3.1.10-r1.ebuild new file mode 100644 index 000000000000..8deb6f737c5d --- /dev/null +++ b/dev-util/ccache/ccache-3.1.10-r1.ebuild @@ -0,0 +1,69 @@ +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI="4" + +inherit eutils readme.gentoo + +DESCRIPTION="fast compiler cache" +HOMEPAGE="http://ccache.samba.org/" +SRC_URI="http://samba.org/ftp/ccache/${P}.tar.xz" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~x64-solaris ~x86-solaris" +IUSE="" + +RDEPEND="sys-libs/zlib" +DEPEND="${RDEPEND} + app-arch/xz-utils" + +src_prepare() { + # make sure we always use system zlib + rm -rf zlib + epatch "${FILESDIR}"/${PN}-3.1.7-no-perl.patch #421609 + epatch "${FILESDIR}"/${PN}-3.1.10-size-on-disk.patch #456178 + epatch "${FILESDIR}"/${PN}-3.1.10-real-temp-files.patch + sed \ + -e "/^EPREFIX=/s:'':'${EPREFIX}':" \ + "${FILESDIR}"/ccache-config-2 > ccache-config || die +} + +src_install() { + default + dodoc AUTHORS.txt MANUAL.txt NEWS.txt README.txt + + 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:\\n +# ccache -M 2G\\n +If you are upgrading from an older version than 3.x you should clear all of your caches like so:\\n +# CCACHE_DIR='${CCACHE_DIR:-${PORTAGE_TMPDIR}/ccache}' ccache -C\\n +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 + rm -rf "${EROOT}"/usr/lib/ccache.backup + + readme.gentoo_print_elog +} diff --git a/dev-util/ccache/ccache-3.1.9-r4.ebuild b/dev-util/ccache/ccache-3.1.9-r4.ebuild new file mode 100644 index 000000000000..4b7b2d56d936 --- /dev/null +++ b/dev-util/ccache/ccache-3.1.9-r4.ebuild @@ -0,0 +1,71 @@ +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI="4" + +inherit multilib eutils readme.gentoo + +DESCRIPTION="fast compiler cache" +HOMEPAGE="http://ccache.samba.org/" +SRC_URI="http://samba.org/ftp/ccache/${P}.tar.xz" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~x64-solaris ~x86-solaris" +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 + epatch "${FILESDIR}"/${PN}-3.1.7-no-perl.patch #421609 + epatch "${FILESDIR}"/${P}-test-gcc-4.8.patch #461966 + sed \ + -e "/^LIBDIR=/s:lib:$(get_libdir):" \ + -e "/^EPREFIX=/s:'':'${EPREFIX}':" \ + "${FILESDIR}"/ccache-config-3 > ccache-config || die +} + +src_install() { + default + dodoc AUTHORS.txt MANUAL.txt NEWS.txt README.txt + + dobin ccache-config + + DOC_CONTENTS=" +To use ccache with **non-Portage** C compiling, add +${EPREFIX}/usr/$(get_libdir)/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:\\n +# ccache -M 2G\\n +If you are upgrading from an older version than 3.x you should clear all of your caches like so:\\n +# CCACHE_DIR='${CCACHE_DIR:-${PORTAGE_TMPDIR}/ccache}' ccache -C\\n +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/$(get_libdir)/ccache/bin/${CHOST}-cc" + [[ -d "${EROOT}/usr/$(get_libdir)/ccache.backup" ]] && \ + rm -rf "${EROOT}/usr/$(get_libdir)/ccache.backup" + + readme.gentoo_print_elog +} diff --git a/dev-util/ccache/ccache-3.2.1-r1.ebuild b/dev-util/ccache/ccache-3.2.1-r1.ebuild new file mode 100644 index 000000000000..dfd1b11d8c26 --- /dev/null +++ b/dev-util/ccache/ccache-3.2.1-r1.ebuild @@ -0,0 +1,69 @@ +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 + +inherit eutils readme.gentoo + +DESCRIPTION="fast compiler cache" +HOMEPAGE="http://ccache.samba.org/" +SRC_URI="http://samba.org/ftp/ccache/${P}.tar.xz" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~x64-solaris ~x86-solaris" +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 +} + +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:\\n +# ccache -M 2G\\n +If you are upgrading from an older version than 3.x you should clear all of your caches like so:\\n +# CCACHE_DIR='${CCACHE_DIR:-${PORTAGE_TMPDIR}/ccache}' ccache -C\\n +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/ccache-3.2.2.ebuild b/dev-util/ccache/ccache-3.2.2.ebuild new file mode 100644 index 000000000000..49b51795b713 --- /dev/null +++ b/dev-util/ccache/ccache-3.2.2.ebuild @@ -0,0 +1,69 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 + +inherit eutils readme.gentoo + +DESCRIPTION="fast compiler cache" +HOMEPAGE="http://ccache.samba.org/" +SRC_URI="http://samba.org/ftp/ccache/${P}.tar.xz" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~x64-solaris ~x86-solaris" +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 +} + +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:\\n +# ccache -M 2G\\n +If you are upgrading from an older version than 3.x you should clear all of your caches like so:\\n +# CCACHE_DIR='${CCACHE_DIR:-${PORTAGE_TMPDIR}/ccache}' ccache -C\\n +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-2.4-profile.patch b/dev-util/ccache/files/ccache-2.4-profile.patch new file mode 100644 index 000000000000..57743213dd3c --- /dev/null +++ b/dev-util/ccache/files/ccache-2.4-profile.patch @@ -0,0 +1,27 @@ +GCCs options -fprofile-generate and -fprofile-use are used for +profile guided optimization. It depends on the ability to locate +the profile data files (.gcda) after running the executable with +the training data. However, ccache prevents the compiler from +finding the correct profile data file. Therefore the following +patch disables the caching when one of the + -fprofile-generate + -fprofile-use + -fprofile-arcs +flags is found. + +Signed-off-by: Clemens Rabe <crabe _at_ gmx _dot_ de> + + +diff -Naur ccache-2.4.orig/ccache.c ccache-2.4/ccache.c +--- ccache-2.4.orig/ccache.c 2004-09-13 12:38:30.000000000 +0200 ++++ ccache-2.4/ccache.c 2008-01-07 20:25:38.000000000 +0100 +@@ -640,6 +640,9 @@ + + /* these are too hard */ + if (strcmp(argv[i], "-fbranch-probabilities")==0 || ++ strcmp(argv[i], "-fprofile-generate")==0 || ++ strcmp(argv[i], "-fprofile-use")==0 || ++ strcmp(argv[i], "-fprofile-arcs")==0 || + strcmp(argv[i], "-M") == 0 || + strcmp(argv[i], "-MM") == 0 || + strcmp(argv[i], "-x") == 0) { diff --git a/dev-util/ccache/files/ccache-2.4-respectflags.patch b/dev-util/ccache/files/ccache-2.4-respectflags.patch new file mode 100644 index 000000000000..38d5f6a590d8 --- /dev/null +++ b/dev-util/ccache/files/ccache-2.4-respectflags.patch @@ -0,0 +1,13 @@ +Index: ccache-2.4/Makefile.in +=================================================================== +--- ccache-2.4.orig/Makefile.in ++++ ccache-2.4/Makefile.in +@@ -20,7 +20,7 @@ all: ccache$(EXEEXT) + docs: ccache.1 web/ccache-man.html + + ccache$(EXEEXT): $(OBJS) $(HEADERS) +- $(CC) $(CFLAGS) -o $@ $(OBJS) ++ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJS) + + ccache.1: ccache.yo + -yodl2man -o ccache.1 ccache.yo diff --git a/dev-util/ccache/files/ccache-2.4-utimes.patch b/dev-util/ccache/files/ccache-2.4-utimes.patch new file mode 100644 index 000000000000..30aff6b8fb8a --- /dev/null +++ b/dev-util/ccache/files/ccache-2.4-utimes.patch @@ -0,0 +1,105 @@ +utime(...,NULL) in some cases may cause truncation of sub-second portions of +timestamps. If utimes(...,NULL) is available, use it instead to avoid this +problem. + +Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> + +diff -Nuar --exclude autom4te.cache --exclude '*~' ccache-2.4.orig/ccache.c ccache-2.4/ccache.c +--- ccache-2.4.orig/ccache.c 2004-09-13 03:38:30.000000000 -0700 ++++ ccache-2.4/ccache.c 2006-06-09 16:29:16.695117780 -0700 +@@ -481,7 +481,11 @@ + return; + } + ++#ifdef HAVE_UTIMES ++ utimes(stderr_file, NULL); ++#else + utime(stderr_file, NULL); ++#endif + + if (strcmp(output_file, "/dev/null") == 0) { + ret = 0; +@@ -515,7 +519,11 @@ + } + if (ret == 0) { + /* update the mtime on the file so that make doesn't get confused */ ++#ifdef HAVE_UTIMES ++ utimes(output_file, NULL); ++#else + utime(output_file, NULL); ++#endif + } + + /* get rid of the intermediate preprocessor file */ +diff -Nuar --exclude autom4te.cache --exclude '*~' ccache-2.4.orig/ccache.h ccache-2.4/ccache.h +--- ccache-2.4.orig/ccache.h 2004-09-13 03:38:30.000000000 -0700 ++++ ccache-2.4/ccache.h 2006-06-09 16:28:16.601658626 -0700 +@@ -22,6 +22,9 @@ + #ifdef HAVE_PWD_H + #include <pwd.h> + #endif ++#ifdef HAVE_SYS_TIME_H ++#include <sys/time.h> ++#endif + + #define STATUS_NOTFOUND 3 + #define STATUS_FATAL 4 +diff -Nuar --exclude autom4te.cache --exclude '*~' ccache-2.4.orig/config.h.in ccache-2.4/config.h.in +--- ccache-2.4.orig/config.h.in 2003-09-27 21:48:17.000000000 -0700 ++++ ccache-2.4/config.h.in 2006-06-09 16:25:43.000000000 -0700 +@@ -19,6 +19,9 @@ + /* Define to 1 if you have the `gethostname' function. */ + #undef HAVE_GETHOSTNAME + ++/* Define to 1 if you have the `getpwuid' function. */ ++#undef HAVE_GETPWUID ++ + /* Define to 1 if you have the <inttypes.h> header file. */ + #undef HAVE_INTTYPES_H + +@@ -31,6 +34,9 @@ + /* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */ + #undef HAVE_NDIR_H + ++/* Define to 1 if you have the <pwd.h> header file. */ ++#undef HAVE_PWD_H ++ + /* Define to 1 if you have the `realpath' function. */ + #undef HAVE_REALPATH + +@@ -60,6 +66,9 @@ + /* Define to 1 if you have the <sys/stat.h> header file. */ + #undef HAVE_SYS_STAT_H + ++/* Define to 1 if you have the <sys/time.h> header file. */ ++#undef HAVE_SYS_TIME_H ++ + /* Define to 1 if you have the <sys/types.h> header file. */ + #undef HAVE_SYS_TYPES_H + +@@ -69,6 +78,9 @@ + /* Define to 1 if you have the <unistd.h> header file. */ + #undef HAVE_UNISTD_H + ++/* Define to 1 if you have the `utimes' function. */ ++#undef HAVE_UTIMES ++ + /* Define to 1 if you have the `vasprintf' function. */ + #undef HAVE_VASPRINTF + +diff -Nuar --exclude autom4te.cache --exclude '*~' ccache-2.4.orig/configure.in ccache-2.4/configure.in +--- ccache-2.4.orig/configure.in 2004-09-13 03:38:30.000000000 -0700 ++++ ccache-2.4/configure.in 2006-06-09 16:25:15.541288184 -0700 +@@ -27,10 +27,11 @@ + AC_HEADER_TIME + AC_HEADER_SYS_WAIT + +-AC_CHECK_HEADERS(ctype.h strings.h stdlib.h string.h pwd.h) ++AC_CHECK_HEADERS(ctype.h strings.h stdlib.h string.h pwd.h sys/time.h) + + AC_CHECK_FUNCS(realpath snprintf vsnprintf vasprintf asprintf mkstemp) + AC_CHECK_FUNCS(gethostname getpwuid) ++AC_CHECK_FUNCS(utimes) + + AC_CACHE_CHECK([for compar_fn_t in stdlib.h],ccache_cv_COMPAR_FN_T, [ + AC_TRY_COMPILE( diff --git a/dev-util/ccache/files/ccache-2.4-xrealloc.patch b/dev-util/ccache/files/ccache-2.4-xrealloc.patch new file mode 100644 index 000000000000..8e2d44dc6137 --- /dev/null +++ b/dev-util/ccache/files/ccache-2.4-xrealloc.patch @@ -0,0 +1,35 @@ +https://bugzilla.samba.org/show_bug.cgi?id=7090 +https://bugs.gentoo.org/338137 + +From 52a9cd8eb8a69f9dc6944c047faf112b7137a07b Mon Sep 17 00:00:00 2001 +From: Andrew Tridgell <tridge@samba.org> +Date: Mon, 17 Jul 2006 05:41:12 +0200 +Subject: [PATCH] fixed a bug in x_realloc() + +--- + util.c | 6 +----- + 1 files changed, 1 insertions(+), 5 deletions(-) + +diff --git a/util.c b/util.c +index 073fa81..29d0e5b 100644 +--- a/util.c ++++ b/util.c +@@ -187,14 +187,10 @@ void *x_realloc(void *ptr, size_t size) + { + void *p2; + if (!ptr) return x_malloc(size); +- p2 = malloc(size); ++ p2 = realloc(ptr, size); + if (!p2) { + fatal("out of memory in x_realloc"); + } +- if (ptr) { +- memcpy(p2, ptr, size); +- free(ptr); +- } + return p2; + } + +-- +1.7.3.1 + diff --git a/dev-util/ccache/files/ccache-3.1.10-real-temp-files.patch b/dev-util/ccache/files/ccache-3.1.10-real-temp-files.patch new file mode 100644 index 000000000000..45e654105170 --- /dev/null +++ b/dev-util/ccache/files/ccache-3.1.10-real-temp-files.patch @@ -0,0 +1,185 @@ +https://lists.samba.org/archive/ccache/2014q4/001246.html + +From 5d0f507a4162ac89e05ca633dbc8056454b798f5 Mon Sep 17 00:00:00 2001 +From: Mike Frysinger <vapier@gentoo.org> +Date: Mon, 15 Sep 2014 18:15:02 -0400 +Subject: [PATCH] do not rely on pids being unique + +Linux supports creating pid namespaces cheaply and running processes +inside of them. When you try to share a single cache among multiple +such runs, the fact that the code relies on pid numbers as globally +unique values quickly fails. Instead, switch to standard mkstemp to +generate temp files for us. + +Signed-off-by: Mike Frysinger <vapier@gentoo.org> +--- + ccache.c | 12 ++++++------ + ccache.h | 2 +- + manifest.c | 2 +- + stats.c | 10 +++++++++- + util.c | 13 ++++++++----- + 5 files changed, 25 insertions(+), 14 deletions(-) + +diff --git a/ccache.c b/ccache.c +index 02dbdfa..1dc0a06 100644 +--- a/ccache.c ++++ b/ccache.c +@@ -526,8 +526,11 @@ to_cache(struct args *args) + unsigned added_files = 0; + + tmp_stdout = format("%s.tmp.stdout.%s", cached_obj, tmp_string()); ++ create_empty_file(tmp_stdout); + tmp_stderr = format("%s.tmp.stderr.%s", cached_obj, tmp_string()); ++ create_empty_file(tmp_stderr); + tmp_obj = format("%s.tmp.%s", cached_obj, tmp_string()); ++ create_empty_file(tmp_obj); + + args_add(args, "-o"); + args_add(args, tmp_obj); +@@ -579,7 +582,7 @@ to_cache(struct args *args) + int fd_result; + char *tmp_stderr2; + +- tmp_stderr2 = format("%s.tmp.stderr2.%s", cached_obj, tmp_string()); ++ tmp_stderr2 = format("%s.2", tmp_stderr); + if (x_rename(tmp_stderr, tmp_stderr2)) { + cc_log("Failed to rename %s to %s: %s", tmp_stderr, tmp_stderr2, + strerror(errno)); +@@ -808,6 +808,7 @@ get_object_name_from_cpp(struct args *args, struct mdfour *hash) + } + + path_stderr = format("%s/tmp.cpp_stderr.%s", temp_dir, tmp_string()); ++ create_empty_file(path_stderr); + add_pending_tmp_file(path_stderr); + + time_of_compilation = time(NULL); +@@ -815,6 +816,7 @@ get_object_name_from_cpp(struct args *args, struct mdfour *hash) + if (!direct_i_file) { + path_stdout = format("%s/%s.tmp.%s.%s", + temp_dir, input_base, tmp_string(), i_extension); ++ create_empty_file(path_stdout); + add_pending_tmp_file(path_stdout); + + /* run cpp on the input file to obtain the .i */ +@@ -838,11 +843,6 @@ get_object_name_from_cpp(struct args *args, struct mdfour *hash) + can skip the cpp stage and directly form the + correct i_tmpfile */ + path_stdout = input_file; +- if (create_empty_file(path_stderr) != 0) { +- cc_log("Failed to create %s: %s", path_stderr, strerror(errno)); +- stats_update(STATS_ERROR); +- failed(); +- } + status = 0; + } + +diff --git a/ccache.h b/ccache.h +index 2bc7c87..43ef98d 100644 +--- a/ccache.h ++++ b/ccache.h +@@ -130,7 +130,7 @@ size_t file_size(struct stat *st); + int safe_open(const char *fname); + char *x_realpath(const char *path); + char *gnu_getcwd(void); +-int create_empty_file(const char *fname); ++int create_empty_file(char *fname); + const char *get_home_directory(void); + char *get_cwd(); + bool same_executable_name(const char *s1, const char *s2); +diff --git a/manifest.c b/manifest.c +index 7f02ede..47566d5 100644 +--- a/manifest.c ++++ b/manifest.c +@@ -633,7 +633,7 @@ manifest_put(const char *manifest_path, struct file_hash *object_hash, + } + + tmp_file = format("%s.tmp.%s", manifest_path, tmp_string()); +- fd2 = safe_open(tmp_file); ++ fd2 = mkstemp(tmp_file); + if (fd2 == -1) { + cc_log("Failed to open %s", tmp_file); + goto out; +diff --git a/stats.c b/stats.c +index 2111b65..4ed39c2 100644 +--- a/stats.c ++++ b/stats.c +@@ -126,11 +126,18 @@ stats_write(const char *path, struct counters *counters) + size_t i; + char *tmp_file; + FILE *f; ++ int fd; + + tmp_file = format("%s.tmp.%s", path, tmp_string()); +- f = fopen(tmp_file, "wb"); ++ fd = mkstemp(tmp_file); ++ if (fd == -1) { ++ cc_log("Failed to open %s", tmp_file); ++ goto end; ++ } ++ f = fdopen(fd, "wb"); + if (!f) { + cc_log("Failed to open %s", tmp_file); ++ close(fd); + goto end; + } + for (i = 0; i < counters->size; i++) { +@@ -138,6 +145,7 @@ stats_write(const char *path, struct counters *counters) + fatal("Failed to write to %s", tmp_file); + } + } ++ /* This also implicitly closes the fd. */ + fclose(f); + x_rename(tmp_file, path); + +diff --git a/util.c b/util.c +index 3b472de..cc630a6 100644 +--- a/util.c ++++ b/util.c +@@ -195,7 +195,7 @@ copy_file(const char *src, const char *dest, int compress_dest) + struct stat st; + int errnum; + +- tmp_name = format("%s.%s.XXXXXX", dest, tmp_string()); ++ tmp_name = format("%s.%s", dest, tmp_string()); + cc_log("Copying %s to %s via %s (%s)", + src, dest, tmp_name, compress_dest ? "compressed": "uncompressed"); + +@@ -427,7 +427,7 @@ tmp_string(void) + static char *ret; + + if (!ret) { +- ret = format("%s.%u", get_hostname(), (unsigned)getpid()); ++ ret = format("%s.%u.XXXXXX", get_hostname(), (unsigned)getpid()); + } + + return ret; +@@ -884,12 +884,13 @@ gnu_getcwd(void) + + /* create an empty file */ + int +-create_empty_file(const char *fname) ++create_empty_file(char *fname) + { + int fd; + +- fd = open(fname, O_WRONLY|O_CREAT|O_TRUNC|O_EXCL|O_BINARY, 0666); ++ fd = mkstemp(fname); + if (fd == -1) { ++ cc_log("Failed to create %s: %s", fname, strerror(errno)); + return -1; + } + close(fd); +@@ -1134,7 +1135,9 @@ x_unlink(const char *path) + goto out; + } + if (unlink(tmp_name) == -1) { +- result = -1; ++ /* If it was released in a race, that's OK. */ ++ if (errno != ENOENT) ++ result = -1; + } + out: + free(tmp_name); +-- +2.1.2 + 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 000000000000..5e502912bfa2 --- /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 000000000000..5abd15e1aaff --- /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-3.1.9-test-gcc-4.8.patch b/dev-util/ccache/files/ccache-3.1.9-test-gcc-4.8.patch new file mode 100644 index 000000000000..2a28baf02984 --- /dev/null +++ b/dev-util/ccache/files/ccache-3.1.9-test-gcc-4.8.patch @@ -0,0 +1,156 @@ +https://bugs.gentoo.org/461966 + +fix from upstream + +From b5d63f81c1a83fd4c50b769a96a04f581b7db70c Mon Sep 17 00:00:00 2001 +From: Joel Rosdahl <joel@rosdahl.net> +Date: Wed, 20 Mar 2013 22:18:16 +0100 +Subject: [PATCH] Fix test suite failure on GCC 4.8 + +GCC 4.8 includes /usr/include/stdc-predef.h implicitly, and this shows up +in generated .d files. +--- + test.sh | 35 +++++++++++++++++++---------------- + 1 file changed, 19 insertions(+), 16 deletions(-) + +diff --git a/test.sh b/test.sh +index 3ed9069..3e38387 100755 +--- a/test.sh ++++ b/test.sh +@@ -3,7 +3,7 @@ + # A simple test suite for ccache. + # + # Copyright (C) 2002-2007 Andrew Tridgell +-# Copyright (C) 2009-2012 Joel Rosdahl ++# Copyright (C) 2009-2013 Joel Rosdahl + # + # This program is free software; you can redistribute it and/or modify it under + # the terms of the GNU General Public License as published by the Free Software +@@ -562,6 +562,9 @@ int test3; + EOF + backdate test1.h test2.h test3.h + ++ $COMPILER -c -Wp,-MD,expected.d test.c ++ expected_d_content=`cat expected.d` ++ + ################################################################## + # First compilation is a miss. + testname="first compilation" +@@ -677,7 +680,7 @@ EOF + checkstat 'cache hit (direct)' 0 + checkstat 'cache hit (preprocessed)' 0 + checkstat 'cache miss' 1 +- checkfile other.d "test.o: test.c test1.h test3.h test2.h" ++ checkfile other.d "$expected_d_content" + + rm -f other.d + +@@ -685,7 +688,7 @@ EOF + checkstat 'cache hit (direct)' 1 + checkstat 'cache hit (preprocessed)' 0 + checkstat 'cache miss' 1 +- checkfile other.d "test.o: test.c test1.h test3.h test2.h" ++ checkfile other.d "$expected_d_content" + + rm -f other.d + +@@ -760,7 +763,7 @@ EOF + checkstat 'cache hit (direct)' 0 + checkstat 'cache hit (preprocessed)' 0 + checkstat 'cache miss' 1 +- checkfile test.d "test.o: test.c test1.h test3.h test2.h" ++ checkfile test.d "$expected_d_content" + + rm -f test.d + +@@ -768,7 +771,7 @@ EOF + checkstat 'cache hit (direct)' 1 + checkstat 'cache hit (preprocessed)' 0 + checkstat 'cache miss' 1 +- checkfile test.d "test.o: test.c test1.h test3.h test2.h" ++ checkfile test.d "$expected_d_content" + + ################################################################## + # Check the scenario of running a ccache with direct mode on a cache +@@ -780,7 +783,7 @@ EOF + checkstat 'cache hit (direct)' 0 + checkstat 'cache hit (preprocessed)' 0 + checkstat 'cache miss' 1 +- checkfile test.d "test.o: test.c test1.h test3.h test2.h" ++ checkfile test.d "$expected_d_content" + + rm -f test.d + +@@ -788,7 +791,7 @@ EOF + checkstat 'cache hit (direct)' 0 + checkstat 'cache hit (preprocessed)' 1 + checkstat 'cache miss' 1 +- checkfile test.d "test.o: test.c test1.h test3.h test2.h" ++ checkfile test.d "$expected_d_content" + + rm -f test.d + +@@ -796,7 +799,7 @@ EOF + checkstat 'cache hit (direct)' 0 + checkstat 'cache hit (preprocessed)' 2 + checkstat 'cache miss' 1 +- checkfile test.d "test.o: test.c test1.h test3.h test2.h" ++ checkfile test.d "$expected_d_content" + + rm -f test.d + +@@ -804,7 +807,7 @@ EOF + checkstat 'cache hit (direct)' 1 + checkstat 'cache hit (preprocessed)' 2 + checkstat 'cache miss' 1 +- checkfile test.d "test.o: test.c test1.h test3.h test2.h" ++ checkfile test.d "$expected_d_content" + + ################################################################## + # Check that -MF works. +@@ -815,7 +818,7 @@ EOF + checkstat 'cache hit (direct)' 0 + checkstat 'cache hit (preprocessed)' 0 + checkstat 'cache miss' 1 +- checkfile other.d "test.o: test.c test1.h test3.h test2.h" ++ checkfile other.d "$expected_d_content" + + rm -f other.d + +@@ -823,7 +826,7 @@ EOF + checkstat 'cache hit (direct)' 1 + checkstat 'cache hit (preprocessed)' 0 + checkstat 'cache miss' 1 +- checkfile other.d "test.o: test.c test1.h test3.h test2.h" ++ checkfile other.d "$expected_d_content" + + ################################################################## + # Check that a missing .d file in the cache is handled correctly. +@@ -835,13 +838,13 @@ EOF + checkstat 'cache hit (direct)' 0 + checkstat 'cache hit (preprocessed)' 0 + checkstat 'cache miss' 1 +- checkfile other.d "test.o: test.c test1.h test3.h test2.h" ++ checkfile other.d "$expected_d_content" + + $CCACHE $COMPILER -c -MD test.c + checkstat 'cache hit (direct)' 1 + checkstat 'cache hit (preprocessed)' 0 + checkstat 'cache miss' 1 +- checkfile other.d "test.o: test.c test1.h test3.h test2.h" ++ checkfile other.d "$expected_d_content" + + find $CCACHE_DIR -name '*.d' -exec rm -f '{}' \; + +@@ -849,7 +852,7 @@ EOF + checkstat 'cache hit (direct)' 1 + checkstat 'cache hit (preprocessed)' 1 + checkstat 'cache miss' 1 +- checkfile other.d "test.o: test.c test1.h test3.h test2.h" ++ checkfile other.d "$expected_d_content" + + ################################################################## + # Check that stderr from both the preprocessor and the compiler is emitted +-- +1.8.1.2 + diff --git a/dev-util/ccache/files/ccache-config b/dev-util/ccache/files/ccache-config new file mode 100644 index 000000000000..a7dc4a04a76e --- /dev/null +++ b/dev-util/ccache/files/ccache-config @@ -0,0 +1,100 @@ +#!/bin/sh +# +# ccache-config - helper script for ccache and its ebuild +# +# Copyright 2003-2014 Superlucidity Services, LLC +# 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 + +. /etc/init.d/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%/}/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 [ -n "$(type -p ${1})" ]; 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 /usr/bin/ccache "${t}" + c_eend + fi +} +cc_links() { + local a + for a in gcc cc c++ g++ ; do + if [ -n "${2}" ] ; then + # gcc-config doesnt install ${CHOST}-cc, so until + # it does, don't install a ccache symlink for it + [ "${a}" = "cc" ] && continue + a="${2}-${a}" + fi + "cc_${1}_link" "${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/files/ccache-config-2 b/dev-util/ccache/files/ccache-config-2 new file mode 100644 index 000000000000..914f09500a37 --- /dev/null +++ b/dev-util/ccache/files/ccache-config-2 @@ -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}"/etc/init.d/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/files/ccache-config-3 b/dev-util/ccache/files/ccache-config-3 new file mode 100644 index 000000000000..7f604f0016ef --- /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 000000000000..a1113ba3300a --- /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> |