mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 05:18:07 -05:00
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.
This commit is contained in:
parent
16ecf3ff4a
commit
5bbd6bf181
3 changed files with 216 additions and 0 deletions
|
@ -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 \
|
||||
|
|
57
gnu/packages/ccache.scm
Normal file
57
gnu/packages/ccache.scm
Normal file
|
@ -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+)))
|
157
gnu/packages/patches/ccache-stdc-predef-test.patch
Normal file
157
gnu/packages/patches/ccache-stdc-predef-test.patch
Normal file
|
@ -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
|
Loading…
Reference in a new issue