blob: 26ed2d4cc70e1410a437d2d1c0dd03bbc1ef7921 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
|
%ifarch x86_64
%global archs %{ix86} x86_64
%else
%ifarch %{ix86}
%global archs %{ix86}
%else
%global archs %{_target_cpu}
%endif
%endif
%define abs2rel() perl -MFile::Spec -e 'print File::Spec->abs2rel(@ARGV)' %1 %2
%global relccache %(%abs2rel %{_bindir}/ccache %{_libdir}/ccache)
Name: ccache
Version: 4.10.2
Release: 1
Summary: C/C++ compiler cache
License: GPL-3.0-or-later AND Apache-2.0 AND BSL-1.0 AND MIT
URL: https://ccache.dev/
Source0: https://github.com/ccache/ccache/releases/download/v%{version}/%{name}-%{version}.tar.xz
Source1: %{name}.sh.in
Source2: %{name}.csh.in
Source3: https://github.com/doctest/doctest/releases/download/v2.4.11/doctest.h
BuildRequires: perl perl(File::Spec)
BuildRequires: rubygem-asciidoctor
BuildRequires: cmake
BuildRequires: fmt-devel
BuildRequires: hiredis-devel
BuildRequires: libzstd-devel
BuildRequires: xxhash-devel
BuildRequires: clang clang-tools-extra
BuildRequires: coreutils grep gawk
Requires: coreutils
Requires(pre): shadow-utils
%description
ccache is a compiler cache. It speeds up recompilation of C/C++ code
by caching previous compiles and detecting when the same compile is
being done again. The main focus is to handle the GNU C/C++ compiler
(GCC), but it may also work with compilers that mimic GCC good enough.
%prep
%autosetup -p1 %{name}-%{version}
sed -e 's|@LIBDIR@|%{_libdir}|g' -e 's|@CACHEDIR@|%{_var}/cache/ccache|g' \
%{S:1} > %{name}.sh
sed -e 's|@LIBDIR@|%{_libdir}|g' -e 's|@CACHEDIR@|%{_var}/cache/ccache|g' \
%{S:2} > %{name}.csh
grep "SHA256 `sha256sum %{S:3} | awk '{print $1}'`" cmake/FindDoctest.cmake
install -Dm 644 %{S:3} src/third_party/doctest/doctest.h
%build
%cmake -B %{_vpath_builddir} -DDEPS=LOCAL -DDOCTEST_INCLUDE_DIR=src/third_party
%cmake_build
%cmake_build --target doc
%install
%cmake_install
install -Dpm 644 %{_vpath_builddir}/doc/ccache.1 $RPM_BUILD_ROOT%{_mandir}/man1/ccache.1
install -dm 755 $RPM_BUILD_ROOT%{_sysconfdir}/profile.d
install -pm 644 %{name}.sh %{name}.csh $RPM_BUILD_ROOT%{_sysconfdir}/profile.d
install -dm 770 $RPM_BUILD_ROOT%{_var}/cache/ccache
install -dm 755 $RPM_BUILD_ROOT%{_libdir}/ccache
for n in cc gcc g++ c++ ; do
ln -s %{relccache} $RPM_BUILD_ROOT%{_libdir}/ccache/$n
for p in avr arm-gp2x-linux arm-none-eabi msp430 ; do
ln -s %{relccache} $RPM_BUILD_ROOT%{_libdir}/ccache/$p-$n
done
for p in aarch64 alpha arm avr32 bfin c6x cris frv h8300 hppa hppa64 ia64 m32r \
m68k microblaze mips64 mn10300 nios2 powerpc64 powerpc64le ppc64 ppc64le \
s390x sh sh64 sparc64 tile x86_64 xtensa ; do
ln -s %{relccache} $RPM_BUILD_ROOT%{_libdir}/ccache/$p-linux-gnu-$n
done
for s in 32 34 4 44 ; do
ln -s %{relccache} $RPM_BUILD_ROOT%{_libdir}/ccache/$n$s
done
for a in %{archs} ; do
ln -s %{relccache} \
$RPM_BUILD_ROOT%{_libdir}/ccache/$a-%{_vendor}-%{_target_os}-$n
done
done
for n in clang clang++ ; do
ln -s %{relccache} $RPM_BUILD_ROOT%{_libdir}/ccache/$n
done
find $RPM_BUILD_ROOT%{_libdir}/ccache -type l | \
sed -e "s|^$RPM_BUILD_ROOT|%%ghost |" > %{name}-%{version}.compilers
%check
%ctest
%define ccache_trigger(p:) \
%triggerin -- %{-p*}\
for n in %* ; do\
[ ! -x %{_bindir}/$n ] || ln -sf %{relccache} %{_libdir}/ccache/$n\
for a in %{archs} ; do\
[ ! -x %{_bindir}/$a-%{_vendor}-%{_target_os}-$n ] || \\\
ln -sf %{relccache} %{_libdir}/ccache/$a-%{_vendor}-%{_target_os}-$n\
done\
done\
:\
%triggerpostun -- %{-p*}\
for n in %* ; do\
[ -x %{_bindir}/$n ] || rm -f %{_libdir}/ccache/$n\
for a in %{archs} ; do\
[ -x %{_bindir}/$a-%{_vendor}-%{_target_os}-$n ] || \\\
rm -f %{_libdir}/ccache/$a-%{_vendor}-%{_target_os}-$n\
done\
done\
:\
%{nil}
%ccache_trigger -p arm-gp2x-linux-gcc arm-gp2x-linux-cc arm-gp2x-linux-gcc
%ccache_trigger -p arm-gp2x-linux-gcc-c++ arm-gp2x-linux-c++ arm-gp2x-linux-g++
%ccache_trigger -p arm-none-eabi-gcc-cs arm-none-eabi-gcc
%ccache_trigger -p avr-gcc avr-cc avr-gcc
%ccache_trigger -p avr-gcc-c++ avr-c++ avr-g++
%ccache_trigger -p clang clang clang++
%ccache_trigger -p compat-gcc-32 cc32 gcc32
%ccache_trigger -p compat-gcc-32-c++ c++32 g++32
%ccache_trigger -p compat-gcc-34 cc34 gcc34
%ccache_trigger -p compat-gcc-34-c++ c++34 g++34
%ccache_trigger -p compat-gcc-34-g77 f77 g77
%ccache_trigger -p gcc cc gcc
%ccache_trigger -p gcc-c++ c++ g++
%ccache_trigger -p gcc4 cc4 gcc4
%ccache_trigger -p gcc4-c++ c++4 g++4
%ccache_trigger -p gcc44 cc4 gcc44
%ccache_trigger -p gcc44-c++ c++44 g++44
%ccache_trigger -p mingw32-gcc i686-pc-mingw32-cc i686-pc-mingw32-gcc i686-w64-mingw32-gcc
%ccache_trigger -p mingw32-gcc-c++ i686-pc-mingw32-c++ i686-pc-mingw32-g++ i686-w64-mingw32-c++ i686-w64-mingw32-g++
%ccache_trigger -p mingw64-gcc i686-w64-mingw32-gcc x86_64-w64-mingw32-gcc
%ccache_trigger -p mingw64-gcc-c++ i686-w64-mingw32-c++ i686-w64-mingw32-g++ x86_64-w64-mingw32-c++ x86_64-w64-mingw32-g++
%ccache_trigger -p msp430-gcc msp430-cc msp430-gcc
%ccache_trigger -p nacl-arm-gcc arm-nacl-gcc
%ccache_trigger -p nacl-gcc nacl-gcc nacl-c++ nacl-g++
%ccache_trigger -p gcc-aarch64-linux-gnu aarch64-linux-gnu-gcc
%ccache_trigger -p gcc-c++-aarch64-linux-gnu aarch64-linux-gnu-c++ aarch64-linux-gnu-g++
%ccache_trigger -p gcc-alpha-linux-gnu alpha-linux-gnu-gcc
%ccache_trigger -p gcc-c++-alpha-linux-gnu alpha-linux-gnu-c++ alpha-linux-gnu-g++
%ccache_trigger -p gcc-arm-linux-gnu arm-linux-gnu-gcc
%ccache_trigger -p gcc-c++-arm-linux-gnu arm-linux-gnu-c++ arm-linux-gnu-g++
%ccache_trigger -p gcc-avr32-linux-gnu avr32-linux-gnu-gcc
%ccache_trigger -p gcc-c++-avr32-linux-gnu avr32-linux-gnu-c++ avr32-linux-gnu-g++
%ccache_trigger -p gcc-bfin-linux-gnu bfin-linux-gnu-gcc
%ccache_trigger -p gcc-c++-bfin-linux-gnu bfin-linux-gnu-c++ bfin-linux-gnu-g++
%ccache_trigger -p gcc-c6x-linux-gnu c6x-linux-gnu-gcc
%ccache_trigger -p gcc-c++-c6x-linux-gnu c6x-linux-gnu-c++ c6x-linux-gnu-g++
%ccache_trigger -p gcc-cris-linux-gnu cris-linux-gnu-gcc
%ccache_trigger -p gcc-c++-cris-linux-gnu cris-linux-gnu-c++ cris-linux-gnu-g++
%ccache_trigger -p gcc-frv-linux-gnu frv-linux-gnu-gcc
%ccache_trigger -p gcc-c++-frv-linux-gnu frv-linux-gnu-c++ frv-linux-gnu-g++
%ccache_trigger -p gcc-h8300-linux-gnu h8300-linux-gnu-gcc
%ccache_trigger -p gcc-hppa-linux-gnu hppa-linux-gnu-gcc
%ccache_trigger -p gcc-c++-hppa-linux-gnu hppa-linux-gnu-c++ hppa-linux-gnu-g++
%ccache_trigger -p gcc-hppa64-linux-gnu hppa64-linux-gnu-gcc
%ccache_trigger -p gcc-c++-hppa64-linux-gnu hppa64-linux-gnu-c++ hppa64-linux-gnu-g++
%ccache_trigger -p gcc-ia64-linux-gnu ia64-linux-gnu-gcc
%ccache_trigger -p gcc-c++-ia64-linux-gnu ia64-linux-gnu-c++ ia64-linux-gnu-g++
%ccache_trigger -p gcc-m32r-linux-gnu m32r-linux-gnu-gcc
%ccache_trigger -p gcc-c++-m32r-linux-gnu m32r-linux-gnu-c++ m32r-linux-gnu-g++
%ccache_trigger -p gcc-m68k-linux-gnu m68k-linux-gnu-gcc
%ccache_trigger -p gcc-c++-m68k-linux-gnu m68k-linux-gnu-c++ m68k-linux-gnu-g++
%ccache_trigger -p gcc-microblaze-linux-gnu microblaze-linux-gnu-gcc
%ccache_trigger -p gcc-c++-microblaze-linux-gnu microblaze-linux-gnu-c++ microblaze-linux-gnu-g++
%ccache_trigger -p gcc-mips64-linux-gnu mips64-linux-gnu-gcc
%ccache_trigger -p gcc-c++-mips64-linux-gnu mips64-linux-gnu-c++ mips64-linux-gnu-g++
%ccache_trigger -p gcc-mn10300-linux-gnu mn10300-linux-gnu-gcc
%ccache_trigger -p gcc-c++-mn10300-linux-gnu mn10300-linux-gnu-c++ mn10300-linux-gnu-g++
%ccache_trigger -p gcc-nios2-linux-gnu nios2-linux-gnu-gcc
%ccache_trigger -p gcc-c++-nios2-linux-gnu nios2-linux-gnu-c++ nios2-linux-gnu-g++
%ccache_trigger -p gcc-powerpc64-linux-gnu powerpc64-linux-gnu-gcc
%ccache_trigger -p gcc-c++-powerpc64-linux-gnu powerpc64-linux-gnu-c++ powerpc64-linux-gnu-g++
%ccache_trigger -p gcc-powerpc64le-linux-gnu powerpc64le-linux-gnu-gcc
%ccache_trigger -p gcc-c++-powerpc64le-linux-gnu powerpc64le-linux-gnu-c++ powerpc64le-linux-gnu-g++
%ccache_trigger -p gcc-ppc64-linux-gnu ppc64-linux-gnu-gcc
%ccache_trigger -p gcc-c++-ppc64-linux-gnu ppc64-linux-gnu-c++ ppc64-linux-gnu-g++
%ccache_trigger -p gcc-ppc64le-linux-gnu ppc64le-linux-gnu-gcc
%ccache_trigger -p gcc-c++-ppc64le-linux-gnu ppc64le-linux-gnu-c++ ppc64le-linux-gnu-g++
%ccache_trigger -p gcc-s390x-linux-gnu s390x-linux-gnu-gcc
%ccache_trigger -p gcc-c++-s390x-linux-gnu s390x-linux-gnu-c++ s390x-linux-gnu-g++
%ccache_trigger -p gcc-sh-linux-gnu sh-linux-gnu-gcc
%ccache_trigger -p gcc-c++-sh-linux-gnu sh-linux-gnu-c++ sh-linux-gnu-g++
%ccache_trigger -p gcc-sh64-linux-gnu sh64-linux-gnu-gcc
%ccache_trigger -p gcc-c++-sh64-linux-gnu sh64-linux-gnu-c++ sh64-linux-gnu-g++
%ccache_trigger -p gcc-sparc64-linux-gnu sparc64-linux-gnu-gcc
%ccache_trigger -p gcc-c++-sparc64-linux-gnu sparc64-linux-gnu-c++ sparc64-linux-gnu-g++
%ccache_trigger -p gcc-tile-linux-gnu tile-linux-gnu-gcc
%ccache_trigger -p gcc-c++-tile-linux-gnu tile-linux-gnu-c++ tile-linux-gnu-g++
%ccache_trigger -p gcc-x86_64-linux-gnu x86_64-linux-gnu-gcc
%ccache_trigger -p gcc-c++-x86_64-linux-gnu x86_64-linux-gnu-c++ x86_64-linux-gnu-g++
%ccache_trigger -p gcc-xtensa-linux-gnu xtensa-linux-gnu-gcc
%ccache_trigger -p gcc-c++-xtensa-linux-gnu xtensa-linux-gnu-c++ xtensa-linux-gnu-g++
%pre
getent group ccache >/dev/null || groupadd -r ccache || :
%files -f %{name}-%{version}.compilers
%license GPL-3.0.txt LICENSE.*
%doc doc/AUTHORS.* doc/MANUAL.* doc/NEWS.* README.md
%config(noreplace) %{_sysconfdir}/profile.d/%{name}.*sh
%{_bindir}/ccache
%dir %{_libdir}/ccache/
%attr(2770,root,ccache) %dir %{_var}/cache/ccache/
%{_mandir}/man1/ccache.1*
%changelog
* Sat Oct 05 2024 Funda Wang <fundawang@yeah.net> - 4.10.2-1
- Update to 4.10.2
* Fri Dec 8 2023 zhoujing <zhoujing106@huawei.com> - 4.8.3-1
- Update to 4.8.3
* Fri Dec 4 2020 huanghaitao <huanghaitao8@huawei.com> - 3.7.12-1
- package init
|