]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
Skip “Directory is not hashed if using -gz[=zlib]” tests for GCC 6
authorJoel Rosdahl <joel@rosdahl.net>
Sun, 5 Jul 2020 18:34:54 +0000 (20:34 +0200)
committerJoel Rosdahl <joel@rosdahl.net>
Mon, 6 Jul 2020 07:27:14 +0000 (09:27 +0200)
The GCC 6 (tested with GCC 6.3) preprocessor includes the current
working directory in the preprocessed output if run with -gz, which
means that there won’t be cache hits between directories, thus failing
the “Directory is not hashed if using -gz[=zlib]” tests. Fix this by
skipping the test if the preprocessor behaves that way.

Fixes #602.

(cherry picked from commit 8b58982dc099a5ea2bbd8abc7803a9f5a3b1148d)

test/suites/base.bash

index 7a864e9409859ffe0de30884e3a2931ea33b0009..bd5bbcbc4568f5564bbddea5dea3b053806051e5 100644 (file)
@@ -373,7 +373,8 @@ base_tests() {
     # -------------------------------------------------------------------------
     TEST "Directory is not hashed if using -gz"
 
-    if $REAL_COMPILER -c test1.c -gz -o /dev/null 2>/dev/null; then
+    $REAL_COMPILER -E test1.c -gz >preprocessed.i 2>/dev/null
+    if [ -s preprocessed.i ] && ! fgrep -q $PWD preprocessed.i; then
         mkdir dir1 dir2
         cp test1.c dir1
         cp test1.c dir2
@@ -395,7 +396,8 @@ base_tests() {
     # -------------------------------------------------------------------------
     TEST "Directory is not hashed if using -gz=zlib"
 
-    if $REAL_COMPILER -c test1.c -gz=zlib -o /dev/null 2>/dev/null; then
+    $REAL_COMPILER -E test1.c -gz=zlib >preprocessed.i 2>/dev/null
+    if [ -s preprocessed.i ] && ! fgrep -q $PWD preprocessed.i; then
         mkdir dir1 dir2
         cp test1.c dir1
         cp test1.c dir2