summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2015-08-08 13:49:04 -0700
committerRobin H. Johnson <robbat2@gentoo.org>2015-08-08 17:38:18 -0700
commit56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch)
tree3f91093cdb475e565ae857f1c5a7fd339e2d781e /dev-util/ccache/files
downloadgentoo-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/files')
-rw-r--r--dev-util/ccache/files/ccache-2.4-profile.patch27
-rw-r--r--dev-util/ccache/files/ccache-2.4-respectflags.patch13
-rw-r--r--dev-util/ccache/files/ccache-2.4-utimes.patch105
-rw-r--r--dev-util/ccache/files/ccache-2.4-xrealloc.patch35
-rw-r--r--dev-util/ccache/files/ccache-3.1.10-real-temp-files.patch185
-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-3.1.9-test-gcc-4.8.patch156
-rw-r--r--dev-util/ccache/files/ccache-config100
-rw-r--r--dev-util/ccache/files/ccache-config-297
-rw-r--r--dev-util/ccache/files/ccache-config-397
11 files changed, 851 insertions, 0 deletions
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