Import patches to ccache-2.4 from debian (ccache-2.4-15)
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10902 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
db41b96503
commit
5e2812ed09
25 changed files with 2351 additions and 0 deletions
100
CCache/debian/patches/01_no_home.diff
Normal file
100
CCache/debian/patches/01_no_home.diff
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
--- ccache.c
|
||||
+++ ccache.c
|
||||
@@ -836,6 +836,13 @@
|
||||
{
|
||||
/* find the real compiler */
|
||||
find_compiler(argc, argv);
|
||||
+
|
||||
+ /* use the real compiler if HOME is not set */
|
||||
+ if (!cache_dir) {
|
||||
+ cc_log("Unable to determine home directory\n");
|
||||
+ cc_log("ccache is disabled\n");
|
||||
+ failed();
|
||||
+ }
|
||||
|
||||
/* we might be disabled */
|
||||
if (getenv("CCACHE_DISABLE")) {
|
||||
@@ -895,6 +902,13 @@
|
||||
printf("-V print version number\n");
|
||||
}
|
||||
|
||||
+static void check_cache_dir(void)
|
||||
+{
|
||||
+ if (!cache_dir) {
|
||||
+ fatal("Unable to determine home directory");
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
/* the main program when not doing a compile */
|
||||
static int ccache_main(int argc, char *argv[])
|
||||
{
|
||||
@@ -914,31 +928,37 @@
|
||||
exit(0);
|
||||
|
||||
case 's':
|
||||
+ check_cache_dir();
|
||||
stats_summary();
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
+ check_cache_dir();
|
||||
cleanup_all(cache_dir);
|
||||
printf("Cleaned cache\n");
|
||||
break;
|
||||
|
||||
case 'C':
|
||||
+ check_cache_dir();
|
||||
wipe_all(cache_dir);
|
||||
printf("Cleared cache\n");
|
||||
break;
|
||||
|
||||
case 'z':
|
||||
+ check_cache_dir();
|
||||
stats_zero();
|
||||
printf("Statistics cleared\n");
|
||||
break;
|
||||
|
||||
case 'F':
|
||||
+ check_cache_dir();
|
||||
v = atoi(optarg);
|
||||
stats_set_limits(v, -1);
|
||||
printf("Set cache file limit to %u\n", (unsigned)v);
|
||||
break;
|
||||
|
||||
case 'M':
|
||||
+ check_cache_dir();
|
||||
v = value_units(optarg);
|
||||
stats_set_limits(-1, v);
|
||||
printf("Set cache size limit to %uk\n", (unsigned)v);
|
||||
@@ -983,7 +1003,10 @@
|
||||
|
||||
cache_dir = getenv("CCACHE_DIR");
|
||||
if (!cache_dir) {
|
||||
- x_asprintf(&cache_dir, "%s/.ccache", get_home_directory());
|
||||
+ const char *home_directory = get_home_directory();
|
||||
+ if (home_directory) {
|
||||
+ x_asprintf(&cache_dir, "%s/.ccache", home_directory);
|
||||
+ }
|
||||
}
|
||||
|
||||
temp_dir = getenv("CCACHE_TEMPDIR");
|
||||
@@ -1023,7 +1046,7 @@
|
||||
}
|
||||
|
||||
/* make sure the cache dir exists */
|
||||
- if (create_dir(cache_dir) != 0) {
|
||||
+ if (cache_dir && (create_dir(cache_dir) != 0)) {
|
||||
fprintf(stderr,"ccache: failed to create %s (%s)\n",
|
||||
cache_dir, strerror(errno));
|
||||
exit(1);
|
||||
--- util.c
|
||||
+++ util.c
|
||||
@@ -448,7 +448,7 @@
|
||||
}
|
||||
}
|
||||
#endif
|
||||
- fatal("Unable to determine home directory");
|
||||
+ cc_log("Unable to determine home directory");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
1026
CCache/debian/patches/02_ccache-compressed.diff
Normal file
1026
CCache/debian/patches/02_ccache-compressed.diff
Normal file
File diff suppressed because it is too large
Load diff
133
CCache/debian/patches/03_long_options.diff
Normal file
133
CCache/debian/patches/03_long_options.diff
Normal file
|
|
@ -0,0 +1,133 @@
|
|||
Index: ccache.c
|
||||
===================================================================
|
||||
--- ccache.c (révision 7695)
|
||||
+++ ccache.c (copie de travail)
|
||||
@@ -22,6 +22,7 @@
|
||||
*/
|
||||
|
||||
#include "ccache.h"
|
||||
+#include <getopt.h>
|
||||
|
||||
/* the base cache directory */
|
||||
char *cache_dir = NULL;
|
||||
@@ -885,14 +886,14 @@
|
||||
printf("\tcompiler [compile options] (via symbolic link)\n");
|
||||
printf("\nOptions:\n");
|
||||
|
||||
- printf("-s show statistics summary\n");
|
||||
- printf("-z zero statistics\n");
|
||||
- printf("-c run a cache cleanup\n");
|
||||
- printf("-C clear the cache completely\n");
|
||||
- printf("-F <maxfiles> set maximum files in cache\n");
|
||||
- printf("-M <maxsize> set maximum size of cache (use G, M or K)\n");
|
||||
- printf("-h this help page\n");
|
||||
- printf("-V print version number\n");
|
||||
+ printf("-s, --show-stats show statistics summary\n");
|
||||
+ printf("-z, --zero-stats zero statistics\n");
|
||||
+ printf("-c, --cleanup run a cache cleanup\n");
|
||||
+ printf("-C, --clear clear the cache completely\n");
|
||||
+ printf("-F <n>, --max-files=<n> set maximum files in cache\n");
|
||||
+ printf("-M <n>, --max-size=<n> set maximum size of cache (use G, M or K)\n");
|
||||
+ printf("-h, --help this help page\n");
|
||||
+ printf("-V, --version print version number\n");
|
||||
}
|
||||
|
||||
/* the main program when not doing a compile */
|
||||
@@ -901,7 +902,21 @@
|
||||
int c;
|
||||
size_t v;
|
||||
|
||||
- while ((c = getopt(argc, argv, "hszcCF:M:V")) != -1) {
|
||||
+ static struct option long_options[] =
|
||||
+ {
|
||||
+ {"show-stats", no_argument, 0, 's'},
|
||||
+ {"zero-stats", no_argument, 0, 'z'},
|
||||
+ {"cleanup", no_argument, 0, 'c'},
|
||||
+ {"clear", no_argument, 0, 'C'},
|
||||
+ {"max-files", required_argument, 0, 'F'},
|
||||
+ {"max-size", required_argument, 0, 'M'},
|
||||
+ {"help", no_argument, 0, 'h'},
|
||||
+ {"version", no_argument, 0, 'V'},
|
||||
+ {0, 0, 0, 0}
|
||||
+ };
|
||||
+ int option_index = 0;
|
||||
+
|
||||
+ while ((c = getopt_long(argc, argv, "hszcCF:M:V", long_options, &option_index)) != -1) {
|
||||
switch (c) {
|
||||
case 'V':
|
||||
printf("ccache version %s\n", CCACHE_VERSION);
|
||||
Index: ccache.1
|
||||
===================================================================
|
||||
--- ccache.1 (révision 7695)
|
||||
+++ ccache.1 (copie de travail)
|
||||
@@ -23,14 +23,14 @@
|
||||
.nf
|
||||
|
||||
|
||||
--s show statistics summary
|
||||
--z zero statistics
|
||||
--c run a cache cleanup
|
||||
--C clear the cache completely
|
||||
--F <maxfiles> set maximum files in cache
|
||||
--M <maxsize> set maximum size of cache (use G, M or K)
|
||||
--h this help page
|
||||
--V print version number
|
||||
+\-s, \-\-show-stats show statistics summary
|
||||
+\-z, \-\-zero-stats zero statistics
|
||||
+\-c, \-\-cleanup run a cache cleanup
|
||||
+\-C, \-\-clear clear the cache completely
|
||||
+\-F <n>, \-\-max-files=<n> set maximum files in cache
|
||||
+\-M <n>, \-\-max-size=<n> set maximum size of cache (use G, M or K)
|
||||
+\-h, \-\-help this help page
|
||||
+\-V, \-\-version print version number
|
||||
|
||||
.fi
|
||||
|
||||
@@ -43,22 +43,22 @@
|
||||
normal compiler options apply and you should refer to your compilers
|
||||
documentation\&.
|
||||
.PP
|
||||
-.IP "\fB-h\fP"
|
||||
+.IP "\fB-h, --help\fP"
|
||||
Print a options summary page
|
||||
.IP
|
||||
-.IP "\fB-s\fP"
|
||||
+.IP "\fB-s, --show-stats\fP"
|
||||
Print the current statistics summary for the cache\&. The
|
||||
statistics are stored spread across the subdirectories of the
|
||||
cache\&. Using "ccache -s" adds up the statistics across all
|
||||
subdirectories and prints the totals\&.
|
||||
.IP
|
||||
-.IP "\fB-z\fP"
|
||||
+.IP "\fB-z, --zero-stats\fP"
|
||||
Zero the cache statistics\&.
|
||||
.IP
|
||||
-.IP "\fB-V\fP"
|
||||
+.IP "\fB-V, --version\fP"
|
||||
Print the ccache version number
|
||||
.IP
|
||||
-.IP "\fB-c\fP"
|
||||
+.IP "\fB-c, --cleanup\fP"
|
||||
Clean the cache and re-calculate the cache file count and
|
||||
size totals\&. Normally the -c option should not be necessary as ccache
|
||||
keeps the cache below the specified limits at runtime and keeps
|
||||
@@ -66,16 +66,16 @@
|
||||
if you manually modify the cache contents or believe that the cache
|
||||
size statistics may be inaccurate\&.
|
||||
.IP
|
||||
-.IP "\fB-C\fP"
|
||||
+.IP "\fB-C, --clear\fP"
|
||||
Clear the entire cache, removing all cached files\&.
|
||||
.IP
|
||||
-.IP "\fB-F maxfiles\fP"
|
||||
+.IP "\fB-F <maxfiles>, --max-files=<maxfiles>\fP"
|
||||
This sets the maximum number of files allowed in
|
||||
the cache\&. The value is stored inside the cache directory and applies
|
||||
to all future compiles\&. Due to the way the value is stored the actual
|
||||
value used is always rounded down to the nearest multiple of 16\&.
|
||||
.IP
|
||||
-.IP "\fB-M maxsize\fP"
|
||||
+.IP "\fB-M <maxsize>, --max-size=<maxsize>\fP"
|
||||
This sets the maximum cache size\&. You can specify
|
||||
a value in gigabytes, megabytes or kilobytes by appending a G, M or K
|
||||
to the value\&. The default is gigabytes\&. The actual value stored is
|
||||
13
CCache/debian/patches/04_ignore_profile.diff
Normal file
13
CCache/debian/patches/04_ignore_profile.diff
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
diff -ru ccache-2.4/ccache.c ccache-2.4-tp/ccache.c
|
||||
--- ccache.c 2007-05-20 03:14:19.000000000 +1000
|
||||
+++ ccache.c 2007-05-20 03:17:54.000000000 +1000
|
||||
@@ -641,6 +641,9 @@
|
||||
|
||||
/* these are too hard */
|
||||
if (strcmp(argv[i], "-fbranch-probabilities")==0 ||
|
||||
+ strcmp(argv[i], "-fprofile-arcs") == 0 ||
|
||||
+ strcmp(argv[i], "-ftest-coverage") == 0 ||
|
||||
+ strcmp(argv[i], "--coverage") == 0 ||
|
||||
strcmp(argv[i], "-M") == 0 ||
|
||||
strcmp(argv[i], "-MM") == 0 ||
|
||||
strcmp(argv[i], "-x") == 0) {
|
||||
45
CCache/debian/patches/05_nfs_fix.diff
Normal file
45
CCache/debian/patches/05_nfs_fix.diff
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
--- ccache.1.orig 2007-05-20 17:30:57.000000000 +1200
|
||||
+++ ccache.1 2007-05-20 17:31:27.000000000 +1200
|
||||
@@ -367,12 +367,6 @@
|
||||
.IP o
|
||||
ccache avoids a double call to cpp on a cache miss
|
||||
.PP
|
||||
-.SH "BUGS"
|
||||
-.PP
|
||||
-When the cache is stored on an NFS filesystem, the filesystem must be
|
||||
-exported with the \fBno_subtree_check\fP option to make renames between
|
||||
-directories reliable\&.
|
||||
-.PP
|
||||
.SH "CREDITS"
|
||||
.PP
|
||||
Thanks to the following people for their contributions to ccache
|
||||
--- util.c.patched 2007-05-20 18:19:11.000000000 +1200
|
||||
+++ util.c 2007-05-20 18:20:55.000000000 +1200
|
||||
@@ -58,9 +58,26 @@
|
||||
}
|
||||
}
|
||||
|
||||
+static int safe_rename(const char* oldpath, const char* newpath)
|
||||
+{
|
||||
+ /* safe_rename is for creating entries in the cache.
|
||||
+
|
||||
+ Works like rename(), but it never overwrites an existing
|
||||
+ cache entry. This avoids corruption on NFS. */
|
||||
+ int status = link( oldpath, newpath );
|
||||
+ if( status == 0 || errno == EEXIST )
|
||||
+ {
|
||||
+ return unlink( oldpath );
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ return -1;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
/* move a file using rename */
|
||||
int move_file(const char *src, const char *dest) {
|
||||
- return rename(src, dest);
|
||||
+ return safe_rename(src, dest);
|
||||
}
|
||||
|
||||
/* copy a file - used when hard links don't work
|
||||
77
CCache/debian/patches/06_md.diff
Normal file
77
CCache/debian/patches/06_md.diff
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
--- ccache.c Mon Sep 13 11:38:30 2004
|
||||
+++ ccache.c Thu Jun 21 22:17:32 2007
|
||||
@@ -627,6 +627,13 @@ static void process_args(int argc, char
|
||||
int found_S_opt = 0;
|
||||
struct stat st;
|
||||
char *e;
|
||||
+ /* is gcc being asked to output dependencies? */
|
||||
+ int generating_dependencies = 0;
|
||||
+ /* is the dependency makefile name overridden with -MF? */
|
||||
+ int dependency_filename_specified = 0;
|
||||
+ /* is the dependency makefile target name specified with -MQ or -MF? */
|
||||
+ int dependency_target_specified = 0;
|
||||
+
|
||||
|
||||
stripped_args = args_init(0, NULL);
|
||||
|
||||
@@ -702,6 +709,18 @@ static void process_args(int argc, char
|
||||
continue;
|
||||
}
|
||||
|
||||
+ /* These options require special handling, because they
|
||||
+ behave differently with gcc -E, when the output
|
||||
+ file is not specified. */
|
||||
+
|
||||
+ if (strcmp(argv[i], "-MD") == 0 || strcmp(argv[i], "-MMD") == 0) {
|
||||
+ generating_dependencies = 1;
|
||||
+ } else if (strcmp(argv[i], "-MF") == 0) {
|
||||
+ dependency_filename_specified = 1;
|
||||
+ } else if (strcmp(argv[i], "-MQ") == 0 || strcmp(argv[i], "-MT") == 0) {
|
||||
+ dependency_target_specified = 1;
|
||||
+ }
|
||||
+
|
||||
/* options that take an argument */
|
||||
{
|
||||
const char *opts[] = {"-I", "-include", "-imacros", "-iprefix",
|
||||
@@ -812,6 +831,41 @@ static void process_args(int argc, char
|
||||
}
|
||||
p[1] = found_S_opt ? 's' : 'o';
|
||||
p[2] = 0;
|
||||
+ }
|
||||
+
|
||||
+ /* If dependencies are generated, configure the preprocessor */
|
||||
+
|
||||
+ if (generating_dependencies && output_file) {
|
||||
+ if (!dependency_filename_specified) {
|
||||
+ char *default_depfile_name = x_strdup(output_file);
|
||||
+ char *p = strrchr(default_depfile_name, '.');
|
||||
+
|
||||
+ if (p) {
|
||||
+ if (strlen(p) < 2) {
|
||||
+ stats_update(STATS_ARGS);
|
||||
+ failed();
|
||||
+ return;
|
||||
+ }
|
||||
+ *p = 0;
|
||||
+ }
|
||||
+ else {
|
||||
+ int len = p - default_depfile_name;
|
||||
+
|
||||
+ p = x_malloc(len + 3);
|
||||
+ strncpy(default_depfile_name, p, len - 1);
|
||||
+ free(default_depfile_name);
|
||||
+ default_depfile_name = p;
|
||||
+ }
|
||||
+
|
||||
+ strcat(default_depfile_name, ".d");
|
||||
+ args_add(stripped_args, "-MF");
|
||||
+ args_add(stripped_args, default_depfile_name);
|
||||
+ }
|
||||
+
|
||||
+ if (!dependency_target_specified) {
|
||||
+ args_add(stripped_args, "-MT");
|
||||
+ args_add(stripped_args, output_file);
|
||||
+ }
|
||||
}
|
||||
|
||||
/* cope with -o /dev/null */
|
||||
75
CCache/debian/patches/07_cachedirtag.diff
Normal file
75
CCache/debian/patches/07_cachedirtag.diff
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
Index: ccache.c
|
||||
===================================================================
|
||||
--- ccache.c (révision 7695)
|
||||
+++ ccache.c (copie de travail)
|
||||
@@ -1029,6 +1029,14 @@
|
||||
exit(1);
|
||||
}
|
||||
|
||||
+ if (!getenv("CCACHE_READONLY")) {
|
||||
+ if (create_cachedirtag(cache_dir) != 0) {
|
||||
+ fprintf(stderr,"ccache: failed to create %s/CACHEDIR.TAG (%s)\n",
|
||||
+ cache_dir, strerror(errno));
|
||||
+ exit(1);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
ccache(argc, argv);
|
||||
return 1;
|
||||
}
|
||||
Index: ccache.h
|
||||
===================================================================
|
||||
--- ccache.h (révision 7695)
|
||||
+++ ccache.h (copie de travail)
|
||||
@@ -81,6 +81,7 @@
|
||||
int copy_file(const char *src, const char *dest);
|
||||
|
||||
int create_dir(const char *dir);
|
||||
+int create_cachedirtag(const char *dir);
|
||||
void x_asprintf(char **ptr, const char *format, ...);
|
||||
char *x_strdup(const char *s);
|
||||
void *x_realloc(void *ptr, size_t size);
|
||||
Index: util.c
|
||||
===================================================================
|
||||
--- util.c (révision 7695)
|
||||
+++ util.c (copie de travail)
|
||||
@@ -138,6 +138,39 @@
|
||||
return 0;
|
||||
}
|
||||
|
||||
+char const CACHEDIR_TAG[] =
|
||||
+ "Signature: 8a477f597d28d172789f06886806bc55\n"
|
||||
+ "# This file is a cache directory tag created by ccache.\n"
|
||||
+ "# For information about cache directory tags, see:\n"
|
||||
+ "# http://www.brynosaurus.com/cachedir/\n";
|
||||
+
|
||||
+int create_cachedirtag(const char *dir)
|
||||
+{
|
||||
+ char *filename;
|
||||
+ struct stat st;
|
||||
+ FILE *f;
|
||||
+ x_asprintf(&filename, "%s/CACHEDIR.TAG", dir);
|
||||
+ if (stat(filename, &st) == 0) {
|
||||
+ if (S_ISREG(st.st_mode)) {
|
||||
+ goto success;
|
||||
+ }
|
||||
+ errno = EEXIST;
|
||||
+ goto error;
|
||||
+ }
|
||||
+ f = fopen(filename, "w");
|
||||
+ if (!f) goto error;
|
||||
+ if (fwrite(CACHEDIR_TAG, sizeof(CACHEDIR_TAG)-1, 1, f) != 1) {
|
||||
+ goto error;
|
||||
+ }
|
||||
+ if (fclose(f)) goto error;
|
||||
+success:
|
||||
+ free(filename);
|
||||
+ return 0;
|
||||
+error:
|
||||
+ free(filename);
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
/*
|
||||
this is like asprintf() but dies if the malloc fails
|
||||
note that we use vsnprintf in a rather poor way to make this more portable
|
||||
89
CCache/debian/patches/08_manpage_hyphens.diff
Normal file
89
CCache/debian/patches/08_manpage_hyphens.diff
Normal file
|
|
@ -0,0 +1,89 @@
|
|||
Index: ccache.1
|
||||
===================================================================
|
||||
--- ccache.1 (révision 7695)
|
||||
+++ ccache.1 (copie de travail)
|
||||
@@ -49,7 +49,7 @@
|
||||
.IP "\fB-s\fP"
|
||||
Print the current statistics summary for the cache\&. The
|
||||
statistics are stored spread across the subdirectories of the
|
||||
-cache\&. Using "ccache -s" adds up the statistics across all
|
||||
+cache\&. Using "ccache \-s" adds up the statistics across all
|
||||
subdirectories and prints the totals\&.
|
||||
.IP
|
||||
.IP "\fB-z\fP"
|
||||
@@ -60,7 +60,7 @@
|
||||
.IP
|
||||
.IP "\fB-c\fP"
|
||||
Clean the cache and re-calculate the cache file count and
|
||||
-size totals\&. Normally the -c option should not be necessary as ccache
|
||||
+size totals\&. Normally the \-c option should not be necessary as ccache
|
||||
keeps the cache below the specified limits at runtime and keeps
|
||||
statistics up to date on each compile\&. This option is mostly useful
|
||||
if you manually modify the cache contents or believe that the cache
|
||||
@@ -100,9 +100,9 @@
|
||||
|
||||
|
||||
cp ccache /usr/local/bin/
|
||||
- ln -s /usr/local/bin/ccache /usr/local/bin/gcc
|
||||
- ln -s /usr/local/bin/ccache /usr/local/bin/g++
|
||||
- ln -s /usr/local/bin/ccache /usr/local/bin/cc
|
||||
+ ln \-s /usr/local/bin/ccache /usr/local/bin/gcc
|
||||
+ ln \-s /usr/local/bin/ccache /usr/local/bin/g++
|
||||
+ ln \-s /usr/local/bin/ccache /usr/local/bin/cc
|
||||
|
||||
.fi
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
.PP
|
||||
When run as a compiler front end ccache usually just takes the same
|
||||
command line options as the compiler you are using\&. The only exception
|
||||
-to this is the option \&'--ccache-skip\&'\&. That option can be used to tell
|
||||
+to this is the option \&'\-\-ccache-skip\&'\&. That option can be used to tell
|
||||
ccache that the next option is definitely not a input filename, and
|
||||
should be passed along to the compiler as-is\&.
|
||||
.PP
|
||||
@@ -128,7 +128,7 @@
|
||||
of the resulting object file (among other things)\&. The heuristic
|
||||
ccache uses in this parse is that any string on the command line that
|
||||
exists as a file is treated as an input file name (usually a C
|
||||
-file)\&. By using --ccache-skip you can force an option to not be
|
||||
+file)\&. By using \-\-ccache-skip you can force an option to not be
|
||||
treated as an input file name and instead be passed along to the
|
||||
compiler as a command line option\&.
|
||||
.PP
|
||||
@@ -238,7 +238,7 @@
|
||||
.IP "\fBCCACHE_UNIFY\fP"
|
||||
If you set the environment variable CCACHE_UNIFY
|
||||
then ccache will use the C/C++ unifier when hashing the pre-processor
|
||||
-output if -g is not used in the compile\&. The unifier is slower than a
|
||||
+output if \-g is not used in the compile\&. The unifier is slower than a
|
||||
normal hash, so setting this environment variable loses a little bit
|
||||
of speed, but it means that ccache can take advantage of not
|
||||
recompiling when the changes to the source code consist of
|
||||
@@ -262,7 +262,7 @@
|
||||
.PP
|
||||
By default ccache has a one gigabyte limit on the cache size and no
|
||||
maximum number of files\&. You can set a different limit using the
|
||||
-"ccache -M" and "ccache -F" options, which set the size and number of
|
||||
+"ccache \-M" and "ccache \-F" options, which set the size and number of
|
||||
files limits\&.
|
||||
.PP
|
||||
When these limits are reached ccache will reduce the cache to 20%
|
||||
@@ -276,7 +276,7 @@
|
||||
that it is the same code by forming a hash of:
|
||||
.PP
|
||||
.IP o
|
||||
-the pre-processor output from running the compiler with -E
|
||||
+the pre-processor output from running the compiler with \-E
|
||||
.IP o
|
||||
the command line options
|
||||
.IP o
|
||||
@@ -331,7 +331,7 @@
|
||||
.IP o
|
||||
Make sure that the setgid bit is set on all directories in the
|
||||
cache\&. This tells the filesystem to inherit group ownership for new
|
||||
-directories\&. The command "chmod g+s `find $CCACHE_DIR -type d`" might
|
||||
+directories\&. The command "chmod g+s `find $CCACHE_DIR \-type d`" might
|
||||
be useful for this\&.
|
||||
.PP
|
||||
.SH "HISTORY"
|
||||
11
CCache/debian/patches/09_respect_ldflags.diff
Normal file
11
CCache/debian/patches/09_respect_ldflags.diff
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
--- Makefile.in.orig 2008-03-23 17:01:19.000000000 +1300
|
||||
+++ Makefile.in 2008-03-23 17:03:03.000000000 +1300
|
||||
@@ -21,7 +21,7 @@
|
||||
docs: ccache.1 web/ccache-man.html
|
||||
|
||||
ccache$(EXEEXT): $(OBJS) $(HEADERS)
|
||||
- $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS)
|
||||
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
|
||||
|
||||
ccache.1: ccache.yo
|
||||
-yodl2man -o ccache.1 ccache.yo
|
||||
23
CCache/debian/patches/10_lru_cleanup.diff
Normal file
23
CCache/debian/patches/10_lru_cleanup.diff
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
--- ccache.c (révision 8804)
|
||||
+++ ccache.c (copie de travail)
|
||||
@@ -481,6 +481,9 @@
|
||||
return;
|
||||
}
|
||||
|
||||
+ /* update timestamps for LRU cleanup
|
||||
+ also gives output_file a sensible mtime when hard-linking (for make) */
|
||||
+ utime(hashname, NULL);
|
||||
utime(stderr_file, NULL);
|
||||
|
||||
if (strcmp(output_file, "/dev/null") == 0) {
|
||||
@@ -513,10 +516,6 @@
|
||||
failed();
|
||||
}
|
||||
}
|
||||
- if (ret == 0) {
|
||||
- /* update the mtime on the file so that make doesn't get confused */
|
||||
- utime(output_file, NULL);
|
||||
- }
|
||||
|
||||
/* get rid of the intermediate preprocessor file */
|
||||
if (i_tmpfile) {
|
||||
85
CCache/debian/patches/11_utimes.diff
Normal file
85
CCache/debian/patches/11_utimes.diff
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
--- ccache.c 2004-09-13 03:38:30.000000000 -0700
|
||||
+++ ccache.c 2006-06-09 16:29:16.695117780 -0700
|
||||
@@ -481,8 +481,13 @@
|
||||
|
||||
/* update timestamps for LRU cleanup
|
||||
also gives output_file a sensible mtime when hard-linking (for make) */
|
||||
+#ifdef HAVE_UTIMES
|
||||
+ utimes(hashname, NULL);
|
||||
+ utimes(stderr_file, NULL);
|
||||
+#else
|
||||
utime(hashname, NULL);
|
||||
utime(stderr_file, NULL);
|
||||
+#endif
|
||||
|
||||
if (strcmp(output_file, "/dev/null") == 0) {
|
||||
ret = 0;
|
||||
--- ccache.h 2004-09-13 03:38:30.000000000 -0700
|
||||
+++ 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
|
||||
--- config.h.in 2003-09-27 21:48:17.000000000 -0700
|
||||
+++ 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
|
||||
|
||||
--- configure.in 2004-09-13 03:38:30.000000000 -0700
|
||||
+++ 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(
|
||||
83
CCache/debian/patches/12_cachesize_permissions.diff
Normal file
83
CCache/debian/patches/12_cachesize_permissions.diff
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
--- stats.c (révision 8804)
|
||||
+++ stats.c (copie de travail)
|
||||
@@ -286,7 +286,7 @@
|
||||
|
||||
|
||||
/* set the per directory limits */
|
||||
-void stats_set_limits(long maxfiles, long maxsize)
|
||||
+int stats_set_limits(long maxfiles, long maxsize)
|
||||
{
|
||||
int dir;
|
||||
unsigned counters[STATS_END];
|
||||
@@ -298,7 +298,9 @@
|
||||
maxsize /= 16;
|
||||
}
|
||||
|
||||
- create_dir(cache_dir);
|
||||
+ if (create_dir(cache_dir) != 0) {
|
||||
+ return 1;
|
||||
+ }
|
||||
|
||||
/* set the limits in each directory */
|
||||
for (dir=0;dir<=0xF;dir++) {
|
||||
@@ -306,7 +308,9 @@
|
||||
int fd;
|
||||
|
||||
x_asprintf(&cdir, "%s/%1x", cache_dir, dir);
|
||||
- create_dir(cdir);
|
||||
+ if (create_dir(cdir) != 0) {
|
||||
+ return 1;
|
||||
+ }
|
||||
x_asprintf(&fname, "%s/stats", cdir);
|
||||
free(cdir);
|
||||
|
||||
@@ -326,6 +330,8 @@
|
||||
}
|
||||
free(fname);
|
||||
}
|
||||
+
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
/* set the per directory sizes */
|
||||
--- ccache.c (révision 8804)
|
||||
+++ ccache.c (copie de travail)
|
||||
@@ -935,15 +934,23 @@
|
||||
case 'F':
|
||||
check_cache_dir();
|
||||
v = atoi(optarg);
|
||||
- stats_set_limits(v, -1);
|
||||
- printf("Set cache file limit to %u\n", (unsigned)v);
|
||||
+ if (stats_set_limits(v, -1) == 0) {
|
||||
+ printf("Set cache file limit to %u\n", (unsigned)v);
|
||||
+ } else {
|
||||
+ printf("Could not set cache file limit.\n");
|
||||
+ exit(1);
|
||||
+ }
|
||||
break;
|
||||
|
||||
case 'M':
|
||||
check_cache_dir();
|
||||
v = value_units(optarg);
|
||||
- stats_set_limits(-1, v);
|
||||
- printf("Set cache size limit to %uk\n", (unsigned)v);
|
||||
+ if (stats_set_limits(-1, v) == 0) {
|
||||
+ printf("Set cache size limit to %uk\n", (unsigned)v);
|
||||
+ } else {
|
||||
+ printf("Could not set cache size limit.\n");
|
||||
+ exit(1);
|
||||
+ }
|
||||
break;
|
||||
|
||||
default:
|
||||
--- ccache.h (révision 8804)
|
||||
+++ ccache.h (copie de travail)
|
||||
@@ -101,7 +101,7 @@
|
||||
void stats_summary(void);
|
||||
void stats_tocache(size_t size);
|
||||
void stats_read(const char *stats_file, unsigned counters[STATS_END]);
|
||||
-void stats_set_limits(long maxfiles, long maxsize);
|
||||
+int stats_set_limits(long maxfiles, long maxsize);
|
||||
size_t value_units(const char *s);
|
||||
void display_size(unsigned v);
|
||||
void stats_set_sizes(const char *dir, size_t num_files, size_t total_size);
|
||||
47
CCache/debian/patches/CREDITS
Normal file
47
CCache/debian/patches/CREDITS
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
01_no_home.diff:
|
||||
Francois Marier <francois@debian.org>
|
||||
Made especially for the Debian package.
|
||||
|
||||
02_ccache_compressed.diff:
|
||||
Lars Gustäbel <lars@gustaebel.de>
|
||||
http://www.gustaebel.de/lars/ccache/ (downloaded on 2007-05-20)
|
||||
|
||||
03_long_options.diff:
|
||||
Francois Marier <francois@debian.org>
|
||||
Made especially for the Debian package.
|
||||
|
||||
04_ignore_profile.diff:
|
||||
Ted Percival <ted@midg3t.net>
|
||||
http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=20;filename=ccache-profile.patch;att=1;bug=215849
|
||||
|
||||
05_nfs_fix.diff:
|
||||
John Coiner <john.coiner@amd.com>
|
||||
http://lists.samba.org/archive/ccache/2007q1/000265.html
|
||||
|
||||
06_md.diff:
|
||||
Andrea Bittau <a.bittau@cs.ucl.ac.uk>
|
||||
http://darkircop.org/ccache/ccache-2.4-md.patch (downloaded on 2007-06-30)
|
||||
|
||||
07_cachedirtag.diff:
|
||||
Karl Chen <quarl@cs.berkeley.edu>
|
||||
http://lists.samba.org/archive/ccache/2008q1/000316.html (downloaded on 2008-02-02)
|
||||
|
||||
08_manpage_hyphens.diff:
|
||||
Francois Marier <francois@debian.org>
|
||||
Made especially for the Debian package.
|
||||
|
||||
09_respect_ldflags.diff:
|
||||
Lisa Seelye <lisa@gentoo.org>
|
||||
http://sources.gentoo.org/viewcvs.py/gentoo-x86/dev-util/ccache/files/ccache-2.4-respectflags.patch?rev=1.1&view=markup
|
||||
|
||||
10_lru_cleanup.diff:
|
||||
RW <fbsd06@mlists.homeunix.com>
|
||||
http://lists.samba.org/archive/ccache/2008q2/000339.html (downloaded on 2008-04-11)
|
||||
|
||||
11_utimes.diff:
|
||||
Robin H. Johnson <robbat2@gentoo.org>
|
||||
http://sources.gentoo.org/viewcvs.py/gentoo-x86/dev-util/ccache/files/ccache-2.4-utimes.patch?rev=1.1&view=markup
|
||||
|
||||
12_cachesize_permissions.diff:
|
||||
Francois Marier <francois@debian.org>
|
||||
Made especially for the Debian package to fix http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=332527
|
||||
Loading…
Add table
Add a link
Reference in a new issue