From: Joel Rosdahl Date: Sat, 7 Mar 2015 15:26:39 +0000 (+0100) Subject: Merge branch '3.1-maint' into 3.2-maint X-Git-Tag: v3.2.2~27 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7f89aa92da768434429fa012c3f89dffd71b4f50;p=thirdparty%2Fccache.git Merge branch '3.1-maint' into 3.2-maint * 3.1-maint: Prepare for v3.1.11 Update NEWS.txt Tweak copyright years Fix comment scanning bug in hash_source_code_string Conflicts: NEWS.txt dev.mk.in hashutil.c test.sh test/test_hashutil.c --- 7f89aa92da768434429fa012c3f89dffd71b4f50 diff --cc NEWS.txt index 26fb76573,849a10f11..73d84eca3 --- a/NEWS.txt +++ b/NEWS.txt @@@ -2,154 -2,26 +2,176 @@@ ccache new =========== +Unreleased +---------- + +Bug fixes +~~~~~~~~~ + +- Made hash of cached result created with and without `CCACHE_CPP2` different. + This makes it possible to rebuild with `CCACHE_CPP2` set without having to + clear the cache to get new results. + +- Fixed a bug where ccache deleted clang diagnostics after compiler failures. + + +ccache 3.2.1 +------------ +Release date: 2014-12-10 + + +Bug fixes +~~~~~~~~~ + +- Fixed regression in temporary file handling, which lead to incorrect + permissions for stats, manifest and ccache.conf files in the cache. + +- `CACHEDIR.TAG` files are now created in the [0-9a-f] subdirectories so that + ccache.conf is not lost in backups. + +- Made the default cache size suffix `G`, as previously documented. + +- `-fdiagnostics-color=auto` is now passed to the compiler even if stderr is + redirected. This fixes a problem when, for instance, a configure test probes + if the compiler (wrapped via ccache) supports `-fdiagnostics-color=auto`. + +- Added missing documentation for `max_files` and `max_size` configuration + options. + + +ccache 3.2 +---------- +Release date: 2014-11-17 + + +New features and improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Added support for configuring ccache via one or several configuration files + instead of via environment variables. Environment variables still have + priority but are no longer the recommended way of customizing ccache + behavior. See the manual for more information. + +- Added support for compiler error/warning messages with color. + +- Made creation of temporary directories and cache directories smarter to avoid + unnecessary `stat` calls. + +- Improved efficiency of the algorithm that scans for `__DATE_` and `__TIME__` + tokens in the hashed source code. + +- Added support for several binaries (separated by space) in `CCACHE_PREFIX`. + +- The `-c` option is no longer passed to the preprocessor. This fixes problems + with clang and Solaris's C++ compiler. + +- ccache no longer passes preprocessor options like `-D` and `-I` to the + compiler when compiling preprocessed output. This fixes warnings emitted by + clang. + +- Compiler options `-fprofile-generate`, `-fprofile-arcs`, `-fprofile-use` and + `-fbranch-probabilities` are now handled without bailing. + +- Added support for clang's `--serialize-diagnostic` option, storing the + diagnostic file (`.dia`) in the cache. + +- Added support for precompiled headers when using clang. + +- Added support for clang `.pth` (pretokenized header) files. + +- Changed the `-x` language option to use the new objective C standard for GCC + and clang. + +- On a cache miss, ccache now instructs the compiler to create the object file + at the real destination and then copies the file into the cache instead of + the other way around. This is needed to support compiler options like + `-fprofile-arcs` and `--serialize-diagnostics`. + +- ccache now checks that included files' ctimes aren't too new. This check can + be turned off by adding `include_file_ctime` to the ``ccache sloppiness'' + setting. + +- Added possibility to get cache hits based on filename, size, mtime and ctime + only. On other words, source code files are not even read, only stat-ed. This + operation mode is opt-in by adding `file_stat_matches` to the ``ccache + sloppiness'' setting. + +- The filename part of options like `-Wp,-MDfilename` is no longer included in + the hash since the filename doesn't have any bearing on the result. + +- Added a ``read-only direct'' configuration setting, which is like the + ordinary read-only setting except that ccache will only try to retrieve + results from the cache using the direct mode, not the preprocessor mode. + +- The display and interpretation of cache size has been changed to use SI + units. + +- Default cache size is now 5 GB (was previously 1 GiB). + +- Added configuration option to set the compression level of compressed object + files in the cache. + +- Added support for `@file` and `-@file` arguments (reading options from a + file). + +- `-Wl,` options are no longer included in the hash since they don't affect + compilation. + +- Bail out on too hard compiler option `-Wp,-P`. + +- Optimized MD4 calculation code on little-endian systems. + +- Various improvements and fixes on win32. + +- Improved logging to the ccache log file. + +- Added `--dump-manifest` command-line option for debugging purposes. + +- Added `--with-bundled-zlib` configure option. + +- Upgraded bundled zlib to version 1.2.8. + +- Improved `dev.mk` to be more platform independent. + +- Made the test suite work with clang and gcc-llvm on OS X. + +- Various other improvements of the test suite. + + +Bug fixes +~~~~~~~~~ + +- Any previous `.stderr` is now removed from the cache when recaching. + +- Fixed an issue when handling the `-arch` compiler option with an argument. + +- Fixed race condition when creating the initial cache directory. + +- Fixed test suite failures when `CC` is a ccache-wrapped compiler. + + + ccache 3.1.11 + ------------- + Release date: 2015-03-07 + + + Bug fixes + ~~~~~~~~~ + + - Fixed bug which could result in false cache hits when source code contains + `'"'` followed by `" /*"` or `" //"` (with variations). + + - Made hash of cached result created with and without `CCACHE_CPP2` different. + This makes it possible to rebuild with `CCACHE_CPP2` set without having to + clear the cache to get new results. + + - Don't try to reset a non-existing stats file. This avoids ``No such file or + directory'' messages in the ccache log when the cache directory doesn't + exist. + ++- Fixed a bug where ccache deleted clang diagnostics after compiler failures. ++ + ccache 3.1.10 ------------- Release date: 2014-10-19 diff --cc test.sh index cfeb97aba,5efbca4f7..a865c4991 --- a/test.sh +++ b/test.sh @@@ -1375,42 -1171,22 +1375,59 @@@ EO checkstat 'cache hit (preprocessed)' 0 checkstat 'cache miss' 2 + testname="comment in strings" + $CCACHE -Cz >/dev/null + echo 'char *comment = " /* \\\\u" "foo" " */";' >comment.c + $CCACHE $COMPILER -c comment.c + checkstat 'cache hit (direct)' 0 + checkstat 'cache hit (preprocessed)' 0 + checkstat 'cache miss' 1 + $CCACHE $COMPILER -c comment.c + checkstat 'cache hit (direct)' 1 + checkstat 'cache hit (preprocessed)' 0 + checkstat 'cache miss' 1 + echo 'char *comment = " /* \\\\u" "goo" " */";' >comment.c + $CCACHE $COMPILER -c comment.c + checkstat 'cache hit (direct)' 1 + checkstat 'cache hit (preprocessed)' 0 + checkstat 'cache miss' 2 ++ + ################################################################# + # Check that strange "#line" directives are handled. + testname="#line directives with troublesome files" + $CCACHE -Cz >/dev/null + cat <strange.c +int foo; +EOF + for x in stdout tty sda hda; do + if [ -b /dev/$x ] || [ -c /dev/$x ]; then + echo "#line 1 \"/dev/$x\"" >> strange.c + fi + done + CCACHE_SLOPPINESS="$default_sloppiness include_file_mtime" $CCACHE $COMPILER -c strange.c + manifest=`find $CCACHE_DIR -name '*.manifest'` + if [ -n "$manifest" ]; then + data="`$CCACHE --dump-manifest $manifest | egrep '/dev/(stdout|tty|sda|hda'`" + if [ -n "$data" ]; then + test_failed "$manifest contained troublesome file(s): $data" + fi + fi + + ################################################################## + # Test --dump-manifest output. + testname="--dump-manifest" + $CCACHE -Cz >/dev/null + $CCACHE $COMPILER test.c -c -o test.o + manifest=`find $CCACHE_DIR -name '*.manifest'` + $CCACHE --dump-manifest $manifest >manifest.dump + + if grep 'Hash: e6b009695d072974f2c4d1dd7e7ed4fc' manifest.dump >/dev/null 2>&1 && \ + grep 'Hash: e94ceb9f1b196c387d098a5f1f4fe862' manifest.dump >/dev/null 2>&1 && \ + grep 'Hash: c2f5392dbc7e8ff6138d01608445240a' manifest.dump >/dev/null 2>&1; then + : OK + else + test_failed "unexpected output of --dump-manifest" + fi } basedir_suite() {