1 | %bcond_with bootstrap |
---|
2 | |
---|
3 | # Only x86_64 and i686 are Tier 1 platforms at this time. |
---|
4 | # https://forge.rust-lang.org/platform-support.html |
---|
5 | %global rust_arches x86_64 i686 |
---|
6 | |
---|
7 | # Only the specified arches will use bootstrap binaries. |
---|
8 | %if %{with bootstrap} |
---|
9 | %global bootstrap_arches %%{rust_arches} |
---|
10 | %endif |
---|
11 | |
---|
12 | %bcond_with bundled_libgit2 |
---|
13 | |
---|
14 | Name: cargo |
---|
15 | Version: 0.24.0 |
---|
16 | Release: 1%{?_dist_release} |
---|
17 | Summary: Rust's package manager and build tool |
---|
18 | License: ASL 2.0 or MIT |
---|
19 | URL: https://crates.io/ |
---|
20 | ExclusiveArch: %{rust_arches} |
---|
21 | |
---|
22 | %global cargo_version %{version} |
---|
23 | %global cargo_bootstrap 0.23.0 |
---|
24 | |
---|
25 | Source0: https://github.com/rust-lang/%{name}/archive/%{cargo_version}/%{name}-%{cargo_version}.tar.gz |
---|
26 | |
---|
27 | Patch1: cargo-0.23.0-disable-mdbook.patch |
---|
28 | |
---|
29 | # Get the Rust triple for any arch. |
---|
30 | %{lua: function rust_triple(arch) |
---|
31 | local abi = "gnu" |
---|
32 | if arch == "armv7hl" then |
---|
33 | arch = "armv7" |
---|
34 | abi = "gnueabihf" |
---|
35 | elseif arch == "ppc64" then |
---|
36 | arch = "powerpc64" |
---|
37 | elseif arch == "ppc64le" then |
---|
38 | arch = "powerpc64le" |
---|
39 | end |
---|
40 | return arch.."-unknown-linux-"..abi |
---|
41 | end} |
---|
42 | |
---|
43 | %global rust_triple %{lua: print(rust_triple(rpm.expand("%{_target_cpu}")))} |
---|
44 | |
---|
45 | %if %defined bootstrap_arches |
---|
46 | # For each bootstrap arch, add an additional binary Source. |
---|
47 | # Also define bootstrap_source just for the current target. |
---|
48 | %{lua: do |
---|
49 | local bootstrap_arches = {} |
---|
50 | for arch in string.gmatch(rpm.expand("%{bootstrap_arches}"), "%S+") do |
---|
51 | table.insert(bootstrap_arches, arch) |
---|
52 | end |
---|
53 | local base = rpm.expand("https://static.rust-lang.org/dist/cargo-%{cargo_bootstrap}") |
---|
54 | local target_arch = rpm.expand("%{_target_cpu}") |
---|
55 | for i, arch in ipairs(bootstrap_arches) do |
---|
56 | i = i + 10 |
---|
57 | print(string.format("Source%d: %s-%s.tar.gz\n", |
---|
58 | i, base, rust_triple(arch))) |
---|
59 | if arch == target_arch then |
---|
60 | rpm.define("bootstrap_source "..i) |
---|
61 | end |
---|
62 | end |
---|
63 | end} |
---|
64 | %endif |
---|
65 | |
---|
66 | # Use vendored crate dependencies so we can build offline. |
---|
67 | # Created using https://github.com/alexcrichton/cargo-vendor/ 0.1.13 |
---|
68 | # It's so big because some of the -sys crates include the C library source they |
---|
69 | # want to link to. With our -devel buildreqs in place, they'll be used instead. |
---|
70 | # FIXME: These should all eventually be packaged on their own! |
---|
71 | Source100: %{name}-%{version}-vendor.tar.xz |
---|
72 | |
---|
73 | BuildRequires: rust |
---|
74 | BuildRequires: make |
---|
75 | BuildRequires: cmake |
---|
76 | BuildRequires: gcc |
---|
77 | |
---|
78 | %ifarch %{bootstrap_arches} |
---|
79 | %global bootstrap_root cargo-%{cargo_bootstrap}-%{rust_triple} |
---|
80 | %global local_cargo %{_builddir}/%{bootstrap_root}/cargo/bin/cargo |
---|
81 | Provides: bundled(%{name}-bootstrap) = %{cargo_bootstrap} |
---|
82 | %else |
---|
83 | BuildRequires: %{name} >= 0.13.0 |
---|
84 | %global local_cargo %{_bindir}/%{name} |
---|
85 | %endif |
---|
86 | |
---|
87 | # Indirect dependencies for vendored -sys crates above |
---|
88 | BuildRequires: curl-devel |
---|
89 | BuildRequires: libssh2-devel |
---|
90 | BuildRequires: openssl-devel |
---|
91 | BuildRequires: zlib-devel |
---|
92 | BuildRequires: pkgconfig |
---|
93 | |
---|
94 | %if %with bundled_libgit2 |
---|
95 | Provides: bundled(libgit2) = 0.25.0 |
---|
96 | %else |
---|
97 | BuildRequires: libgit2-devel >= 0.24 |
---|
98 | %endif |
---|
99 | |
---|
100 | # Cargo is not much use without Rust |
---|
101 | Requires: rust |
---|
102 | |
---|
103 | %description |
---|
104 | Cargo is a tool that allows Rust projects to declare their various dependencies |
---|
105 | and ensure that you'll always get a repeatable build. |
---|
106 | |
---|
107 | |
---|
108 | %package doc |
---|
109 | Summary: Documentation for Cargo |
---|
110 | BuildArch: noarch |
---|
111 | |
---|
112 | %description doc |
---|
113 | This package includes HTML documentation for Cargo. |
---|
114 | |
---|
115 | |
---|
116 | %prep |
---|
117 | |
---|
118 | %ifarch %{bootstrap_arches} |
---|
119 | %setup -q -n %{bootstrap_root} -T -b %{bootstrap_source} |
---|
120 | test -f '%{local_cargo}' |
---|
121 | %endif |
---|
122 | |
---|
123 | # cargo sources |
---|
124 | %setup -q -n %{name}-%{cargo_version} |
---|
125 | |
---|
126 | # vendored crates |
---|
127 | %setup -q -n %{name}-%{cargo_version} -T -D -a 100 |
---|
128 | |
---|
129 | %autopatch -p1 |
---|
130 | |
---|
131 | # define the offline registry |
---|
132 | %global cargo_home $PWD/.cargo |
---|
133 | mkdir -p %{cargo_home} |
---|
134 | cat >.cargo/config <<EOF |
---|
135 | [source.crates-io] |
---|
136 | registry = 'https://github.com/rust-lang/crates.io-index' |
---|
137 | replace-with = 'vendored-sources' |
---|
138 | |
---|
139 | [source.vendored-sources] |
---|
140 | directory = '$PWD/vendor' |
---|
141 | EOF |
---|
142 | |
---|
143 | # This should eventually migrate to distro policy |
---|
144 | # Enable optimization, debuginfo, and link hardening. |
---|
145 | %global rustflags -Copt-level=3 -Cdebuginfo=2 -Clink-arg=-Wl,-z,relro,-z,now |
---|
146 | |
---|
147 | %build |
---|
148 | |
---|
149 | %if %without bundled_libgit2 |
---|
150 | # convince libgit2-sys to use the distro libgit2 |
---|
151 | export LIBGIT2_SYS_USE_PKG_CONFIG=1 |
---|
152 | %endif |
---|
153 | |
---|
154 | # use our offline registry and custom rustc flags |
---|
155 | export CARGO_HOME="%{cargo_home}" |
---|
156 | export RUSTFLAGS="%{rustflags}" |
---|
157 | |
---|
158 | # cargo no longer uses a configure script, but we still want to use |
---|
159 | # CFLAGS in case of the odd C file in vendored dependencies. |
---|
160 | %{?__global_cflags:export CFLAGS="%{__global_cflags}"} |
---|
161 | %{!?__global_cflags:%{?optflags:export CFLAGS="%{optflags}"}} |
---|
162 | %{?__global_ldflags:export LDFLAGS="%{__global_ldflags}"} |
---|
163 | |
---|
164 | %{local_cargo} build --release |
---|
165 | sh src/ci/dox.sh |
---|
166 | |
---|
167 | |
---|
168 | %install |
---|
169 | export CARGO_HOME="%{cargo_home}" |
---|
170 | export RUSTFLAGS="%{rustflags}" |
---|
171 | |
---|
172 | %{local_cargo} install --root %{buildroot}%{_prefix} |
---|
173 | rm %{buildroot}%{_prefix}/.crates.toml |
---|
174 | |
---|
175 | mkdir -p %{buildroot}%{_mandir}/man1 |
---|
176 | %{__install} -p -m644 src/etc/man/cargo*.1 \ |
---|
177 | -t %{buildroot}%{_mandir}/man1 |
---|
178 | |
---|
179 | %{__install} -p -m644 src/etc/cargo.bashcomp.sh \ |
---|
180 | -D %{buildroot}%{_sysconfdir}/bash_completion.d/cargo |
---|
181 | |
---|
182 | %{__install} -p -m644 src/etc/_cargo \ |
---|
183 | -D %{buildroot}%{_datadir}/zsh/site-functions/_cargo |
---|
184 | |
---|
185 | # Create the path for crate-devel packages |
---|
186 | mkdir -p %{buildroot}%{_datadir}/cargo/registry |
---|
187 | |
---|
188 | mkdir -p %{buildroot}%{_docdir}/cargo |
---|
189 | cp -a target/doc %{buildroot}%{_docdir}/cargo/html |
---|
190 | |
---|
191 | |
---|
192 | %check |
---|
193 | export CARGO_HOME="%{cargo_home}" |
---|
194 | export RUSTFLAGS="%{rustflags}" |
---|
195 | |
---|
196 | # some tests are known to fail exact output due to libgit2 differences |
---|
197 | CFG_DISABLE_CROSS_TESTS=1 %{local_cargo} test --no-fail-fast || : |
---|
198 | |
---|
199 | |
---|
200 | %files |
---|
201 | %license LICENSE-APACHE LICENSE-MIT LICENSE-THIRD-PARTY |
---|
202 | %doc README.md |
---|
203 | %{_bindir}/cargo |
---|
204 | %{_mandir}/man1/cargo*.1* |
---|
205 | %{_sysconfdir}/bash_completion.d/cargo |
---|
206 | %{_datadir}/zsh/site-functions/_cargo |
---|
207 | %dir %{_datadir}/cargo |
---|
208 | %dir %{_datadir}/cargo/registry |
---|
209 | |
---|
210 | %files doc |
---|
211 | %{_docdir}/cargo/html |
---|
212 | |
---|
213 | |
---|
214 | %changelog |
---|
215 | * Fri Jan 05 2018 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 0.24.0-1 |
---|
216 | - Updated to 0.24.0. |
---|
217 | |
---|
218 | * Tue Jan 02 2018 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 0.23.0-2 |
---|
219 | - initial build for Vine Linux. |
---|
220 | - built a bootstrap rpm. |
---|
221 | |
---|
222 | * Wed Nov 29 2017 Josh Stone <jistone@redhat.com> - 0.23.0-1 |
---|
223 | - Update to 0.23.0. |
---|
224 | |
---|
225 | * Mon Oct 16 2017 Josh Stone <jistone@redhat.com> - 0.22.0-1 |
---|
226 | - Update to 0.22.0. |
---|
227 | |
---|
228 | * Mon Sep 11 2017 Josh Stone <jistone@redhat.com> - 0.21.1-1 |
---|
229 | - Update to 0.21.1. |
---|
230 | |
---|
231 | * Thu Aug 31 2017 Josh Stone <jistone@redhat.com> - 0.21.0-1 |
---|
232 | - Update to 0.21.0. |
---|
233 | |
---|
234 | * Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.20.0-3 |
---|
235 | - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild |
---|
236 | |
---|
237 | * Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.20.0-2 |
---|
238 | - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild |
---|
239 | |
---|
240 | * Fri Jul 21 2017 Josh Stone <jistone@redhat.com> - 0.20.0-1 |
---|
241 | - Update to 0.20.0. |
---|
242 | - Add a cargo-doc subpackage. |
---|
243 | |
---|
244 | * Sat Jul 08 2017 Igor Gnatenko <ignatenko@redhat.com> - 0.19.0-4 |
---|
245 | - Disable bootstrap |
---|
246 | |
---|
247 | * Sat Jul 08 2017 Igor Gnatenko <ignatenko@redhat.com> - 0.19.0-3 |
---|
248 | - Rebuild for libgit2 0.26.x |
---|
249 | |
---|
250 | * Tue Jun 20 2017 Josh Stone <jistone@redhat.com> - 0.19.0-2 |
---|
251 | - Create /usr/share/cargo/registry for crate-devel packages |
---|
252 | |
---|
253 | * Fri Jun 09 2017 Josh Stone <jistone@redhat.com> - 0.19.0-1 |
---|
254 | - Update to 0.19.0. |
---|
255 | |
---|
256 | * Thu Apr 27 2017 Josh Stone <jistone@redhat.com> - 0.18.0-1 |
---|
257 | - Update to 0.18.0. |
---|
258 | |
---|
259 | * Thu Mar 16 2017 Josh Stone <jistone@redhat.com> - 0.17.0-1 |
---|
260 | - Update to 0.17.0. |
---|
261 | |
---|
262 | * Tue Feb 14 2017 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.16.0-2 |
---|
263 | - Backport patch to expose description in cargo metadata |
---|
264 | |
---|
265 | * Thu Feb 09 2017 Josh Stone <jistone@redhat.com> - 0.16.0-1 |
---|
266 | - Update to 0.16.0. |
---|
267 | - Start using the current upstream release for bootstrap. |
---|
268 | - Merge and clean up conditionals for epel7. |
---|
269 | |
---|
270 | * Tue Feb 07 2017 Igor Gnatenko <ignatenko@redhat.com> - 0.15.0-4 |
---|
271 | - Disable bootstrap |
---|
272 | |
---|
273 | * Tue Feb 07 2017 Igor Gnatenko <ignatenko@redhat.com> - 0.15.0-3 |
---|
274 | - Rebuild for libgit2-0.25.x |
---|
275 | |
---|
276 | * Tue Jan 03 2017 Josh Stone <jistone@redhat.com> - 0.15.0-2 |
---|
277 | - Rebuild without bootstrap binaries. |
---|
278 | |
---|
279 | * Tue Jan 03 2017 Josh Stone <jistone@redhat.com> - 0.15.0-1 |
---|
280 | - Update to 0.15.0. |
---|
281 | - Rewrite bootstrap logic to target specific arches. |
---|
282 | - Bootstrap ppc64, ppc64le, s390x. |
---|
283 | |
---|
284 | * Sun Nov 13 2016 Josh Stone <jistone@redhat.com> - 0.14.0-2 |
---|
285 | - Fix CFG_RELEASE_NUM |
---|
286 | |
---|
287 | * Thu Nov 10 2016 Josh Stone <jistone@redhat.com> - 0.14.0-1 |
---|
288 | - Update to 0.14.0. |
---|
289 | - Use hardening flags for linking. |
---|
290 | |
---|
291 | * Thu Oct 20 2016 Josh Stone <jistone@redhat.com> - 0.13.0-4 |
---|
292 | - Rebuild with Rust 1.12.1 and enabled MIR. |
---|
293 | |
---|
294 | * Fri Oct 07 2016 Josh Stone <jistone@redhat.com> - 0.13.0-3 |
---|
295 | - Rebuild without bootstrap binaries. |
---|
296 | |
---|
297 | * Thu Oct 06 2016 Josh Stone <jistone@redhat.com> - 0.13.0-2 |
---|
298 | - Bootstrap aarch64. |
---|
299 | - Use jemalloc's MALLOC_CONF to work around #36944. |
---|
300 | |
---|
301 | * Fri Sep 30 2016 Josh Stone <jistone@redhat.com> - 0.13.0-1 |
---|
302 | - Update to 0.13.0. |
---|
303 | - Always use --local-cargo, even for bootstrap binaries. |
---|
304 | - Disable MIR until rust#36774 is resolved. |
---|
305 | |
---|
306 | * Sat Sep 03 2016 Josh Stone <jistone@redhat.com> - 0.12.0-3 |
---|
307 | - Rebuild without bootstrap binaries. |
---|
308 | |
---|
309 | * Fri Sep 02 2016 Josh Stone <jistone@redhat.com> - 0.12.0-2 |
---|
310 | - Bootstrap armv7hl. |
---|
311 | - Patch dl-snapshot.py to ignore hashes on unknown archs. |
---|
312 | |
---|
313 | * Wed Aug 24 2016 Josh Stone <jistone@redhat.com> - 0.12.0-1 |
---|
314 | - Update to 0.12.0. |
---|
315 | |
---|
316 | * Mon Aug 22 2016 Josh Stone <jistone@redhat.com> 0.11.0-3 |
---|
317 | - Rebuild without bootstrap binaries. |
---|
318 | - Add a runtime requirement on rust. |
---|
319 | |
---|
320 | * Mon Aug 22 2016 Josh Stone <jistone@redhat.com> - 0.11.0-2 |
---|
321 | - Initial import into Fedora (#1357749), bootstrapped |
---|
322 | |
---|
323 | * Sun Jul 17 2016 Josh Stone <jistone@fedoraproject.org> - 0.11.0-1 |
---|
324 | - Initial package, bootstrapped |
---|