~ruther/guix-local

5bbd6bf1815398f3cbe3d2f218b537a82f7219a7 — Eric Bavier 12 years ago 16ecf3f
gnu: Add ccache.

* gnu/packages/ccache.scm: New file.
* gnu/packages/patches/ccache-stdc-predef-test.patch: New patch.
* gnu-system.am (GNU_SYSTEM_MODULES): Add ccache.scm.
  (dist_patch_DATA): Add patch.
3 files changed, 216 insertions(+), 0 deletions(-)

M gnu-system.am
A gnu/packages/ccache.scm
A gnu/packages/patches/ccache-stdc-predef-test.patch
M gnu-system.am => gnu-system.am +2 -0
@@ 43,6 43,7 @@ GNU_SYSTEM_MODULES =				\
  gnu/packages/boost.scm			\
  gnu/packages/bootstrap.scm			\
  gnu/packages/calcurse.scm			\
  gnu/packages/ccache.scm			\
  gnu/packages/cdrom.scm			\
  gnu/packages/cflow.scm			\
  gnu/packages/check.scm			\


@@ 264,6 265,7 @@ dist_patch_DATA =						\
  gnu/packages/patches/binutils-loongson-workaround.patch	\
  gnu/packages/patches/bitlbee-fix-tests.patch			\
  gnu/packages/patches/bitlbee-memset-fix.patch			\
  gnu/packages/patches/ccache-stdc-predef-test.patch		\
  gnu/packages/patches/cdparanoia-fpic.patch			\
  gnu/packages/patches/clucene-pkgconfig.patch			\
  gnu/packages/patches/cmake-fix-tests.patch			\

A gnu/packages/ccache.scm => gnu/packages/ccache.scm +57 -0
@@ 0,0 1,57 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix 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 Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gnu packages ccache)
  #:use-module (guix packages)
  #:use-module ((guix licenses) #:select (gpl3+))
  #:use-module (guix download)
  #:use-module (guix build-system gnu)
  #:use-module (gnu packages)
  #:use-module (gnu packages perl)
  #:use-module (gnu packages compression))

(define-public ccache
  (package
    (name "ccache")
    (version "3.1.9")
    (source
     (origin
      (method url-fetch)
      (uri (string-append "https://www.samba.org/ftp/ccache/ccache-"
                          version ".tar.xz"))
      (sha256
       (base32
        "1i06015jjc0n55xgvhv2h37fjp0i7z8a10s0v40f87c5mprzv0a9"))
      (patches (list (search-patch "ccache-stdc-predef-test.patch")))))
    (build-system gnu-build-system)
    (native-inputs `(("perl" ,perl)))   ;for test.sh
    (inputs `(("zlib" ,zlib)))
    (arguments
     '(#:phases (alist-cons-before
                 'check 'patch-test-shebangs
                 (lambda _
                   (substitute* '("test/test_hashutil.c" "test.sh")
                     (("#!/bin/sh") (string-append "#!" (which "sh")))))
                 %standard-phases)))
    (home-page "https://ccache.samba.org/")
    (synopsis "Compiler cache")
    (description
     "Ccache is a compiler cache.  It speeds up recompilation by caching
previous compilations and detecting when the same compilation is being done
again.  Supported languages are C, C++, Objective-C and Objective-C++.")
    (license gpl3+)))

A gnu/packages/patches/ccache-stdc-predef-test.patch => gnu/packages/patches/ccache-stdc-predef-test.patch +157 -0
@@ 0,0 1,157 @@
This patch is a combination of the following commits::

  https://git.samba.org/?p=ccache.git;a=commit;h=b5d63f81c1a83fd4c50b769a96a04f581b7db70c
  https://git.samba.org/?p=ccache.git;a=commit;h=a11f5688748ecb49f590b3f4bc0e9b3458f9a56f
  https://git.samba.org/?p=ccache.git;a=commit;h=5a9322c56ed0cd16255966e99077843aae57ab3e

from the general discussion at
http://comments.gmane.org/gmane.comp.compilers.ccache/1089

--- a/test.sh
+++ b/test.sh
@@ -562,6 +562,12 @@
 EOF
     backdate test1.h test2.h test3.h
 
+    $COMPILER -c -Wp,-MD,expected.d test.c
+    expected_d_content=`cat expected.d`
+
+    $COMPILER -c -Wp,-MMD,expected_mmd.d test.c
+    expected_mmd_d_content=`cat expected_mmd.d`
+
     ##################################################################
     # First compilation is a miss.
     testname="first compilation"
@@ -677,7 +683,7 @@
     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 +691,7 @@
     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
 
@@ -698,7 +704,7 @@
     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_mmd_d_content"
 
     rm -f other.d
 
@@ -706,7 +712,7 @@
     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_mmd_d_content"
 
     rm -f other.d
 
@@ -760,7 +766,7 @@
     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 +774,7 @@
     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 +786,7 @@
     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 +794,7 @@
     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 +802,7 @@
     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 +810,7 @@
     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 +821,7 @@
     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 +829,7 @@
     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 +841,13 @@
     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 +855,7 @@
     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