comparison lib/swig/swigwin-2.0.11/CCache/debian/patches/02_ccache-compressed.diff @ 1899:b3009adc0e2f

Adding swig, gitignore, hgignore
author Nomad
date Mon, 21 Oct 2013 10:42:27 +0200
parents
children
comparison
equal deleted inserted replaced
1867:eb580660bbbb 1899:b3009adc0e2f
1 Index: ccache.1
2 ===================================================================
3 RCS file: /home/cvsroot/lars/ccache/ccache.1,v
4 retrieving revision 1.1.1.1.2.1
5 retrieving revision 1.6
6 diff -u -r1.1.1.1.2.1 -r1.6
7 --- ccache.1 21 Nov 2004 17:55:36 -0000 1.1.1.1.2.1
8 +++ ccache.1 21 Nov 2004 18:19:28 -0000 1.6
9 @@ -210,7 +210,8 @@
10 CCACHE_HARDLINK then ccache will attempt to use hard links from the
11 cache directory when creating the compiler output rather than using a
12 file copy\&. Using hard links is faster, but can confuse programs like
13 -\&'make\&' that rely on modification times\&.
14 +\&'make\&' that rely on modification times\&. Hard links are never made for
15 +compressed cache files\&.
16 .IP
17 .IP "\fBCCACHE_RECACHE\fP"
18 This forces ccache to not use any cached
19 @@ -257,6 +258,11 @@
20 the default\&. On HP-UX set this environment variable to "i" if you use
21 the aCC compiler\&.
22 .IP
23 +.IP "\fBCCACHE_NOCOMPRESS\fP"
24 +If you set the environment variable
25 +CCACHE_NOCOMPRESS then there is no compression used on files that go
26 +into the cache\&.
27 +.IP
28 .PP
29 .SH "CACHE SIZE MANAGEMENT"
30 .PP
31 @@ -269,6 +275,14 @@
32 below the numbers you specified in order to avoid doing the cache
33 clean operation too often\&.
34 .PP
35 +.SH "CACHE COMPRESSION"
36 +.PP
37 +By default ccache will compress all files it puts into the cache
38 +using the zlib compression\&. While this involves a negligible
39 +performance slowdown, it significantly increases the number of files
40 +that fit in the cache\&. You can turn off compression setting the
41 +CCACHE_NOCOMPRESS environment variable\&.
42 +.PP
43 .SH "HOW IT WORKS"
44 .PP
45 The basic idea is to detect when you are compiling exactly the same
46 Index: ccache.c
47 ===================================================================
48 RCS file: /home/cvsroot/lars/ccache/ccache.c,v
49 retrieving revision 1.1.1.1.2.1
50 retrieving revision 1.9
51 diff -u -r1.1.1.1.2.1 -r1.9
52 --- ccache.c 21 Nov 2004 17:55:36 -0000 1.1.1.1.2.1
53 +++ ccache.c 21 Nov 2004 18:19:28 -0000 1.9
54 @@ -199,7 +199,7 @@
55 fd = open(tmp_stderr, O_RDONLY | O_BINARY);
56 if (fd != -1) {
57 if (strcmp(output_file, "/dev/null") == 0 ||
58 - rename(tmp_hashname, output_file) == 0 || errno == ENOENT) {
59 + move_file(tmp_hashname, output_file) == 0 || errno == ENOENT) {
60 if (cpp_stderr) {
61 /* we might have some stderr from cpp */
62 int fd2 = open(cpp_stderr, O_RDONLY | O_BINARY);
63 @@ -231,14 +231,25 @@
64 x_asprintf(&path_stderr, "%s.stderr", hashname);
65
66 if (stat(tmp_stderr, &st1) != 0 ||
67 - stat(tmp_hashname, &st2) != 0 ||
68 - rename(tmp_hashname, hashname) != 0 ||
69 - rename(tmp_stderr, path_stderr) != 0) {
70 + stat(tmp_hashname, &st2) != 0 ||
71 + move_file(tmp_hashname, hashname) != 0 ||
72 + move_file(tmp_stderr, path_stderr) != 0) {
73 cc_log("failed to rename tmp files - %s\n", strerror(errno));
74 stats_update(STATS_ERROR);
75 failed();
76 }
77
78 +#if ENABLE_ZLIB
79 + /* do an extra stat on the cache files for
80 + the size statistics */
81 + if (stat(path_stderr, &st1) != 0 ||
82 + stat(hashname, &st2) != 0) {
83 + cc_log("failed to stat cache files - %s\n", strerror(errno));
84 + stats_update(STATS_ERROR);
85 + failed();
86 + }
87 +#endif
88 +
89 cc_log("Placed %s into cache\n", output_file);
90 stats_tocache(file_size(&st1) + file_size(&st2));
91
92 @@ -474,7 +485,13 @@
93 }
94
95 /* the user might be disabling cache hits */
96 +#ifndef ENABLE_ZLIB
97 + /* if the cache file is compressed we must recache */
98 + if ((first && getenv("CCACHE_RECACHE")) ||
99 + test_if_compressed(hashname) == 1) {
100 +#else
101 if (first && getenv("CCACHE_RECACHE")) {
102 +#endif
103 close(fd_stderr);
104 unlink(stderr_file);
105 free(stderr_file);
106 @@ -487,7 +504,9 @@
107 ret = 0;
108 } else {
109 unlink(output_file);
110 - if (getenv("CCACHE_HARDLINK")) {
111 + /* only make a hardlink if the cache file is uncompressed */
112 + if (getenv("CCACHE_HARDLINK") &&
113 + test_if_compressed(hashname) == 0) {
114 ret = link(hashname, output_file);
115 } else {
116 ret = copy_file(hashname, output_file);
117 Index: ccache.h
118 ===================================================================
119 RCS file: /home/cvsroot/lars/ccache/ccache.h,v
120 retrieving revision 1.1.1.1.2.1
121 retrieving revision 1.7
122 diff -u -r1.1.1.1.2.1 -r1.7
123 --- ccache.h 21 Nov 2004 17:55:36 -0000 1.1.1.1.2.1
124 +++ ccache.h 21 Nov 2004 18:19:28 -0000 1.7
125 @@ -23,6 +23,10 @@
126 #include <pwd.h>
127 #endif
128
129 +#ifdef ENABLE_ZLIB
130 +#include <zlib.h>
131 +#endif
132 +
133 #define STATUS_NOTFOUND 3
134 #define STATUS_FATAL 4
135 #define STATUS_NOCACHE 5
136 @@ -36,6 +40,13 @@
137 #define DEFAULT_MAXSIZE (1000*1000)
138 #endif
139
140 +/* file copy mode */
141 +#ifdef ENABLE_ZLIB
142 +#define COPY_UNCOMPRESSED 0
143 +#define COPY_FROM_CACHE 1
144 +#define COPY_TO_CACHE 2
145 +#endif
146 +
147 enum stats {
148 STATS_NONE=0,
149 STATS_STDOUT,
150 @@ -79,6 +90,8 @@
151
152 void copy_fd(int fd_in, int fd_out);
153 int copy_file(const char *src, const char *dest);
154 +int move_file(const char *src, const char *dest);
155 +int test_if_compressed(const char *filename);
156
157 int create_dir(const char *dir);
158 void x_asprintf(char **ptr, const char *format, ...);
159 Index: ccache.yo
160 ===================================================================
161 RCS file: /home/cvsroot/lars/ccache/ccache.yo,v
162 retrieving revision 1.1.1.1.2.1
163 retrieving revision 1.5
164 diff -u -r1.1.1.1.2.1 -r1.5
165 --- ccache.yo 21 Nov 2004 17:55:36 -0000 1.1.1.1.2.1
166 +++ ccache.yo 21 Nov 2004 18:19:28 -0000 1.5
167 @@ -169,6 +169,11 @@
168 this optimisation, in which case this option could allow ccache to be
169 used.
170
171 +dit(bf(CCACHE_NOCOMPRESS)) If you set the environment variable
172 +CCACHE_NOCOMPRESS then there is no compression used on files that go
173 +into the cache. However, this setting has no effect on how files are
174 +retrieved from the cache, compressed results will still be usable.
175 +
176 dit(bf(CCACHE_NOSTATS)) If you set the environment variable
177 CCACHE_NOSTATS then ccache will not update the statistics files on
178 each compile.
179 @@ -181,7 +186,8 @@
180 CCACHE_HARDLINK then ccache will attempt to use hard links from the
181 cache directory when creating the compiler output rather than using a
182 file copy. Using hard links is faster, but can confuse programs like
183 -'make' that rely on modification times.
184 +'make' that rely on modification times. Hard links are never made for
185 +compressed cache files.
186
187 dit(bf(CCACHE_RECACHE)) This forces ccache to not use any cached
188 results, even if it finds them. New results are still cached, but
189 @@ -236,6 +242,14 @@
190 below the numbers you specified in order to avoid doing the cache
191 clean operation too often.
192
193 +manpagesection(CACHE COMPRESSION)
194 +
195 +By default ccache will compress all files it puts into the cache
196 +using the zlib compression. While this involves a negligible
197 +performance slowdown, it significantly increases the number of files
198 +that fit in the cache. You can turn off compression setting the
199 +CCACHE_NOCOMPRESS environment variable.
200 +
201 manpagesection(HOW IT WORKS)
202
203 The basic idea is to detect when you are compiling exactly the same
204 @@ -294,6 +308,8 @@
205 cache. This tells the filesystem to inherit group ownership for new
206 directories. The command "chmod g+s `find $CCACHE_DIR -type d`" might
207 be useful for this.
208 + it() Set bf(CCACHE_NOCOMPRESS) for all users, if there are users with
209 + versions of ccache that do not support compression.
210 )
211
212 manpagesection(HISTORY)
213 Index: config.h.in
214 ===================================================================
215 RCS file: /home/cvsroot/lars/ccache/config.h.in,v
216 retrieving revision 1.1.1.1
217 retrieving revision 1.2
218 diff -u -r1.1.1.1 -r1.2
219 --- config.h.in 30 Apr 2004 13:13:41 -0000 1.1.1.1
220 +++ config.h.in 4 May 2004 20:49:26 -0000 1.2
221 @@ -98,3 +98,6 @@
222
223 /* Define _GNU_SOURCE so that we get all necessary prototypes */
224 #undef _GNU_SOURCE
225 +
226 +/* Define to 1 if you like to have zlib compression for the ccache. */
227 +#undef ENABLE_ZLIB
228 Index: configure
229 ===================================================================
230 RCS file: /home/cvsroot/lars/ccache/configure,v
231 retrieving revision 1.1.1.1.2.1
232 diff -u -r1.1.1.1.2.1 configure
233 --- configure 21 Nov 2004 17:55:36 -0000 1.1.1.1.2.1
234 +++ configure 21 Nov 2004 18:24:42 -0000
235 @@ -836,6 +836,11 @@
236
237 cat <<\_ACEOF
238
239 +Optional Features:
240 + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
241 + --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
242 + --enable-zlib enable zlib support for ccache compression
243 +
244 Some influential environment variables:
245 CC C compiler command
246 CFLAGS C compiler flags
247 @@ -936,7 +941,7 @@
248 else
249 echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
250 fi
251 - cd "$ac_popdir"
252 + cd $ac_popdir
253 done
254 fi
255
256 @@ -1859,7 +1864,8 @@
257 cat conftest.err >&5
258 echo "$as_me:$LINENO: \$? = $ac_status" >&5
259 (exit $ac_status); } &&
260 - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
261 + { ac_try='test -z "$ac_c_werror_flag"
262 + || test ! -s conftest.err'
263 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
264 (eval $ac_try) 2>&5
265 ac_status=$?
266 @@ -1917,7 +1923,8 @@
267 cat conftest.err >&5
268 echo "$as_me:$LINENO: \$? = $ac_status" >&5
269 (exit $ac_status); } &&
270 - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
271 + { ac_try='test -z "$ac_c_werror_flag"
272 + || test ! -s conftest.err'
273 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
274 (eval $ac_try) 2>&5
275 ac_status=$?
276 @@ -2033,7 +2040,8 @@
277 cat conftest.err >&5
278 echo "$as_me:$LINENO: \$? = $ac_status" >&5
279 (exit $ac_status); } &&
280 - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
281 + { ac_try='test -z "$ac_c_werror_flag"
282 + || test ! -s conftest.err'
283 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
284 (eval $ac_try) 2>&5
285 ac_status=$?
286 @@ -2087,7 +2095,8 @@
287 cat conftest.err >&5
288 echo "$as_me:$LINENO: \$? = $ac_status" >&5
289 (exit $ac_status); } &&
290 - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
291 + { ac_try='test -z "$ac_c_werror_flag"
292 + || test ! -s conftest.err'
293 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
294 (eval $ac_try) 2>&5
295 ac_status=$?
296 @@ -2132,7 +2141,8 @@
297 cat conftest.err >&5
298 echo "$as_me:$LINENO: \$? = $ac_status" >&5
299 (exit $ac_status); } &&
300 - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
301 + { ac_try='test -z "$ac_c_werror_flag"
302 + || test ! -s conftest.err'
303 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
304 (eval $ac_try) 2>&5
305 ac_status=$?
306 @@ -2176,7 +2186,8 @@
307 cat conftest.err >&5
308 echo "$as_me:$LINENO: \$? = $ac_status" >&5
309 (exit $ac_status); } &&
310 - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
311 + { ac_try='test -z "$ac_c_werror_flag"
312 + || test ! -s conftest.err'
313 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
314 (eval $ac_try) 2>&5
315 ac_status=$?
316 @@ -2609,7 +2620,8 @@
317 cat conftest.err >&5
318 echo "$as_me:$LINENO: \$? = $ac_status" >&5
319 (exit $ac_status); } &&
320 - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
321 + { ac_try='test -z "$ac_c_werror_flag"
322 + || test ! -s conftest.err'
323 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
324 (eval $ac_try) 2>&5
325 ac_status=$?
326 @@ -2681,7 +2693,8 @@
327 cat conftest.err >&5
328 echo "$as_me:$LINENO: \$? = $ac_status" >&5
329 (exit $ac_status); } &&
330 - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
331 + { ac_try='test -z "$ac_c_werror_flag"
332 + || test ! -s conftest.err'
333 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
334 (eval $ac_try) 2>&5
335 ac_status=$?
336 @@ -2735,7 +2748,8 @@
337 cat conftest.err >&5
338 echo "$as_me:$LINENO: \$? = $ac_status" >&5
339 (exit $ac_status); } &&
340 - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
341 + { ac_try='test -z "$ac_c_werror_flag"
342 + || test ! -s conftest.err'
343 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
344 (eval $ac_try) 2>&5
345 ac_status=$?
346 @@ -2806,7 +2820,8 @@
347 cat conftest.err >&5
348 echo "$as_me:$LINENO: \$? = $ac_status" >&5
349 (exit $ac_status); } &&
350 - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
351 + { ac_try='test -z "$ac_c_werror_flag"
352 + || test ! -s conftest.err'
353 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
354 (eval $ac_try) 2>&5
355 ac_status=$?
356 @@ -2860,7 +2875,8 @@
357 cat conftest.err >&5
358 echo "$as_me:$LINENO: \$? = $ac_status" >&5
359 (exit $ac_status); } &&
360 - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
361 + { ac_try='test -z "$ac_c_werror_flag"
362 + || test ! -s conftest.err'
363 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
364 (eval $ac_try) 2>&5
365 ac_status=$?
366 @@ -2927,7 +2943,8 @@
367 cat conftest.err >&5
368 echo "$as_me:$LINENO: \$? = $ac_status" >&5
369 (exit $ac_status); } &&
370 - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
371 + { ac_try='test -z "$ac_c_werror_flag"
372 + || test ! -s conftest.err'
373 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
374 (eval $ac_try) 2>&5
375 ac_status=$?
376 @@ -2997,7 +3014,8 @@
377 cat conftest.err >&5
378 echo "$as_me:$LINENO: \$? = $ac_status" >&5
379 (exit $ac_status); } &&
380 - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
381 + { ac_try='test -z "$ac_c_werror_flag"
382 + || test ! -s conftest.err'
383 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
384 (eval $ac_try) 2>&5
385 ac_status=$?
386 @@ -3078,7 +3096,8 @@
387 cat conftest.err >&5
388 echo "$as_me:$LINENO: \$? = $ac_status" >&5
389 (exit $ac_status); } &&
390 - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
391 + { ac_try='test -z "$ac_c_werror_flag"
392 + || test ! -s conftest.err'
393 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
394 (eval $ac_try) 2>&5
395 ac_status=$?
396 @@ -3248,7 +3267,8 @@
397 cat conftest.err >&5
398 echo "$as_me:$LINENO: \$? = $ac_status" >&5
399 (exit $ac_status); } &&
400 - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
401 + { ac_try='test -z "$ac_c_werror_flag"
402 + || test ! -s conftest.err'
403 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
404 (eval $ac_try) 2>&5
405 ac_status=$?
406 @@ -3319,7 +3339,8 @@
407 cat conftest.err >&5
408 echo "$as_me:$LINENO: \$? = $ac_status" >&5
409 (exit $ac_status); } &&
410 - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
411 + { ac_try='test -z "$ac_c_werror_flag"
412 + || test ! -s conftest.err'
413 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
414 (eval $ac_try) 2>&5
415 ac_status=$?
416 @@ -3509,7 +3530,8 @@
417 cat conftest.err >&5
418 echo "$as_me:$LINENO: \$? = $ac_status" >&5
419 (exit $ac_status); } &&
420 - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
421 + { ac_try='test -z "$ac_c_werror_flag"
422 + || test ! -s conftest.err'
423 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
424 (eval $ac_try) 2>&5
425 ac_status=$?
426 @@ -3611,7 +3633,8 @@
427 cat conftest.err >&5
428 echo "$as_me:$LINENO: \$? = $ac_status" >&5
429 (exit $ac_status); } &&
430 - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
431 + { ac_try='test -z "$ac_c_werror_flag"
432 + || test ! -s conftest.err'
433 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
434 (eval $ac_try) 2>&5
435 ac_status=$?
436 @@ -3676,7 +3699,8 @@
437 cat conftest.err >&5
438 echo "$as_me:$LINENO: \$? = $ac_status" >&5
439 (exit $ac_status); } &&
440 - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
441 + { ac_try='test -z "$ac_c_werror_flag"
442 + || test ! -s conftest.err'
443 { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
444 (eval $ac_try) 2>&5
445 ac_status=$?
446 @@ -3775,6 +3799,229 @@
447
448 fi
449
450 +# Check whether --enable-zlib or --disable-zlib was given.
451 +if test "${enable_zlib+set}" = set; then
452 + enableval="$enable_zlib"
453 +
454 +else
455 + enable_zlib=yes
456 +fi;
457 +
458 +if test x"$enable_zlib" = x"yes"; then
459 + if test "${ac_cv_header_zlib_h+set}" = set; then
460 + echo "$as_me:$LINENO: checking for zlib.h" >&5
461 +echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6
462 +if test "${ac_cv_header_zlib_h+set}" = set; then
463 + echo $ECHO_N "(cached) $ECHO_C" >&6
464 +fi
465 +echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5
466 +echo "${ECHO_T}$ac_cv_header_zlib_h" >&6
467 +else
468 + # Is the header compilable?
469 +echo "$as_me:$LINENO: checking zlib.h usability" >&5
470 +echo $ECHO_N "checking zlib.h usability... $ECHO_C" >&6
471 +cat >conftest.$ac_ext <<_ACEOF
472 +/* confdefs.h. */
473 +_ACEOF
474 +cat confdefs.h >>conftest.$ac_ext
475 +cat >>conftest.$ac_ext <<_ACEOF
476 +/* end confdefs.h. */
477 +$ac_includes_default
478 +#include <zlib.h>
479 +_ACEOF
480 +rm -f conftest.$ac_objext
481 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
482 + (eval $ac_compile) 2>conftest.er1
483 + ac_status=$?
484 + grep -v '^ *+' conftest.er1 >conftest.err
485 + rm -f conftest.er1
486 + cat conftest.err >&5
487 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
488 + (exit $ac_status); } &&
489 + { ac_try='test -z "$ac_c_werror_flag"
490 + || test ! -s conftest.err'
491 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
492 + (eval $ac_try) 2>&5
493 + ac_status=$?
494 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
495 + (exit $ac_status); }; } &&
496 + { ac_try='test -s conftest.$ac_objext'
497 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
498 + (eval $ac_try) 2>&5
499 + ac_status=$?
500 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
501 + (exit $ac_status); }; }; then
502 + ac_header_compiler=yes
503 +else
504 + echo "$as_me: failed program was:" >&5
505 +sed 's/^/| /' conftest.$ac_ext >&5
506 +
507 +ac_header_compiler=no
508 +fi
509 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
510 +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
511 +echo "${ECHO_T}$ac_header_compiler" >&6
512 +
513 +# Is the header present?
514 +echo "$as_me:$LINENO: checking zlib.h presence" >&5
515 +echo $ECHO_N "checking zlib.h presence... $ECHO_C" >&6
516 +cat >conftest.$ac_ext <<_ACEOF
517 +/* confdefs.h. */
518 +_ACEOF
519 +cat confdefs.h >>conftest.$ac_ext
520 +cat >>conftest.$ac_ext <<_ACEOF
521 +/* end confdefs.h. */
522 +#include <zlib.h>
523 +_ACEOF
524 +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
525 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
526 + ac_status=$?
527 + grep -v '^ *+' conftest.er1 >conftest.err
528 + rm -f conftest.er1
529 + cat conftest.err >&5
530 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
531 + (exit $ac_status); } >/dev/null; then
532 + if test -s conftest.err; then
533 + ac_cpp_err=$ac_c_preproc_warn_flag
534 + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
535 + else
536 + ac_cpp_err=
537 + fi
538 +else
539 + ac_cpp_err=yes
540 +fi
541 +if test -z "$ac_cpp_err"; then
542 + ac_header_preproc=yes
543 +else
544 + echo "$as_me: failed program was:" >&5
545 +sed 's/^/| /' conftest.$ac_ext >&5
546 +
547 + ac_header_preproc=no
548 +fi
549 +rm -f conftest.err conftest.$ac_ext
550 +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
551 +echo "${ECHO_T}$ac_header_preproc" >&6
552 +
553 +# So? What about this header?
554 +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
555 + yes:no: )
556 + { echo "$as_me:$LINENO: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&5
557 +echo "$as_me: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
558 + { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the compiler's result" >&5
559 +echo "$as_me: WARNING: zlib.h: proceeding with the compiler's result" >&2;}
560 + ac_header_preproc=yes
561 + ;;
562 + no:yes:* )
563 + { echo "$as_me:$LINENO: WARNING: zlib.h: present but cannot be compiled" >&5
564 +echo "$as_me: WARNING: zlib.h: present but cannot be compiled" >&2;}
565 + { echo "$as_me:$LINENO: WARNING: zlib.h: check for missing prerequisite headers?" >&5
566 +echo "$as_me: WARNING: zlib.h: check for missing prerequisite headers?" >&2;}
567 + { echo "$as_me:$LINENO: WARNING: zlib.h: see the Autoconf documentation" >&5
568 +echo "$as_me: WARNING: zlib.h: see the Autoconf documentation" >&2;}
569 + { echo "$as_me:$LINENO: WARNING: zlib.h: section \"Present But Cannot Be Compiled\"" >&5
570 +echo "$as_me: WARNING: zlib.h: section \"Present But Cannot Be Compiled\"" >&2;}
571 + { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the preprocessor's result" >&5
572 +echo "$as_me: WARNING: zlib.h: proceeding with the preprocessor's result" >&2;}
573 + { echo "$as_me:$LINENO: WARNING: zlib.h: in the future, the compiler will take precedence" >&5
574 +echo "$as_me: WARNING: zlib.h: in the future, the compiler will take precedence" >&2;}
575 + (
576 + cat <<\_ASBOX
577 +## ------------------------------------------ ##
578 +## Report this to the AC_PACKAGE_NAME lists. ##
579 +## ------------------------------------------ ##
580 +_ASBOX
581 + ) |
582 + sed "s/^/$as_me: WARNING: /" >&2
583 + ;;
584 +esac
585 +echo "$as_me:$LINENO: checking for zlib.h" >&5
586 +echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6
587 +if test "${ac_cv_header_zlib_h+set}" = set; then
588 + echo $ECHO_N "(cached) $ECHO_C" >&6
589 +else
590 + ac_cv_header_zlib_h=$ac_header_preproc
591 +fi
592 +echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5
593 +echo "${ECHO_T}$ac_cv_header_zlib_h" >&6
594 +
595 +fi
596 +if test $ac_cv_header_zlib_h = yes; then
597 + echo "$as_me:$LINENO: checking for gzdopen in -lz" >&5
598 +echo $ECHO_N "checking for gzdopen in -lz... $ECHO_C" >&6
599 +if test "${ac_cv_lib_z_gzdopen+set}" = set; then
600 + echo $ECHO_N "(cached) $ECHO_C" >&6
601 +else
602 + ac_check_lib_save_LIBS=$LIBS
603 +LIBS="-lz $LIBS"
604 +cat >conftest.$ac_ext <<_ACEOF
605 +/* confdefs.h. */
606 +_ACEOF
607 +cat confdefs.h >>conftest.$ac_ext
608 +cat >>conftest.$ac_ext <<_ACEOF
609 +/* end confdefs.h. */
610 +
611 +/* Override any gcc2 internal prototype to avoid an error. */
612 +#ifdef __cplusplus
613 +extern "C"
614 +#endif
615 +/* We use char because int might match the return type of a gcc2
616 + builtin and then its argument prototype would still apply. */
617 +char gzdopen ();
618 +int
619 +main ()
620 +{
621 +gzdopen ();
622 + ;
623 + return 0;
624 +}
625 +_ACEOF
626 +rm -f conftest.$ac_objext conftest$ac_exeext
627 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
628 + (eval $ac_link) 2>conftest.er1
629 + ac_status=$?
630 + grep -v '^ *+' conftest.er1 >conftest.err
631 + rm -f conftest.er1
632 + cat conftest.err >&5
633 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
634 + (exit $ac_status); } &&
635 + { ac_try='test -z "$ac_c_werror_flag"
636 + || test ! -s conftest.err'
637 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
638 + (eval $ac_try) 2>&5
639 + ac_status=$?
640 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
641 + (exit $ac_status); }; } &&
642 + { ac_try='test -s conftest$ac_exeext'
643 + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
644 + (eval $ac_try) 2>&5
645 + ac_status=$?
646 + echo "$as_me:$LINENO: \$? = $ac_status" >&5
647 + (exit $ac_status); }; }; then
648 + ac_cv_lib_z_gzdopen=yes
649 +else
650 + echo "$as_me: failed program was:" >&5
651 +sed 's/^/| /' conftest.$ac_ext >&5
652 +
653 +ac_cv_lib_z_gzdopen=no
654 +fi
655 +rm -f conftest.err conftest.$ac_objext \
656 + conftest$ac_exeext conftest.$ac_ext
657 +LIBS=$ac_check_lib_save_LIBS
658 +fi
659 +echo "$as_me:$LINENO: result: $ac_cv_lib_z_gzdopen" >&5
660 +echo "${ECHO_T}$ac_cv_lib_z_gzdopen" >&6
661 +if test $ac_cv_lib_z_gzdopen = yes; then
662 + LIBS="-lz $LIBS"; cat >>confdefs.h <<\_ACEOF
663 +#define ENABLE_ZLIB 1
664 +_ACEOF
665 +
666 +fi
667 +
668 +fi
669 +
670 +
671 +fi
672 +
673 ac_config_files="$ac_config_files Makefile"
674
675 cat >confcache <<\_ACEOF
676 @@ -4568,6 +4815,11 @@
677 *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
678 esac
679
680 + if test x"$ac_file" != x-; then
681 + { echo "$as_me:$LINENO: creating $ac_file" >&5
682 +echo "$as_me: creating $ac_file" >&6;}
683 + rm -f "$ac_file"
684 + fi
685 # Let's still pretend it is `configure' which instantiates (i.e., don't
686 # use $as_me), people would be surprised to read:
687 # /* config.h. Generated by config.status. */
688 @@ -4606,12 +4858,6 @@
689 fi;;
690 esac
691 done` || { (exit 1); exit 1; }
692 -
693 - if test x"$ac_file" != x-; then
694 - { echo "$as_me:$LINENO: creating $ac_file" >&5
695 -echo "$as_me: creating $ac_file" >&6;}
696 - rm -f "$ac_file"
697 - fi
698 _ACEOF
699 cat >>$CONFIG_STATUS <<_ACEOF
700 sed "$ac_vpsub
701 Index: configure.in
702 ===================================================================
703 RCS file: /home/cvsroot/lars/ccache/configure.in,v
704 retrieving revision 1.1.1.1.2.1
705 retrieving revision 1.4
706 diff -u -r1.1.1.1.2.1 -r1.4
707 --- configure.in 21 Nov 2004 17:55:36 -0000 1.1.1.1.2.1
708 +++ configure.in 21 Nov 2004 18:19:28 -0000 1.4
709 @@ -68,5 +68,14 @@
710 AC_DEFINE(HAVE_C99_VSNPRINTF, 1, [ ])
711 fi
712
713 +dnl Check for zlib.
714 +AC_ARG_ENABLE([zlib],
715 + AS_HELP_STRING([--enable-zlib], [enable zlib support for ccache compression]),,
716 + [enable_zlib=yes])
717 +
718 +if test x"$enable_zlib" = x"yes"; then
719 + AC_CHECK_HEADER(zlib.h, AC_CHECK_LIB(z, gzdopen, LIBS="-lz $LIBS"; AC_DEFINE(ENABLE_ZLIB)))
720 +fi
721 +
722 AC_CONFIG_FILES([Makefile])
723 AC_OUTPUT
724 Index: util.c
725 ===================================================================
726 RCS file: /home/cvsroot/lars/ccache/util.c,v
727 retrieving revision 1.1.1.1.2.1
728 retrieving revision 1.11
729 diff -u -r1.1.1.1.2.1 -r1.11
730 --- util.c 21 Nov 2004 17:55:36 -0000 1.1.1.1.2.1
731 +++ util.c 21 Nov 2004 18:19:28 -0000 1.11
732 @@ -44,6 +44,7 @@
733 exit(1);
734 }
735
736 +#ifndef ENABLE_ZLIB
737 /* copy all data from one file descriptor to another */
738 void copy_fd(int fd_in, int fd_out)
739 {
740 @@ -57,6 +58,11 @@
741 }
742 }
743
744 +/* move a file using rename */
745 +int move_file(const char *src, const char *dest) {
746 + return rename(src, dest);
747 +}
748 +
749 /* copy a file - used when hard links don't work
750 the copy is done via a temporary file and atomic rename
751 */
752 @@ -120,6 +126,174 @@
753 return 0;
754 }
755
756 +#else /* ENABLE_ZLIB */
757 +
758 +/* copy all data from one file descriptor to another
759 + possibly decompressing it
760 +*/
761 +void copy_fd(int fd_in, int fd_out) {
762 + char buf[10240];
763 + int n;
764 + gzFile gz_in;
765 +
766 + gz_in = gzdopen(dup(fd_in), "rb");
767 +
768 + if (!gz_in) {
769 + fatal("Failed to copy fd");
770 + }
771 +
772 + while ((n = gzread(gz_in, buf, sizeof(buf))) > 0) {
773 + if (write(fd_out, buf, n) != n) {
774 + fatal("Failed to copy fd");
775 + }
776 + }
777 +}
778 +
779 +static int _copy_file(const char *src, const char *dest, int mode) {
780 + int fd_in, fd_out;
781 + gzFile gz_in, gz_out = NULL;
782 + char buf[10240];
783 + int n, ret;
784 + char *tmp_name;
785 + mode_t mask;
786 + struct stat st;
787 +
788 + x_asprintf(&tmp_name, "%s.XXXXXX", dest);
789 +
790 + if (getenv("CCACHE_NOCOMPRESS")) {
791 + mode = COPY_UNCOMPRESSED;
792 + }
793 +
794 + /* open source file */
795 + fd_in = open(src, O_RDONLY);
796 + if (fd_in == -1) {
797 + return -1;
798 + }
799 +
800 + gz_in = gzdopen(fd_in, "rb");
801 + if (!gz_in) {
802 + close(fd_in);
803 + return -1;
804 + }
805 +
806 + /* open destination file */
807 + fd_out = mkstemp(tmp_name);
808 + if (fd_out == -1) {
809 + gzclose(gz_in);
810 + free(tmp_name);
811 + return -1;
812 + }
813 +
814 + if (mode == COPY_TO_CACHE) {
815 + /* The gzip file format occupies at least 20 bytes. So
816 + it will always occupy an entire filesystem block,
817 + even for empty files.
818 + Since most stderr files will be empty, we turn off
819 + compression in this case to save space.
820 + */
821 + if (fstat(fd_in, &st) != 0) {
822 + gzclose(gz_in);
823 + close(fd_out);
824 + free(tmp_name);
825 + return -1;
826 + }
827 + if (file_size(&st) == 0) {
828 + mode = COPY_UNCOMPRESSED;
829 + }
830 + }
831 +
832 + if (mode == COPY_TO_CACHE) {
833 + gz_out = gzdopen(dup(fd_out), "wb");
834 + if (!gz_out) {
835 + gzclose(gz_in);
836 + close(fd_out);
837 + free(tmp_name);
838 + return -1;
839 + }
840 + }
841 +
842 + while ((n = gzread(gz_in, buf, sizeof(buf))) > 0) {
843 + if (mode == COPY_TO_CACHE) {
844 + ret = gzwrite(gz_out, buf, n);
845 + } else {
846 + ret = write(fd_out, buf, n);
847 + }
848 + if (ret != n) {
849 + gzclose(gz_in);
850 + if (gz_out) {
851 + gzclose(gz_out);
852 + }
853 + close(fd_out);
854 + unlink(tmp_name);
855 + free(tmp_name);
856 + return -1;
857 + }
858 + }
859 +
860 + gzclose(gz_in);
861 + if (gz_out) {
862 + gzclose(gz_out);
863 + }
864 +
865 + /* get perms right on the tmp file */
866 + mask = umask(0);
867 + fchmod(fd_out, 0666 & ~mask);
868 + umask(mask);
869 +
870 + /* the close can fail on NFS if out of space */
871 + if (close(fd_out) == -1) {
872 + unlink(tmp_name);
873 + free(tmp_name);
874 + return -1;
875 + }
876 +
877 + unlink(dest);
878 +
879 + if (rename(tmp_name, dest) == -1) {
880 + unlink(tmp_name);
881 + free(tmp_name);
882 + return -1;
883 + }
884 +
885 + free(tmp_name);
886 +
887 + return 0;
888 +}
889 +
890 +/* move a file to the cache, compressing it */
891 +int move_file(const char *src, const char *dest) {
892 + int ret;
893 +
894 + ret = _copy_file(src, dest, COPY_TO_CACHE);
895 + if (ret != -1) unlink(src);
896 + return ret;
897 +}
898 +
899 +/* copy a file from the cache, decompressing it */
900 +int copy_file(const char *src, const char *dest) {
901 + return _copy_file(src, dest, COPY_FROM_CACHE);
902 +}
903 +#endif /* ENABLE_ZLIB */
904 +
905 +/* test if a file is zlib compressed */
906 +int test_if_compressed(const char *filename) {
907 + FILE *f;
908 +
909 + f = fopen(filename, "rb");
910 + if (!f) {
911 + return 0;
912 + }
913 +
914 + /* test if file starts with 1F8B, which is zlib's
915 + * magic number */
916 + if ((fgetc(f) != 0x1f) || (fgetc(f) != 0x8b)) {
917 + fclose(f);
918 + return 0;
919 + }
920 +
921 + fclose(f);
922 + return 1;
923 +}
924
925 /* make sure a directory exists */
926 int create_dir(const char *dir)
927 Index: manage-cache.sh
928 ===================================================================
929 RCS file: manage-cache.sh
930 diff -N manage-cache.sh
931 --- manage-cache.sh 1 Jan 1970 00:00:00 -0000
932 +++ manage-cache.sh-cache.sh 12 May 2004 19:22:20 -0000 1.1
933 @@ -0,0 +1,68 @@
934 +#!/bin/bash
935 +#
936 +# 2004-05-12 lars@gustaebel.de
937 +
938 +CCACHE_DIR=${CCACHE_DIR:-$HOME/.ccache}
939 +
940 +echo "Do you want to compress or decompress the ccache in $CCACHE_DIR?"
941 +read -p "Type c or d: " mode
942 +
943 +if [ "$mode" != "c" ] && [ "$mode" != "d" ]
944 +then
945 + exit 1
946 +fi
947 +
948 +is_compressed() {
949 + test "$(head -c 2 $1)" = $'\x1f\x8b'
950 + return $?
951 +}
952 +
953 +tmpfile=$(mktemp)
954 +
955 +for dir in 0 1 2 3 4 5 6 7 8 9 a b c d e f
956 +do
957 + # process ccache subdir
958 + echo -n "$dir "
959 +
960 + # find cache files
961 + find $CCACHE_DIR/$dir -type f -name '*-*' |
962 + sort > $tmpfile
963 +
964 + oldsize=$(cat $CCACHE_DIR/$dir/stats | cut -d ' ' -f 13)
965 + newsize=0
966 +
967 + while read file
968 + do
969 + # empty files will be ignored since compressing
970 + # them makes them bigger
971 + test $(stat -c %s $file) -eq 0 && continue
972 +
973 + if [ $mode = c ]
974 + then
975 + if ! is_compressed $file
976 + then
977 + gzip $file
978 + mv $file.gz $file
979 + fi
980 + else
981 + if is_compressed $file
982 + then
983 + mv $file $file.gz
984 + gzip -d $file.gz
985 + fi
986 + fi
987 +
988 + # calculate new size statistic for this subdir
989 + let newsize=$newsize+$(stat -c "%B*%b" $file)/1024
990 + done < $tmpfile
991 +
992 + # update statistic file
993 + read -a numbers < $CCACHE_DIR/$dir/stats
994 + numbers[12]=$newsize
995 + echo "${numbers[*]} " > $CCACHE_DIR/$dir/stats
996 +done
997 +echo
998 +
999 +# clean up
1000 +rm $tmpfile
1001 +
1002 Index: Makefile.in
1003 ===================================================================
1004 RCS file: /home/cvsroot/lars/ccache/Makefile.in,v
1005 retrieving revision 1.1.1.1.2.1
1006 retrieving revision 1.12
1007 diff -u -r1.1.1.1.2.1 -r1.12
1008 --- Makefile.in 21 Nov 2004 17:55:36 -0000 1.1.1.1.2.1
1009 +++ Makefile.in 21 Nov 2004 18:19:28 -0000 1.12
1010 @@ -11,6 +11,7 @@
1011 CFLAGS=@CFLAGS@ -I.
1012 EXEEXT=@EXEEXT@
1013
1014 +LIBS= @LIBS@
1015 OBJS= ccache.o mdfour.o hash.o execute.o util.o args.o stats.o \
1016 cleanup.o snprintf.o unify.o
1017 HEADERS = ccache.h mdfour.h
1018 @@ -20,7 +21,7 @@
1019 docs: ccache.1 web/ccache-man.html
1020
1021 ccache$(EXEEXT): $(OBJS) $(HEADERS)
1022 - $(CC) $(CFLAGS) -o $@ $(OBJS)
1023 + $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS)
1024
1025 ccache.1: ccache.yo
1026 -yodl2man -o ccache.1 ccache.yo