1 | %bcond_with bootstrap |
---|
2 | %bcond_with test |
---|
3 | %bcond_without clang |
---|
4 | %bcond_without bundled_libgit2 |
---|
5 | %bcond_without bundled_libssh2 |
---|
6 | |
---|
7 | # Some sub-packages are versioned independently of the rust compiler and runtime itself. |
---|
8 | # Also beware that if any of these are not changed in a version bump, then the release |
---|
9 | # number should still increase, not be reset to 1! |
---|
10 | %global rustc_version 1.42.0 |
---|
11 | %global cargo_version %{rustc_version} |
---|
12 | %global rustfmt_version %{rustc_version} |
---|
13 | %global rls_version %{rustc_version} |
---|
14 | %global clippy_version %{rustc_version} |
---|
15 | |
---|
16 | %global llvm_major 10 |
---|
17 | |
---|
18 | # The channel can be stable, beta, or nightly |
---|
19 | %{!?channel: %global channel stable} |
---|
20 | |
---|
21 | # Only x86_64 and i686 are Tier 1 platforms at this time. |
---|
22 | # https://forge.rust-lang.org/platform-support.html |
---|
23 | %global rust_arches x86_64 i686 |
---|
24 | |
---|
25 | # To bootstrap from scratch, set the channel and date from src/stage0.txt |
---|
26 | # e.g. 1.10.0 wants rustc: 1.9.0-2016-05-24 |
---|
27 | # or nightly wants some beta-YYYY-MM-DD |
---|
28 | %global bootstrap_rust 1.42.0 |
---|
29 | %global bootstrap_cargo 1.42.0 |
---|
30 | %global bootstrap_channel %{bootstrap_rust} |
---|
31 | |
---|
32 | # Only the specified arches will use bootstrap binaries. |
---|
33 | %if %{with bootstrap} |
---|
34 | %global bootstrap_arches %%{rust_arches} |
---|
35 | %endif |
---|
36 | |
---|
37 | # We generally don't want llvm-static present at all, since llvm-config will |
---|
38 | # make us link statically. But we can opt in, e.g. to aid LLVM rebases. |
---|
39 | # FIXME: LLVM 3.9 prefers shared linking now! Which is good, but next time we |
---|
40 | # *want* static we'll have to force it with "llvm-config --link-static". |
---|
41 | # See also https://github.com/rust-lang/rust/issues/36854 |
---|
42 | # The new rustbuild accepts `--enable-llvm-link-shared`, else links static. |
---|
43 | %bcond_with llvm_static |
---|
44 | |
---|
45 | # We can also choose to just use Rust's bundled LLVM, in case the system LLVM |
---|
46 | # is insufficient. Rust currently requires LLVM 3.7+. |
---|
47 | %bcond_with bundled_llvm |
---|
48 | |
---|
49 | # LLDB only works on some architectures |
---|
50 | %ifarch %{arm} aarch64 %{ix86} x86_64 |
---|
51 | # LLDB isn't available everywhere... |
---|
52 | %bcond_without lldb |
---|
53 | %else |
---|
54 | %bcond_with lldb |
---|
55 | %endif |
---|
56 | |
---|
57 | Name: rust |
---|
58 | Version: %{rustc_version} |
---|
59 | Release: 1%{?_dist_release} |
---|
60 | Summary: The Rust Programming Language |
---|
61 | License: (ASL 2.0 or MIT) and (BSD and ISC and MIT) |
---|
62 | # ^ written as: (rust itself) and (bundled libraries) |
---|
63 | URL: https://www.rust-lang.org |
---|
64 | ExclusiveArch: %{rust_arches} |
---|
65 | |
---|
66 | Vendor: Project Vine |
---|
67 | Distribution: Vine Linux |
---|
68 | |
---|
69 | %if "%{channel}" == "stable" |
---|
70 | %global rustc_package rustc-%{version}-src |
---|
71 | %else |
---|
72 | %global rustc_package rustc-%{channel}-src |
---|
73 | %endif |
---|
74 | Source0: https://static.rust-lang.org/dist/%{rustc_package}.tar.gz |
---|
75 | |
---|
76 | # Get the Rust triple for any arch. |
---|
77 | %{lua: function rust_triple(arch) |
---|
78 | local abi = "gnu" |
---|
79 | if arch == "armv7hl" then |
---|
80 | arch = "armv7" |
---|
81 | abi = "gnueabihf" |
---|
82 | elseif arch == "ppc64" then |
---|
83 | arch = "powerpc64" |
---|
84 | elseif arch == "ppc64le" then |
---|
85 | arch = "powerpc64le" |
---|
86 | end |
---|
87 | return arch.."-unknown-linux-"..abi |
---|
88 | end} |
---|
89 | |
---|
90 | %global rust_triple %{lua: print(rust_triple(rpm.expand("%{_target_cpu}")))} |
---|
91 | |
---|
92 | %if %defined bootstrap_arches |
---|
93 | # For each bootstrap arch, add an additional binary Source. |
---|
94 | # Also define bootstrap_source just for the current target. |
---|
95 | %{lua: do |
---|
96 | local bootstrap_arches = {} |
---|
97 | for arch in string.gmatch(rpm.expand("%{bootstrap_arches}"), "%S+") do |
---|
98 | table.insert(bootstrap_arches, arch) |
---|
99 | end |
---|
100 | local base = rpm.expand("https://static.rust-lang.org/dist" |
---|
101 | .."/rust-%{bootstrap_channel}") |
---|
102 | local target_arch = rpm.expand("%{_target_cpu}") |
---|
103 | for i, arch in ipairs(bootstrap_arches) do |
---|
104 | print(string.format("Source%d: %s-%s.tar.gz\n", |
---|
105 | i, base, rust_triple(arch))) |
---|
106 | if arch == target_arch then |
---|
107 | rpm.define("bootstrap_source "..i) |
---|
108 | end |
---|
109 | end |
---|
110 | end} |
---|
111 | %endif |
---|
112 | |
---|
113 | %ifarch %{bootstrap_arches} |
---|
114 | %global bootstrap_root rust-%{bootstrap_channel}-%{rust_triple} |
---|
115 | %global local_rust_root %{_builddir}/%{bootstrap_root}/usr |
---|
116 | Provides: bundled(%{name}-bootstrap) = %{bootstrap_rust} |
---|
117 | %else |
---|
118 | BuildRequires: cargo >= %{bootstrap_cargo} |
---|
119 | BuildRequires: %{name} >= %{bootstrap_rust} |
---|
120 | BuildConflicts: %{name} > %{version} |
---|
121 | %global local_rust_root %{_prefix} |
---|
122 | %endif |
---|
123 | |
---|
124 | BuildRequires: cmake |
---|
125 | BuildRequires: make |
---|
126 | %if %{with clang} |
---|
127 | BuildRequires: clang |
---|
128 | BuildRequires: lld |
---|
129 | %else |
---|
130 | BuildRequires: gcc |
---|
131 | BuildRequires: gcc-c++ |
---|
132 | %endif |
---|
133 | %if %{without bundled_libgit2} |
---|
134 | BuildRequires: libgit2-devel |
---|
135 | %endif |
---|
136 | %if %{without bundled_libssh2} |
---|
137 | BuildRequires: libssh2-devel |
---|
138 | %endif |
---|
139 | BuildRequires: ncurses-devel |
---|
140 | BuildRequires: openssl-devel |
---|
141 | BuildRequires: zlib-devel |
---|
142 | BuildRequires: python3 |
---|
143 | BuildRequires: python3-rpm-macros |
---|
144 | BuildRequires: curl |
---|
145 | BuildRequires: curl-devel |
---|
146 | BuildRequires: xz-devel |
---|
147 | |
---|
148 | %if %{with bundled_llvm} |
---|
149 | BuildRequires: cmake |
---|
150 | BuildRequires: git |
---|
151 | Provides: bundled(llvm) = 6.0 |
---|
152 | %else |
---|
153 | %if %defined llvm |
---|
154 | %global llvm_root %{_libdir}/%{llvm} |
---|
155 | %else |
---|
156 | %global llvm llvm |
---|
157 | %global llvm_root %{_prefix} |
---|
158 | %endif |
---|
159 | BuildRequires: %{llvm}-devel >= 7.0.0 |
---|
160 | %if %{with llvm_static} |
---|
161 | BuildRequires: %{llvm}-static |
---|
162 | BuildRequires: libffi-devel |
---|
163 | %else |
---|
164 | # Make sure llvm-config doesn't see it. |
---|
165 | Requires: %{llvm}%{llvm_major}-libs |
---|
166 | BuildConflicts: %{llvm}-static |
---|
167 | %endif |
---|
168 | %endif |
---|
169 | |
---|
170 | # make check needs "ps" for src/test/run-pass/wait-forked-but-failed-child.rs |
---|
171 | BuildRequires: procps |
---|
172 | |
---|
173 | # debuginfo-gdb tests need gdb |
---|
174 | BuildRequires: gdb |
---|
175 | |
---|
176 | # TODO: work on unbundling these! |
---|
177 | Provides: bundled(jquery) = 2.1.4 |
---|
178 | Provides: bundled(miniz) = 1.14 |
---|
179 | |
---|
180 | # Virtual provides for folks who attempt "dnf install rustc" |
---|
181 | Provides: rustc = %{version}-%{release} |
---|
182 | Provides: rustc%{?_isa} = %{version}-%{release} |
---|
183 | |
---|
184 | # Always require our exact standard library |
---|
185 | Requires: %{name}-std-static%{?_isa} = %{version}-%{release} |
---|
186 | |
---|
187 | # The C compiler is needed at runtime just for linking. Someday rustc might |
---|
188 | # invoke the linker directly, and then we'll only need binutils. |
---|
189 | # https://github.com/rust-lang/rust/issues/11937 |
---|
190 | Requires: /usr/bin/cc |
---|
191 | |
---|
192 | # ALL Rust libraries are private, because they don't keep an ABI. |
---|
193 | %global _privatelibs lib.*-[[:xdigit:]]*[.]so.* |
---|
194 | %global __provides_exclude ^(%{_privatelibs})$ |
---|
195 | %global __requires_exclude ^(%{_privatelibs})$ |
---|
196 | %global __provides_exclude_from ^%{_docdir}/.*$ |
---|
197 | %global __requires_exclude_from ^%{_docdir}/.*$ |
---|
198 | |
---|
199 | # While we don't want to encourage dynamic linking to Rust shared libraries, as |
---|
200 | # there's no stable ABI, we still need the unallocated metadata (.rustc) to |
---|
201 | # support custom-derive plugins like #[proc_macro_derive(Foo)]. But eu-strip is |
---|
202 | # very eager by default, so we have to limit it to -g, only debugging symbols. |
---|
203 | %if 0%{?fedora} >= 27 |
---|
204 | # Newer find-debuginfo.sh supports --keep-section, which is preferable. rhbz1465997 |
---|
205 | %global _find_debuginfo_opts --keep-section .rustc |
---|
206 | %else |
---|
207 | %global _find_debuginfo_opts -g |
---|
208 | %undefine _include_minidebuginfo |
---|
209 | %endif |
---|
210 | |
---|
211 | # Use hardening ldflags. |
---|
212 | %global rustflags -Clink-arg=-Wl,-z,relro,-z,now |
---|
213 | |
---|
214 | %if %{without bundled_llvm} && "%{llvm_root}" != "%{_prefix}" |
---|
215 | # https://github.com/rust-lang/rust/issues/40717 |
---|
216 | %global library_path $(%{llvm_root}/bin/llvm-config --libdir) |
---|
217 | %endif |
---|
218 | |
---|
219 | %description |
---|
220 | Rust is a systems programming language that runs blazingly fast, prevents |
---|
221 | segfaults, and guarantees thread safety. |
---|
222 | |
---|
223 | This package includes the Rust compiler and documentation generator. |
---|
224 | |
---|
225 | |
---|
226 | %package std-static |
---|
227 | Summary: Standard library for Rust |
---|
228 | |
---|
229 | %description std-static |
---|
230 | This package includes the standard libraries for building applications |
---|
231 | written in Rust. |
---|
232 | |
---|
233 | |
---|
234 | %package debugger-common |
---|
235 | Summary: Common debugger pretty printers for Rust |
---|
236 | BuildArch: noarch |
---|
237 | |
---|
238 | %description debugger-common |
---|
239 | This package includes the common functionality for %{name}-gdb and %{name}-lldb. |
---|
240 | |
---|
241 | |
---|
242 | %package gdb |
---|
243 | Summary: GDB pretty printers for Rust |
---|
244 | BuildArch: noarch |
---|
245 | Requires: gdb |
---|
246 | Requires: %{name}-debugger-common = %{version}-%{release} |
---|
247 | |
---|
248 | %description gdb |
---|
249 | This package includes the rust-gdb script, which allows easier debugging of Rust |
---|
250 | programs. |
---|
251 | |
---|
252 | |
---|
253 | %if %{with lldb} |
---|
254 | |
---|
255 | %package lldb |
---|
256 | Summary: LLDB pretty printers for Rust |
---|
257 | |
---|
258 | # It could be noarch, but lldb has limited availability |
---|
259 | #BuildArch: noarch |
---|
260 | |
---|
261 | Requires: lldb |
---|
262 | Requires: python-lldb |
---|
263 | Requires: %{name}-debugger-common = %{version}-%{release} |
---|
264 | |
---|
265 | %description lldb |
---|
266 | This package includes the rust-lldb script, which allows easier debugging of Rust |
---|
267 | programs. |
---|
268 | |
---|
269 | %endif |
---|
270 | |
---|
271 | |
---|
272 | %package doc |
---|
273 | Summary: Documentation for Rust |
---|
274 | # NOT BuildArch: noarch |
---|
275 | # Note, while docs are mostly noarch, some things do vary by target_arch. |
---|
276 | # Koji will fail the build in rpmdiff if two architectures build a noarch |
---|
277 | # subpackage differently, so instead we have to keep its arch. |
---|
278 | |
---|
279 | %description doc |
---|
280 | This package includes HTML documentation for the Rust programming language and |
---|
281 | its standard library. |
---|
282 | |
---|
283 | |
---|
284 | %package -n cargo |
---|
285 | Summary: Rust's package manager and build tool |
---|
286 | Version: %{cargo_version} |
---|
287 | # For tests: |
---|
288 | BuildRequires: git |
---|
289 | # Cargo is not much use without Rust |
---|
290 | Requires: rust |
---|
291 | |
---|
292 | %description -n cargo |
---|
293 | Cargo is a tool that allows Rust projects to declare their various dependencies |
---|
294 | and ensure that you'll always get a repeatable build. |
---|
295 | |
---|
296 | |
---|
297 | %package -n cargo-doc |
---|
298 | Summary: Documentation for Cargo |
---|
299 | Version: %{cargo_version} |
---|
300 | BuildArch: noarch |
---|
301 | # Cargo no longer builds its own documentation |
---|
302 | # https://github.com/rust-lang/cargo/pull/4904 |
---|
303 | Requires: rust-doc = %{rustc_version}-%{release} |
---|
304 | |
---|
305 | %description -n cargo-doc |
---|
306 | This package includes HTML documentation for Cargo. |
---|
307 | |
---|
308 | |
---|
309 | %package -n rustfmt |
---|
310 | Summary: Tool to find and fix Rust formatting issues |
---|
311 | Version: %{rustfmt_version} |
---|
312 | Requires: cargo |
---|
313 | Obsoletes: rustfmt-preview < 1.0.0 |
---|
314 | |
---|
315 | %description -n rustfmt |
---|
316 | A tool for formatting Rust code according to style guidelines. |
---|
317 | |
---|
318 | |
---|
319 | %package -n rls |
---|
320 | Summary: Rust Language Server for IDE integration |
---|
321 | Version: %{rls_version} |
---|
322 | Requires: rust-analysis |
---|
323 | # /usr/bin/rls is dynamically linked against internal rustc libs |
---|
324 | Requires: %{name} = %{rustc_version}-%{release} |
---|
325 | Obsoletes: rls-preview < 1.0.0 |
---|
326 | |
---|
327 | %description -n rls |
---|
328 | The Rust Language Server provides a server that runs in the background, |
---|
329 | providing IDEs, editors, and other tools with information about Rust programs. |
---|
330 | It supports functionality such as 'goto definition', symbol search, |
---|
331 | reformatting, and code completion, and enables renaming and refactorings. |
---|
332 | |
---|
333 | |
---|
334 | %package -n clippy |
---|
335 | Summary: Lints to catch common mistakes and improve your Rust code |
---|
336 | Version: %{clippy_version} |
---|
337 | License: MPLv2.0 |
---|
338 | Requires: cargo |
---|
339 | # /usr/bin/clippy-driver is dynamically linked against internal rustc libs |
---|
340 | Requires: %{name} = %{rustc_version}-%{release} |
---|
341 | Obsoletes: clippy-preview < 1.0.0 |
---|
342 | |
---|
343 | %description -n clippy |
---|
344 | A collection of lints to catch common mistakes and improve your Rust code. |
---|
345 | |
---|
346 | |
---|
347 | %package src |
---|
348 | Summary: Sources for the Rust standard library |
---|
349 | BuildArch: noarch |
---|
350 | |
---|
351 | %description src |
---|
352 | This package includes source files for the Rust standard library. It may be |
---|
353 | useful as a reference for code completion tools in various editors. |
---|
354 | |
---|
355 | |
---|
356 | %package analysis |
---|
357 | Summary: Compiler analysis data for the Rust standard library |
---|
358 | Requires: rust-std-static = %{rustc_version}-%{release} |
---|
359 | |
---|
360 | %description analysis |
---|
361 | This package contains analysis data files produced with rustc's -Zsave-analysis |
---|
362 | feature for the Rust standard library. The RLS (Rust Language Server) uses this |
---|
363 | data to provide information about the Rust standard library. |
---|
364 | |
---|
365 | |
---|
366 | %debug_package |
---|
367 | |
---|
368 | |
---|
369 | %prep |
---|
370 | |
---|
371 | %ifarch %{bootstrap_arches} |
---|
372 | %setup -q -n %{bootstrap_root} -T -b %{bootstrap_source} |
---|
373 | ./install.sh --components=cargo,rustc,rust-std-%{rust_triple} \ |
---|
374 | --prefix=%{local_rust_root} --disable-ldconfig |
---|
375 | test -f '%{local_rust_root}/bin/cargo' |
---|
376 | test -f '%{local_rust_root}/bin/rustc' |
---|
377 | %endif |
---|
378 | |
---|
379 | %setup -q -n %{rustc_package} |
---|
380 | |
---|
381 | %if "%{python}" == "python3" |
---|
382 | sed -i.try-py3 -e '/try python2.7/i try python3 "$@"' ./configure |
---|
383 | %endif |
---|
384 | |
---|
385 | %if %without bundled_llvm |
---|
386 | rm -rf src/llvm-project/ |
---|
387 | %endif |
---|
388 | |
---|
389 | # We never enable emscripten. |
---|
390 | rm -rf src/llvm-emscripten/ |
---|
391 | |
---|
392 | # Remove other unused vendored libraries |
---|
393 | #rm -rf vendor/curl-sys/curl/ |
---|
394 | rm -rf vendor/jemalloc-sys/jemalloc/ |
---|
395 | rm -rf vendor/libz-sys/src/zlib/ |
---|
396 | rm -rf vendor/lzma-sys/xz-*/ |
---|
397 | rm -rf vendor/openssl-src/openssl/ |
---|
398 | %if %{without bundled_libgit2} |
---|
399 | rm -rf vendor/libgit2-sys/libgit2/ |
---|
400 | %endif |
---|
401 | %if %{without bundled_libssh2} |
---|
402 | rm -rf vendor/libssh2-sys/libssh2/ |
---|
403 | %endif |
---|
404 | |
---|
405 | # This only affects the transient rust-installer, but let it use our dynamic xz-libs |
---|
406 | sed -i.lzma -e '/LZMA_API_STATIC/d' src/bootstrap/tool.rs |
---|
407 | |
---|
408 | # rename bundled license for packaging |
---|
409 | if [ -e vendor/backtrace-sys/src/libbacktrace/LICENSE ]; then |
---|
410 | cp -a vendor/backtrace-sys/src/libbacktrace/LICENSE{,-libbacktrace} |
---|
411 | fi |
---|
412 | |
---|
413 | %if %{with bundled_llvm} && 0%{?epel} |
---|
414 | mkdir -p cmake-bin |
---|
415 | ln -s /usr/bin/cmake cmake-bin/cmake |
---|
416 | %global cmake_path $PWD/cmake-bin |
---|
417 | %endif |
---|
418 | |
---|
419 | %if %{without bundled_llvm} && %{with llvm_static} |
---|
420 | # Static linking to distro LLVM needs to add -lffi |
---|
421 | # https://github.com/rust-lang/rust/issues/34486 |
---|
422 | sed -i.ffi -e '$a #[link(name = "ffi")] extern {}' \ |
---|
423 | src/librustc_llvm/lib.rs |
---|
424 | %endif |
---|
425 | |
---|
426 | # The configure macro will modify some autoconf-related files, which upsets |
---|
427 | # cargo when it tries to verify checksums in those files. If we just truncate |
---|
428 | # that file list, cargo won't have anything to complain about. |
---|
429 | find vendor -name .cargo-checksum.json \ |
---|
430 | -exec sed -i.uncheck -e 's/"files":{[^}]*}/"files":{ }/' '{}' '+' |
---|
431 | |
---|
432 | |
---|
433 | %build |
---|
434 | |
---|
435 | %if %{without bundled_libgit2} |
---|
436 | export LIBGIT2_SYS_USE_PKG_CONFIG=1 |
---|
437 | %endif |
---|
438 | %if %{without bundled_libssh2} |
---|
439 | export LIBSSH2_SYS_USE_PKG_CONFIG=1 |
---|
440 | %endif |
---|
441 | |
---|
442 | %{?cmake_path:export PATH=%{cmake_path}:$PATH} |
---|
443 | %{?library_path:export LIBRARY_PATH="%{library_path}"} |
---|
444 | %{?rustflags:export RUSTFLAGS="%{rustflags}"} |
---|
445 | |
---|
446 | # We're going to override --libdir when configuring to get rustlib into a |
---|
447 | # common path, but we'll fix the shared libraries during install. |
---|
448 | %global common_libdir %{_prefix}/lib |
---|
449 | %global rustlibdir %{common_libdir}/rustlib |
---|
450 | |
---|
451 | %ifarch x86_64 |
---|
452 | %define enable_debuginfo --debuginfo-level=0 --debuginfo-level-std=2 |
---|
453 | %else |
---|
454 | %define enable_debuginfo --debuginfo-level=0 |
---|
455 | %endif |
---|
456 | |
---|
457 | %if %{with clang} |
---|
458 | export CC=clang |
---|
459 | export CXX=clang++ |
---|
460 | export LDFLAGS="$LDFLAGS -fuse-ld=lld" |
---|
461 | export RUSTFLAGS="$RUSTFLAGS -C linker=clang -C link-arg=-fuse-ld=lld" |
---|
462 | %endif |
---|
463 | |
---|
464 | # workaround for https://github.com/rust-lang/rust/issues/69953 |
---|
465 | # --set rust.deny-warnings=false |
---|
466 | |
---|
467 | |
---|
468 | %configure \ |
---|
469 | --disable-option-checking \ |
---|
470 | --libdir=%{common_libdir} \ |
---|
471 | --build=%{rust_triple} --host=%{rust_triple} --target=%{rust_triple} \ |
---|
472 | --enable-local-rust --local-rust-root=%{local_rust_root} \ |
---|
473 | %{!?with_bundled_llvm: --llvm-root=%{llvm_root} --disable-codegen-tests \ |
---|
474 | %{!?with_llvm_static: --enable-llvm-link-shared } } \ |
---|
475 | --disable-rpath \ |
---|
476 | %{enable_debuginfo} \ |
---|
477 | --enable-extended \ |
---|
478 | --enable-vendor \ |
---|
479 | --enable-verbose-tests \ |
---|
480 | --set rust.codegen-units-std=1 \ |
---|
481 | --release-channel=%{channel} \ |
---|
482 | --set rust.deny-warnings=false \ |
---|
483 | %{nil} |
---|
484 | |
---|
485 | RUST_BACKTRACE=1 %{__python3} ./x.py build |
---|
486 | %{__python3} ./x.py doc |
---|
487 | |
---|
488 | |
---|
489 | %install |
---|
490 | rm -rf %{buildroot} |
---|
491 | |
---|
492 | %{?cmake_path:export PATH=%{cmake_path}:$PATH} |
---|
493 | %{?library_path:export LIBRARY_PATH="%{library_path}"} |
---|
494 | %{?rustflags:export RUSTFLAGS="%{rustflags}"} |
---|
495 | %if %{with clang} |
---|
496 | export CC=clang |
---|
497 | export CXX=clang++ |
---|
498 | export RUSTFLAGS="$RUSTFLAGS -C linker=clang -C link-arg=-fuse-ld=lld" |
---|
499 | %endif |
---|
500 | |
---|
501 | DESTDIR=%{buildroot} ./x.py install |
---|
502 | #DESTDIR=%{buildroot} ./x.py install src |
---|
503 | |
---|
504 | |
---|
505 | # Make sure the shared libraries are in the proper libdir |
---|
506 | %if "%{_libdir}" != "%{common_libdir}" |
---|
507 | mkdir -p %{buildroot}%{_libdir} |
---|
508 | find %{buildroot}%{common_libdir} -maxdepth 1 -type f -name '*.so' \ |
---|
509 | -exec mv -v -t %{buildroot}%{_libdir} '{}' '+' |
---|
510 | %endif |
---|
511 | |
---|
512 | # The shared libraries should be executable for debuginfo extraction. |
---|
513 | find %{buildroot}%{_libdir} -maxdepth 1 -type f -name '*.so' \ |
---|
514 | -exec chmod -v +x '{}' '+' |
---|
515 | |
---|
516 | # The libdir libraries are identical to those under rustlib/. It's easier on |
---|
517 | # library loading if we keep them in libdir, but we do need them in rustlib/ |
---|
518 | # to support dynamic linking for compiler plugins, so we'll symlink. |
---|
519 | (cd "%{buildroot}%{rustlibdir}/%{rust_triple}/lib" && |
---|
520 | find ../../../../%{_lib} -maxdepth 1 -name '*.so' | |
---|
521 | while read lib; do |
---|
522 | if [ -f "${lib##*/}" ]; then |
---|
523 | # make sure they're actually identical! |
---|
524 | cmp "$lib" "${lib##*/}" |
---|
525 | ln -v -f -s -t . "$lib" |
---|
526 | fi |
---|
527 | done) |
---|
528 | |
---|
529 | # Remove installer artifacts (manifests, uninstall scripts, etc.) |
---|
530 | find %{buildroot}%{rustlibdir} -maxdepth 1 -type f -exec rm -v '{}' '+' |
---|
531 | |
---|
532 | # Remove backup files from %%configure munging |
---|
533 | find %{buildroot}%{rustlibdir} -type f -name '*.orig' -exec rm -v '{}' '+' |
---|
534 | |
---|
535 | # https://fedoraproject.org/wiki/Changes/Make_ambiguous_python_shebangs_error |
---|
536 | # We don't actually need to ship any of those python scripts in rust-src anyway. |
---|
537 | |
---|
538 | find %{buildroot}%{rustlibdir}/src -type f -name '*.py' -exec rm -v '{}' '+' |
---|
539 | |
---|
540 | # FIXME: __os_install_post will strip the rlibs |
---|
541 | # -- should we find a way to preserve debuginfo? |
---|
542 | |
---|
543 | # Remove unwanted documentation files (we already package them) |
---|
544 | # Remove unwanted documentation files (we already package them) |
---|
545 | rm -f %{buildroot}%{_docdir}/%{name}/README.md |
---|
546 | rm -f %{buildroot}%{_docdir}/%{name}/COPYRIGHT |
---|
547 | rm -f %{buildroot}%{_docdir}/%{name}/LICENSE |
---|
548 | rm -f %{buildroot}%{_docdir}/%{name}/LICENSE-APACHE |
---|
549 | rm -f %{buildroot}%{_docdir}/%{name}/LICENSE-MIT |
---|
550 | rm -f %{buildroot}%{_docdir}/%{name}/LICENSE-THIRD-PARTY |
---|
551 | rm -f %{buildroot}%{_docdir}/%{name}/*.old |
---|
552 | |
---|
553 | # Sanitize the HTML documentation |
---|
554 | find %{buildroot}%{_docdir}/%{name}/html -empty -delete |
---|
555 | find %{buildroot}%{_docdir}/%{name}/html -type f -exec chmod -x '{}' '+' |
---|
556 | |
---|
557 | # Create the path for crate-devel packages |
---|
558 | mkdir -p %{buildroot}%{_datadir}/cargo/registry |
---|
559 | |
---|
560 | # Cargo no longer builds its own documentation |
---|
561 | # https://github.com/rust-lang/cargo/pull/4904 |
---|
562 | mkdir -p %{buildroot}%{_docdir}/cargo |
---|
563 | ln -sT ../rust/html/cargo/ %{buildroot}%{_docdir}/cargo/html |
---|
564 | |
---|
565 | %if %{without lldb} |
---|
566 | rm -f %{buildroot}%{_bindir}/rust-lldb |
---|
567 | rm -f %{buildroot}%{rustlibdir}/etc/lldb_*.py* |
---|
568 | %endif |
---|
569 | |
---|
570 | %if %{with bundled_llvm} |
---|
571 | rm -rf %{buildroot}/home |
---|
572 | %endif |
---|
573 | |
---|
574 | |
---|
575 | %check |
---|
576 | %if %{with test} |
---|
577 | %{?cmake_path:export PATH=%{cmake_path}:$PATH} |
---|
578 | %{?library_path:export LIBRARY_PATH="%{library_path}"} |
---|
579 | %{?rustflags:export RUSTFLAGS="%{rustflags}"} |
---|
580 | %if %{with clang} |
---|
581 | export CC=clang |
---|
582 | export CXX=clang++ |
---|
583 | export LD=ld.lld |
---|
584 | export RUSTFLAGS="$RUSTFLAGS -C linker=ld.lld -C link-arg=-fuse-ld=lld" |
---|
585 | %endif |
---|
586 | |
---|
587 | # The results are not stable on koji, so mask errors and just log it. |
---|
588 | %{__python} ./x.py test --no-fail-fast || : |
---|
589 | %{__python} ./x.py test --no-fail-fast cargo || : |
---|
590 | %{__python} ./x.py test --no-fail-fast clippy || : |
---|
591 | %{__python} ./x.py test --no-fail-fast rls || : |
---|
592 | %{__python} ./x.py test --no-fail-fast rustfmt || : |
---|
593 | %endif |
---|
594 | |
---|
595 | |
---|
596 | %post -p /sbin/ldconfig |
---|
597 | %postun -p /sbin/ldconfig |
---|
598 | |
---|
599 | |
---|
600 | %files |
---|
601 | %license COPYRIGHT LICENSE-APACHE LICENSE-MIT |
---|
602 | #license src/libbacktrace/LICENSE-libbacktrace |
---|
603 | %doc README.md |
---|
604 | %{_bindir}/rustc |
---|
605 | %{_bindir}/rustdoc |
---|
606 | %{_libdir}/*.so |
---|
607 | %{_mandir}/man1/rustc.1* |
---|
608 | %{_mandir}/man1/rustdoc.1* |
---|
609 | %dir %{rustlibdir} |
---|
610 | %dir %{rustlibdir}/%{rust_triple} |
---|
611 | %dir %{rustlibdir}/%{rust_triple}/lib |
---|
612 | %{rustlibdir}/%{rust_triple}/lib/*.so |
---|
613 | %exclude %{_bindir}/*miri |
---|
614 | |
---|
615 | |
---|
616 | %files std-static |
---|
617 | %dir %{rustlibdir} |
---|
618 | %dir %{rustlibdir}/%{rust_triple} |
---|
619 | %dir %{rustlibdir}/%{rust_triple}/lib |
---|
620 | %{rustlibdir}/%{rust_triple}/lib/*.rlib |
---|
621 | |
---|
622 | |
---|
623 | %files debugger-common |
---|
624 | %dir %{rustlibdir} |
---|
625 | %dir %{rustlibdir}/etc |
---|
626 | %{rustlibdir}/etc/debugger_*.py* |
---|
627 | |
---|
628 | |
---|
629 | %files gdb |
---|
630 | %{_bindir}/rust-gdb |
---|
631 | %{rustlibdir}/etc/gdb_*.py* |
---|
632 | %exclude %{_bindir}/rust-gdbgui |
---|
633 | |
---|
634 | |
---|
635 | %if %with lldb |
---|
636 | %files lldb |
---|
637 | %{_bindir}/rust-lldb |
---|
638 | %{rustlibdir}/etc/lldb_*.py* |
---|
639 | %endif |
---|
640 | |
---|
641 | |
---|
642 | %files doc |
---|
643 | %docdir %{_docdir}/%{name} |
---|
644 | %dir %{_docdir}/%{name} |
---|
645 | %dir %{_docdir}/%{name}/html |
---|
646 | %{_docdir}/%{name}/html/*/ |
---|
647 | %{_docdir}/%{name}/html/*.html |
---|
648 | %{_docdir}/%{name}/html/*.css |
---|
649 | %{_docdir}/%{name}/html/*.ico |
---|
650 | %{_docdir}/%{name}/html/*.js |
---|
651 | %{_docdir}/%{name}/html/*.png |
---|
652 | %{_docdir}/%{name}/html/*.svg |
---|
653 | %{_docdir}/%{name}/html/*.woff |
---|
654 | %{_docdir}/%{name}/html/SourceSerifPro-LICENSE.md |
---|
655 | %license %{_docdir}/%{name}/html/*.txt |
---|
656 | %license %{_docdir}/%{name}/html/*.md |
---|
657 | |
---|
658 | |
---|
659 | %files -n cargo |
---|
660 | %license src/tools/cargo/LICENSE-APACHE src/tools/cargo/LICENSE-MIT src/tools/cargo/LICENSE-THIRD-PARTY |
---|
661 | %doc src/tools/cargo/README.md |
---|
662 | %{_bindir}/cargo |
---|
663 | %{_mandir}/man1/cargo*.1* |
---|
664 | %dir %{_sysconfdir}/bash_completion.d |
---|
665 | %{_sysconfdir}/bash_completion.d/cargo |
---|
666 | %dir %{_datadir}/zsh |
---|
667 | %dir %{_datadir}/zsh/site-functions |
---|
668 | %{_datadir}/zsh/site-functions/_cargo |
---|
669 | %dir %{_datadir}/cargo |
---|
670 | %dir %{_datadir}/cargo/registry |
---|
671 | |
---|
672 | |
---|
673 | %files -n cargo-doc |
---|
674 | %docdir %{_docdir}/cargo |
---|
675 | %dir %{_docdir}/cargo |
---|
676 | %{_docdir}/cargo/html |
---|
677 | |
---|
678 | |
---|
679 | %files -n rustfmt |
---|
680 | %{_bindir}/rustfmt |
---|
681 | %{_bindir}/cargo-fmt |
---|
682 | %doc src/tools/rustfmt/{README,CHANGELOG,Configurations}.md |
---|
683 | %license src/tools/rustfmt/LICENSE-{APACHE,MIT} |
---|
684 | |
---|
685 | |
---|
686 | %files -n rls |
---|
687 | %{_bindir}/rls |
---|
688 | %doc src/tools/rls/{README.md,COPYRIGHT,debugging.md} |
---|
689 | %license src/tools/rls/LICENSE-{APACHE,MIT} |
---|
690 | |
---|
691 | |
---|
692 | %files -n clippy |
---|
693 | %{_bindir}/cargo-clippy |
---|
694 | %{_bindir}/clippy-driver |
---|
695 | %doc src/tools/clippy/{README.md,CHANGELOG.md} |
---|
696 | %license src/tools/clippy/LICENSE* |
---|
697 | |
---|
698 | |
---|
699 | %files src |
---|
700 | %dir %{rustlibdir} |
---|
701 | %{rustlibdir}/src |
---|
702 | |
---|
703 | |
---|
704 | %files analysis |
---|
705 | %{rustlibdir}/%{rust_triple}/analysis/ |
---|
706 | |
---|
707 | %changelog |
---|
708 | * Thu Mar 26 2020 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.42.0-1 |
---|
709 | - new upstream release. |
---|
710 | - separated debuginfo. |
---|
711 | |
---|
712 | * Sun Dec 22 2019 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.40.0-1 |
---|
713 | - new upstream release. |
---|
714 | |
---|
715 | * Sat Sep 28 2019 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.38.0-1 |
---|
716 | - new upstream release. |
---|
717 | - erased "-preview" from the name of subpackages. |
---|
718 | |
---|
719 | * Wed Dec 05 2018 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.30.1-1 |
---|
720 | - new upstream release. |
---|
721 | - dropped Patch1. |
---|
722 | - added subpackages cargo, cargo-doc, rustformat-preview, rls-preview, clippy-preview and rust-analysis. |
---|
723 | |
---|
724 | * Fri Jan 05 2018 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.23.0-1 |
---|
725 | - Update to 1.23.0 (stable). |
---|
726 | |
---|
727 | * Tue Jan 02 2018 Tomohiro "Tomo-p" KATO <tomop@teamgedoh.net> - 1.23.0-0.beta1 |
---|
728 | - initial build for Vine Linux. |
---|
729 | - Update to 1.23.0-beta. |
---|
730 | - built a bootstrap rpm. |
---|
731 | |
---|
732 | * Thu Nov 23 2017 Josh Stone <jistone@redhat.com> - 1.22.1-1 |
---|
733 | - Update to 1.22.1. |
---|
734 | |
---|
735 | * Thu Oct 12 2017 Josh Stone <jistone@redhat.com> - 1.21.0-1 |
---|
736 | - Update to 1.21.0. |
---|
737 | |
---|
738 | * Mon Sep 11 2017 Josh Stone <jistone@redhat.com> - 1.20.0-2 |
---|
739 | - ABI fixes for ppc64 and s390x. |
---|
740 | |
---|
741 | * Thu Aug 31 2017 Josh Stone <jistone@redhat.com> - 1.20.0-1 |
---|
742 | - Update to 1.20.0. |
---|
743 | - Add a rust-src subpackage. |
---|
744 | |
---|
745 | * Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.19.0-4 |
---|
746 | - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild |
---|
747 | |
---|
748 | * Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.19.0-3 |
---|
749 | - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild |
---|
750 | |
---|
751 | * Mon Jul 24 2017 Josh Stone <jistone@redhat.com> - 1.19.0-2 |
---|
752 | - Use find-debuginfo.sh --keep-section .rustc |
---|
753 | |
---|
754 | * Thu Jul 20 2017 Josh Stone <jistone@redhat.com> - 1.19.0-1 |
---|
755 | - Update to 1.19.0. |
---|
756 | |
---|
757 | * Thu Jun 08 2017 Josh Stone <jistone@redhat.com> - 1.18.0-1 |
---|
758 | - Update to 1.18.0. |
---|
759 | |
---|
760 | * Mon May 08 2017 Josh Stone <jistone@redhat.com> - 1.17.0-2 |
---|
761 | - Move shared libraries back to libdir and symlink in rustlib |
---|
762 | |
---|
763 | * Thu Apr 27 2017 Josh Stone <jistone@redhat.com> - 1.17.0-1 |
---|
764 | - Update to 1.17.0. |
---|
765 | |
---|
766 | * Mon Mar 20 2017 Josh Stone <jistone@redhat.com> - 1.16.0-3 |
---|
767 | - Make rust-lldb arch-specific to deal with lldb deps |
---|
768 | |
---|
769 | * Fri Mar 17 2017 Josh Stone <jistone@redhat.com> - 1.16.0-2 |
---|
770 | - Limit rust-lldb arches |
---|
771 | |
---|
772 | * Thu Mar 16 2017 Josh Stone <jistone@redhat.com> - 1.16.0-1 |
---|
773 | - Update to 1.16.0. |
---|
774 | - Use rustbuild instead of the old makefiles. |
---|
775 | - Update bootstrapping to include rust-std and cargo. |
---|
776 | - Add a rust-lldb subpackage. |
---|
777 | |
---|
778 | * Thu Feb 09 2017 Josh Stone <jistone@redhat.com> - 1.15.1-1 |
---|
779 | - Update to 1.15.1. |
---|
780 | - Require rust-rpm-macros for new crate packaging. |
---|
781 | - Keep shared libraries under rustlib/, only debug-stripped. |
---|
782 | - Merge and clean up conditionals for epel7. |
---|
783 | |
---|
784 | * Fri Dec 23 2016 Josh Stone <jistone@redhat.com> - 1.14.0-2 |
---|
785 | - Rebuild without bootstrap binaries. |
---|
786 | |
---|
787 | * Thu Dec 22 2016 Josh Stone <jistone@redhat.com> - 1.14.0-1 |
---|
788 | - Update to 1.14.0. |
---|
789 | - Rewrite bootstrap logic to target specific arches. |
---|
790 | - Bootstrap ppc64, ppc64le, s390x. (thanks to Sinny Kumari for testing!) |
---|
791 | |
---|
792 | * Thu Nov 10 2016 Josh Stone <jistone@redhat.com> - 1.13.0-1 |
---|
793 | - Update to 1.13.0. |
---|
794 | - Use hardening flags for linking. |
---|
795 | - Split the standard library into its own package |
---|
796 | - Centralize rustlib/ under /usr/lib/ for multilib integration. |
---|
797 | |
---|
798 | * Thu Oct 20 2016 Josh Stone <jistone@redhat.com> - 1.12.1-1 |
---|
799 | - Update to 1.12.1. |
---|
800 | |
---|
801 | * Fri Oct 14 2016 Josh Stone <jistone@redhat.com> - 1.12.0-7 |
---|
802 | - Rebuild with LLVM 3.9. |
---|
803 | - Add ncurses-devel for llvm-config's -ltinfo. |
---|
804 | |
---|
805 | * Thu Oct 13 2016 Josh Stone <jistone@redhat.com> - 1.12.0-6 |
---|
806 | - Rebuild with llvm-static, preparing for 3.9 |
---|
807 | |
---|
808 | * Fri Oct 07 2016 Josh Stone <jistone@redhat.com> - 1.12.0-5 |
---|
809 | - Rebuild with fixed eu-strip (rhbz1380961) |
---|
810 | |
---|
811 | * Fri Oct 07 2016 Josh Stone <jistone@redhat.com> - 1.12.0-4 |
---|
812 | - Rebuild without bootstrap binaries. |
---|
813 | |
---|
814 | * Thu Oct 06 2016 Josh Stone <jistone@redhat.com> - 1.12.0-3 |
---|
815 | - Bootstrap aarch64. |
---|
816 | - Use jemalloc's MALLOC_CONF to work around #36944. |
---|
817 | - Apply pr36933 to really disable armv7hl NEON. |
---|
818 | |
---|
819 | * Sat Oct 01 2016 Josh Stone <jistone@redhat.com> - 1.12.0-2 |
---|
820 | - Protect .rustc from rpm stripping. |
---|
821 | |
---|
822 | * Fri Sep 30 2016 Josh Stone <jistone@redhat.com> - 1.12.0-1 |
---|
823 | - Update to 1.12.0. |
---|
824 | - Always use --local-rust-root, even for bootstrap binaries. |
---|
825 | - Remove the rebuild conditional - the build system now figures it out. |
---|
826 | - Let minidebuginfo do its thing, since metadata is no longer a note. |
---|
827 | - Let rust build its own compiler-rt builtins again. |
---|
828 | |
---|
829 | * Sat Sep 03 2016 Josh Stone <jistone@redhat.com> - 1.11.0-3 |
---|
830 | - Rebuild without bootstrap binaries. |
---|
831 | |
---|
832 | * Fri Sep 02 2016 Josh Stone <jistone@redhat.com> - 1.11.0-2 |
---|
833 | - Bootstrap armv7hl, with backported no-neon patch. |
---|
834 | |
---|
835 | * Wed Aug 24 2016 Josh Stone <jistone@redhat.com> - 1.11.0-1 |
---|
836 | - Update to 1.11.0. |
---|
837 | - Drop the backported patches. |
---|
838 | - Patch get-stage0.py to trust existing bootstrap binaries. |
---|
839 | - Use libclang_rt.builtins from compiler-rt, dodging llvm-static issues. |
---|
840 | - Use --local-rust-root to make sure the right bootstrap is used. |
---|
841 | |
---|
842 | * Sat Aug 13 2016 Josh Stone <jistone@redhat.com> 1.10.0-4 |
---|
843 | - Rebuild without bootstrap binaries. |
---|
844 | |
---|
845 | * Fri Aug 12 2016 Josh Stone <jistone@redhat.com> - 1.10.0-3 |
---|
846 | - Initial import into Fedora (#1356907), bootstrapped |
---|
847 | - Format license text as suggested in review. |
---|
848 | - Note how the tests already run in parallel. |
---|
849 | - Undefine _include_minidebuginfo, because it duplicates ".note.rustc". |
---|
850 | - Don't let checks fail the whole build. |
---|
851 | - Note that -doc can't be noarch, as rpmdiff doesn't allow variations. |
---|
852 | |
---|
853 | * Tue Jul 26 2016 Josh Stone <jistone@redhat.com> - 1.10.0-2 |
---|
854 | - Update -doc directory ownership, and mark its licenses. |
---|
855 | - Package and declare licenses for libbacktrace and hoedown. |
---|
856 | - Set bootstrap_base as a global. |
---|
857 | - Explicitly require python2. |
---|
858 | |
---|
859 | * Thu Jul 14 2016 Josh Stone <jistone@fedoraproject.org> - 1.10.0-1 |
---|
860 | - Initial package, bootstrapped |
---|