/[packages]/cauldron/rust/current/SPECS/rust.spec
ViewVC logotype

Contents of /cauldron/rust/current/SPECS/rust.spec

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1724502 - (show annotations) (download)
Sun May 16 09:11:47 2021 UTC (2 years, 11 months ago) by akien
File size: 24364 byte(s)
Remove upstreamed patch10 (SILENT)
1 # (akien) This package is synced with Fedora / Josh Stone's spec.
2 # The aim is to work with them on a rust packaging policy we could share,
3 # so that we can ensure a good packaging and share the workload.
4
5
6 # Only x86_64 and i686 are Tier 1 platforms at this time.
7 # https://doc.rust-lang.org/nightly/rustc/platform-support.html
8 %global rust_arches x86_64 %ix86 armv7hl aarch64 ppc64 ppc64le s390x
9
10 # The channel can be stable, beta, or nightly
11 %{!?channel: %global channel stable}
12
13 # To bootstrap from scratch, set the channel and date from src/stage0.txt
14 # e.g. 1.10.0 wants rustc: 1.9.0-2016-05-24
15 # or nightly wants some beta-YYYY-MM-DD
16 # Note that cargo matches the program version here, not its crate version.
17 %global bootstrap_rust 1.51.0
18 %global bootstrap_cargo 1.51.0
19 %global bootstrap_channel 1.51.0
20 %global bootstrap_date 2021-03-25
21
22 # Only the specified arches will use bootstrap binaries.
23 #global bootstrap_arches %%{rust_arches}
24
25 # To bootstrap a compiler for a Tier 2 platform, we first need to build a
26 # compiler for a Tier 1 platform that targets the Tier 2 platform, then use
27 # the resulting compiler in a second build. Set bootstrap_build_arch to the
28 # Tier 1 arch for the first build, leave it undefined for the second build.
29 %bcond_with bootstrap_i586
30 %if %with bootstrap_i586
31 %ifarch i586
32 %global bootstrap_build_arch i686
33 %endif
34 %endif
35
36 # Using llvm-static may be helpful as an opt-in, e.g. to aid LLVM rebases.
37 %bcond_with llvm_static
38
39 # We can also choose to just use Rust's bundled LLVM, in case the system LLVM
40 # is insufficient. Rust currently requires LLVM 9.0+.
41 %bcond_with bundled_llvm
42 # (akien) Hacks below are needed on mga's buildsystem when we have to rebootstrap llvm.
43 ## Bundled LLVM has underlinking issues:
44 #%%global _disable_ld_no_undefined 1
45 #%%ifarch %%{arm} %%ix86
46 ## Decrease debuginfo verbosity to reduce memory consumption during final library linking
47 #%%global optflags %%(echo %%{optflags} | sed 's/-g /-g1 /')
48 #%%endif
49
50 # Requires stable libgit2 1.1
51 %if 0%{?fedora} >= 34 || 0%{?mageia} >= 8
52 %bcond_with bundled_libgit2
53 %else
54 %bcond_without bundled_libgit2
55 %endif
56
57 %if 0%{?rhel}
58 # Disable cargo->libgit2->libssh2 on RHEL, as it's not approved for FIPS (rhbz1732949)
59 %bcond_without disabled_libssh2
60 %else
61 %bcond_with disabled_libssh2
62 %endif
63
64 %if 0%{?rhel} && 0%{?rhel} < 8
65 %bcond_with curl_http2
66 %else
67 %bcond_without curl_http2
68 %endif
69
70 # LLDB isn't available everywhere...
71 %if 0%{?rhel} && 0%{?rhel} < 8
72 %bcond_with lldb
73 %else
74 %bcond_without lldb
75 %endif
76
77 %if 0%{?mageia}
78 # (akien) Added by tv in mga8/rust 1.37.0.
79 %global _python_bytecompile_extra 0
80 %endif
81
82 Name: rust
83 Version: 1.52.1
84 Release: %mkrel 1
85 Summary: The Rust Programming Language
86 %if 0%{?mageia}
87 Group: Development/Other
88 %endif
89 License: (ASL 2.0 or MIT) and (BSD and MIT)
90 # ^ written as: (rust itself) and (bundled libraries)
91 URL: https://www.rust-lang.org
92 ExclusiveArch: %{rust_arches}
93
94 %if "%{channel}" == "stable"
95 %global rustc_package rustc-%{version}-src
96 %else
97 %global rustc_package rustc-%{channel}-src
98 %endif
99 Source0: https://static.rust-lang.org/dist/%{rustc_package}.tar.xz
100
101 # This internal rust-abi change broke s390x -- revert for now.
102 # https://github.com/rust-lang/rust/issues/80810#issuecomment-781784032
103 Patch1: 0001-Revert-Auto-merge-of-79547.patch
104
105 # (akien) Those tests fail on armv7 - on Fedora too, and jistone ignores them
106 # https://github.com/rust-lang/rust/issues/83453
107 Patch11: rustc-1.50.0-allow_fail-armv7-instruction_set.patch
108
109 ### RHEL-specific patches below ###
110
111 # Disable cargo->libgit2->libssh2 on RHEL, as it's not approved for FIPS (rhbz1732949)
112 Patch100: rustc-1.48.0-disable-libssh2.patch
113
114 # libcurl on RHEL7 doesn't have http2, but since cargo requests it, curl-sys
115 # will try to build it statically -- instead we turn off the feature.
116 Patch101: rustc-1.51.0-disable-http2.patch
117
118 # kernel rh1410097 causes too-small stacks for PIE.
119 # (affects RHEL6 kernels when building for RHEL7)
120 Patch102: rustc-1.51.0-no-default-pie.patch
121
122
123 # Get the Rust triple for any arch.
124 %{lua: function rust_triple(arch)
125 local abi = "gnu"
126 if arch == "armv7hl" then
127 arch = "armv7"
128 abi = "gnueabihf"
129 elseif arch == "ppc64" then
130 arch = "powerpc64"
131 elseif arch == "ppc64le" then
132 arch = "powerpc64le"
133 elseif arch == "riscv64" then
134 arch = "riscv64gc"
135 end
136 return arch.."-unknown-linux-"..abi
137 end}
138
139 %if %defined bootstrap_build_arch
140 %global rust_triple %{lua: print(rust_triple(rpm.expand("%{bootstrap_build_arch}")))}
141 %global target_triple %{lua: print(rust_triple(rpm.expand("%{_target_cpu}")))}
142 %else
143 %global rust_triple %{lua: print(rust_triple(rpm.expand("%{_target_cpu}")))}
144 %global target_triple %{rust_triple}
145 %endif
146
147 %if %defined bootstrap_arches
148 # For each bootstrap arch, add an additional binary Source.
149 # Also define bootstrap_source just for the current target.
150 %{lua: do
151 local bootstrap_arches = {}
152 for arch in string.gmatch(rpm.expand("%{bootstrap_arches}"), "%S+") do
153 table.insert(bootstrap_arches, arch)
154 end
155 local base = rpm.expand("https://static.rust-lang.org/dist/%{bootstrap_date}"
156 .."/rust-%{bootstrap_channel}")
157 local target_arch = rpm.expand("%{_target_cpu}")
158 for i, arch in ipairs(bootstrap_arches) do
159 print(string.format("Source%d: %s-%s.tar.xz\n",
160 i, base, rust_triple(arch)))
161 if arch == target_arch then
162 rpm.define("bootstrap_source "..i)
163 end
164 end
165 end}
166 %endif
167
168 %ifarch %{bootstrap_arches}
169 %global bootstrap_root rust-%{bootstrap_channel}-%{rust_triple}
170 %global local_rust_root %{_builddir}/%{bootstrap_root}/usr
171 Provides: bundled(%{name}-bootstrap) = %{bootstrap_rust}
172 %else
173 BuildRequires: cargo >= %{bootstrap_cargo}
174 %if (0%{?rhel} && 0%{?rhel} < 8) || 0%{?mageia}
175 BuildRequires: %{name} >= %{bootstrap_rust}
176 BuildConflicts: %{name} > %{version}
177 %else
178 BuildRequires: (%{name} >= %{bootstrap_rust} with %{name} <= %{version})
179 %endif
180 %global local_rust_root %{_prefix}
181 %endif
182
183 BuildRequires: make
184 BuildRequires: gcc
185 BuildRequires: gcc-c++
186 BuildRequires: ncurses-devel
187 BuildRequires: curl
188 # explicit curl-devel to avoid httpd24-curl (rhbz1540167)
189 BuildRequires: curl-devel
190 BuildRequires: pkgconfig(libcurl)
191 BuildRequires: pkgconfig(liblzma)
192 BuildRequires: pkgconfig(openssl)
193 BuildRequires: pkgconfig(zlib)
194
195 %if %without bundled_libgit2
196 BuildRequires: pkgconfig(libgit2) >= 1.1.0
197 %endif
198
199 %if %{without disabled_libssh2}
200 # needs libssh2_userauth_publickey_frommemory
201 BuildRequires: pkgconfig(libssh2) >= 1.6.0
202 %endif
203
204 %global python python3
205 BuildRequires: %{python}
206
207 %if %with bundled_llvm
208 BuildRequires: cmake3 >= 3.13.4
209 Provides: bundled(llvm) = 12.0.0
210 %else
211 BuildRequires: cmake >= 2.8.11
212 %if 0%{?epel} == 7
213 %global llvm llvm9.0
214 %endif
215 %if 0%{?fedora} == 34
216 # aarch64 is hanging with LLVM 12-rc1, but it's fine with 12-final on rawhide.
217 # Fall back to LLVM 11 on f34 for now...
218 %global llvm llvm11
219 %endif
220 %if %defined llvm
221 %global llvm_root %{_libdir}/%{llvm}
222 %else
223 %global llvm llvm
224 %global llvm_root %{_prefix}
225 %endif
226 BuildRequires: %{llvm}-devel >= 9.0
227 %if %with llvm_static
228 BuildRequires: %{llvm}-static
229 BuildRequires: libffi-devel
230 %endif
231 %endif
232
233 # make check needs "ps" for src/test/run-pass/wait-forked-but-failed-child.rs
234 BuildRequires: procps-ng
235
236 # debuginfo-gdb tests need gdb
237 BuildRequires: gdb
238
239 # Virtual provides for folks who attempt "dnf install rustc"
240 Provides: rustc = %{version}-%{release}
241 Provides: rustc%{?_isa} = %{version}-%{release}
242
243 # Always require our exact standard library
244 Requires: %{name}-std-static%{?_isa} = %{version}-%{release}
245
246 # The C compiler is needed at runtime just for linking. Someday rustc might
247 # invoke the linker directly, and then we'll only need binutils.
248 # https://github.com/rust-lang/rust/issues/11937
249 %if 0%{?mageia}
250 Requires: gcc
251 %else
252 Requires: /usr/bin/cc
253 %endif
254
255 # ALL Rust libraries are private, because they don't keep an ABI.
256 %global _privatelibs lib(.*-[[:xdigit:]]{16}*|rustc.*)[.]so.*
257 %global __provides_exclude ^(%{_privatelibs})$
258 %global __requires_exclude ^(%{_privatelibs})$
259 %global __provides_exclude_from ^(%{_docdir}|%{rustlibdir}/src)/.*$
260 %global __requires_exclude_from ^(%{_docdir}|%{rustlibdir}/src)/.*$
261
262 # While we don't want to encourage dynamic linking to Rust shared libraries, as
263 # there's no stable ABI, we still need the unallocated metadata (.rustc) to
264 # support custom-derive plugins like #[proc_macro_derive(Foo)].
265 %if 0%{?rhel} && 0%{?rhel} < 8 || 0%{?mageia} == 7
266 # eu-strip is very eager by default, so we have to limit it to -g, only debugging symbols.
267 %global _find_debuginfo_opts -g
268 %undefine _include_minidebuginfo
269 %else
270 # Newer find-debuginfo.sh supports --keep-section, which is preferable. rhbz1465997
271 %global _find_debuginfo_opts --keep-section .rustc
272 %endif
273
274 # Use hardening ldflags.
275 %global rustflags -Clink-arg=-Wl,-z,relro,-z,now
276
277 %if %{without bundled_llvm}
278 %if "%{llvm_root}" == "%{_prefix}" || 0%{?scl:1}
279 %global llvm_has_filecheck 1
280 %endif
281 %endif
282
283 %description
284 Rust is a systems programming language that runs blazingly fast, prevents
285 segfaults, and guarantees thread safety.
286
287 This package includes the Rust compiler and documentation generator.
288
289
290 %package std-static
291 Summary: Standard library for Rust
292
293 %description std-static
294 This package includes the standard libraries for building applications
295 written in Rust.
296
297
298 %package debugger-common
299 Summary: Common debugger pretty printers for Rust
300 BuildArch: noarch
301
302 %description debugger-common
303 This package includes the common functionality for %{name}-gdb and %{name}-lldb.
304
305
306 %package gdb
307 Summary: GDB pretty printers for Rust
308 BuildArch: noarch
309 Requires: gdb
310 Requires: %{name}-debugger-common = %{version}-%{release}
311
312 %description gdb
313 This package includes the rust-gdb script, which allows easier debugging of Rust
314 programs.
315
316
317 %if %with lldb
318
319 %package lldb
320 Summary: LLDB pretty printers for Rust
321 BuildArch: noarch
322 Requires: lldb
323 Requires: %{python}-lldb
324 Requires: %{name}-debugger-common = %{version}-%{release}
325
326 %description lldb
327 This package includes the rust-lldb script, which allows easier debugging of Rust
328 programs.
329
330 %endif
331
332
333 %package doc
334 Summary: Documentation for Rust
335 # NOT BuildArch: noarch
336 # Note, while docs are mostly noarch, some things do vary by target_arch.
337 # Koji will fail the build in rpmdiff if two architectures build a noarch
338 # subpackage differently, so instead we have to keep its arch.
339
340 %description doc
341 This package includes HTML documentation for the Rust programming language and
342 its standard library.
343
344
345 %package -n cargo
346 Summary: Rust's package manager and build tool
347 %if %with bundled_libgit2
348 Provides: bundled(libgit2) = 1.1.0
349 %endif
350 # For tests:
351 BuildRequires: git
352 # Cargo is not much use without Rust
353 Requires: rust
354
355 # "cargo vendor" is a builtin command starting with 1.37. The Obsoletes and
356 # Provides are mostly relevant to RHEL, but harmless to have on Fedora/etc. too
357 Obsoletes: cargo-vendor <= 0.1.23
358 Provides: cargo-vendor = %{version}-%{release}
359
360 %description -n cargo
361 Cargo is a tool that allows Rust projects to declare their various dependencies
362 and ensure that you'll always get a repeatable build.
363
364
365 %package -n cargo-doc
366 Summary: Documentation for Cargo
367 BuildArch: noarch
368 # Cargo no longer builds its own documentation
369 # https://github.com/rust-lang/cargo/pull/4904
370 Requires: rust-doc = %{version}-%{release}
371
372 %description -n cargo-doc
373 This package includes HTML documentation for Cargo.
374
375
376 %package -n rustfmt
377 Summary: Tool to find and fix Rust formatting issues
378 Requires: cargo
379
380 # The component/package was rustfmt-preview until Rust 1.31.
381 Obsoletes: rustfmt-preview < 1.0.0
382 Provides: rustfmt-preview = %{version}-%{release}
383
384 %description -n rustfmt
385 A tool for formatting Rust code according to style guidelines.
386
387
388 %package -n rls
389 Summary: Rust Language Server for IDE integration
390 %if %with bundled_libgit2
391 Provides: bundled(libgit2) = 1.1.0
392 %endif
393 Requires: rust-analysis
394 # /usr/bin/rls is dynamically linked against internal rustc libs
395 Requires: %{name}%{?_isa} = %{version}-%{release}
396
397 # The component/package was rls-preview until Rust 1.31.
398 Obsoletes: rls-preview < 1.31.6
399 Provides: rls-preview = %{version}-%{release}
400
401 %description -n rls
402 The Rust Language Server provides a server that runs in the background,
403 providing IDEs, editors, and other tools with information about Rust programs.
404 It supports functionality such as 'goto definition', symbol search,
405 reformatting, and code completion, and enables renaming and refactorings.
406
407
408 %package -n clippy
409 Summary: Lints to catch common mistakes and improve your Rust code
410 Requires: cargo
411 # /usr/bin/clippy-driver is dynamically linked against internal rustc libs
412 Requires: %{name}%{?_isa} = %{version}-%{release}
413
414 # The component/package was clippy-preview until Rust 1.31.
415 Obsoletes: clippy-preview <= 0.0.212
416 Provides: clippy-preview = %{version}-%{release}
417
418 %description -n clippy
419 A collection of lints to catch common mistakes and improve your Rust code.
420
421
422 %package src
423 Summary: Sources for the Rust standard library
424 BuildArch: noarch
425
426 %description src
427 This package includes source files for the Rust standard library. It may be
428 useful as a reference for code completion tools in various editors.
429
430
431 %package analysis
432 Summary: Compiler analysis data for the Rust standard library
433 Requires: rust-std-static%{?_isa} = %{version}-%{release}
434
435 %description analysis
436 This package contains analysis data files produced with rustc's -Zsave-analysis
437 feature for the Rust standard library. The RLS (Rust Language Server) uses this
438 data to provide information about the Rust standard library.
439
440
441 %prep
442
443 %ifarch %{bootstrap_arches}
444 %setup -q -n %{bootstrap_root} -T -b %{bootstrap_source}
445 ./install.sh --components=cargo,rustc,rust-std-%{rust_triple} \
446 --prefix=%{local_rust_root} --disable-ldconfig
447 test -f '%{local_rust_root}/bin/cargo'
448 test -f '%{local_rust_root}/bin/rustc'
449 %endif
450
451 %setup -q -n %{rustc_package}
452
453 %patch1 -p1
454
455 %patch11 -p1
456
457 %if %with disabled_libssh2
458 %patch100 -p1
459 %endif
460
461 %if %without curl_http2
462 %patch101 -p1
463 rm -rf vendor/libnghttp2-sys/
464 %endif
465
466 %if 0%{?rhel} && 0%{?rhel} < 8
467 %patch102 -p1
468 %endif
469
470 %if "%{python}" != "python3"
471 # Use our preferred python first
472 sed -i.try-python -e '/^try python3 /i try "%{python}" "$@"' ./configure
473 %endif
474
475 %if %without bundled_llvm
476 rm -rf src/llvm-project/
477 mkdir -p src/llvm-project/libunwind/
478 %endif
479
480 # Remove other unused vendored libraries
481 rm -rf vendor/curl-sys/curl/
482 rm -rf vendor/jemalloc-sys/jemalloc/
483 rm -rf vendor/libssh2-sys/libssh2/
484 rm -rf vendor/libz-sys/src/zlib/
485 rm -rf vendor/libz-sys/src/zlib-ng/
486 rm -rf vendor/lzma-sys/xz-*/
487 rm -rf vendor/openssl-src/openssl/
488
489 %if %without bundled_libgit2
490 rm -rf vendor/libgit2-sys/libgit2/
491 %endif
492
493 %if %with disabled_libssh2
494 rm -rf vendor/libssh2-sys/
495 %endif
496
497 # This only affects the transient rust-installer, but let it use our dynamic xz-libs
498 sed -i.lzma -e '/LZMA_API_STATIC/d' src/bootstrap/tool.rs
499
500 %if %{with bundled_llvm} && 0%{?epel} == 7
501 mkdir -p cmake-bin
502 ln -s /usr/bin/cmake3 cmake-bin/cmake
503 %global cmake_path $PWD/cmake-bin
504 %endif
505
506 %if %{without bundled_llvm} && %{with llvm_static}
507 # Static linking to distro LLVM needs to add -lffi
508 # https://github.com/rust-lang/rust/issues/34486
509 sed -i.ffi -e '$a #[link(name = "ffi")] extern {}' \
510 compiler/rustc_llvm/src/lib.rs
511 %endif
512
513 # The configure macro will modify some autoconf-related files, which upsets
514 # cargo when it tries to verify checksums in those files. If we just truncate
515 # that file list, cargo won't have anything to complain about.
516 find vendor -name .cargo-checksum.json \
517 -exec sed -i.uncheck -e 's/"files":{[^}]*}/"files":{ }/' '{}' '+'
518
519 # Sometimes Rust sources start with #![...] attributes, and "smart" editors think
520 # it's a shebang and make them executable. Then brp-mangle-shebangs gets upset...
521 find -name '*.rs' -type f -perm /111 -exec chmod -v -x '{}' '+'
522
523 # Set up shared environment variables for build/install/check
524 %global rust_env RUSTFLAGS="%{rustflags}"
525 %if 0%{?cmake_path:1}
526 %global rust_env %{rust_env} PATH="%{cmake_path}:$PATH"
527 %endif
528 %if %without bundled_libgit2
529 # convince libgit2-sys to use the distro libgit2
530 %global rust_env %{rust_env} LIBGIT2_SYS_USE_PKG_CONFIG=1
531 %endif
532 %if %without disabled_libssh2
533 # convince libssh2-sys to use the distro libssh2
534 %global rust_env %{rust_env} LIBSSH2_SYS_USE_PKG_CONFIG=1
535 %endif
536
537
538 %build
539 export %{rust_env}
540
541 # We're going to override --libdir when configuring to get rustlib into a
542 # common path, but we'll fix the shared libraries during install.
543 %global common_libdir %{_prefix}/lib
544 %global rustlibdir %{common_libdir}/rustlib
545
546 %ifarch aarch64 %{arm} %{ix86} s390x
547 # full debuginfo is exhausting memory; just do libstd for now
548 # https://github.com/rust-lang/rust/issues/45854
549 %if 0%{?rhel} && 0%{?rhel} < 8
550 # Older rpmbuild didn't work with partial debuginfo coverage.
551 %global debug_package %{nil}
552 %define enable_debuginfo --debuginfo-level=0
553 %else
554 %define enable_debuginfo --debuginfo-level=0 --debuginfo-level-std=2
555 %endif
556 %else
557 %define enable_debuginfo --debuginfo-level=2
558 %endif
559
560 # We want the best optimization for std, but it caused problems for rpm-ostree
561 # on ppc64le to have all of the compiler_builtins in a single object:
562 # https://bugzilla.redhat.com/show_bug.cgi?id=1713090
563 %ifnarch %{power64}
564 %define codegen_units_std --set rust.codegen-units-std=1
565 %endif
566
567 # Some builders have relatively little memory for their CPU count.
568 # At least 2GB per CPU is a good rule of thumb for building rustc.
569 ncpus=$(/usr/bin/getconf _NPROCESSORS_ONLN)
570 max_cpus=$(( ($(free -g | awk '/^Mem:/{print $2}') + 1) / 2 ))
571 if [ "$max_cpus" -ge 1 -a "$max_cpus" -lt "$ncpus" ]; then
572 ncpus="$max_cpus"
573 fi
574
575 %configure --disable-option-checking \
576 --libdir=%{common_libdir} \
577 --build=%{rust_triple} --host=%{rust_triple} --target=%{target_triple} \
578 --python=%{python} \
579 --local-rust-root=%{local_rust_root} \
580 %{!?with_bundled_llvm: --llvm-root=%{llvm_root} \
581 %{!?llvm_has_filecheck: --disable-codegen-tests} \
582 %{!?with_llvm_static: --enable-llvm-link-shared } } \
583 --disable-rpath \
584 %{enable_debuginfo} \
585 --enable-extended \
586 --tools=analysis,cargo,clippy,rls,rustfmt,src \
587 --enable-vendor \
588 --enable-verbose-tests \
589 %{?codegen_units_std} \
590 --release-channel=%{channel} \
591 --release-description="%{?mageia:Mageia }%{?rhel:Red Hat }%{version}-%{release}"
592
593 %{python} ./x.py build -j "$ncpus" --stage 2
594 %{python} ./x.py doc --stage 2
595
596
597 %install
598 export %{rust_env}
599
600 DESTDIR=%{buildroot} %{python} ./x.py install
601
602 # Make sure the shared libraries are in the proper libdir
603 %if "%{_libdir}" != "%{common_libdir}"
604 mkdir -p %{buildroot}%{_libdir}
605 find %{buildroot}%{common_libdir} -maxdepth 1 -type f -name '*.so' \
606 -exec mv -v -t %{buildroot}%{_libdir} '{}' '+'
607 %endif
608
609 # The shared libraries should be executable for debuginfo extraction.
610 find %{buildroot}%{_libdir} -maxdepth 1 -type f -name '*.so' \
611 -exec chmod -v +x '{}' '+'
612
613 # The libdir libraries are identical to those under rustlib/. It's easier on
614 # library loading if we keep them in libdir, but we do need them in rustlib/
615 # to support dynamic linking for compiler plugins, so we'll symlink.
616 (cd "%{buildroot}%{rustlibdir}/%{rust_triple}/lib" &&
617 find ../../../../%{_lib} -maxdepth 1 -name '*.so' |
618 while read lib; do
619 if [ -f "${lib##*/}" ]; then
620 # make sure they're actually identical!
621 cmp "$lib" "${lib##*/}"
622 ln -v -f -s -t . "$lib"
623 fi
624 done)
625
626 # Remove installer artifacts (manifests, uninstall scripts, etc.)
627 find %{buildroot}%{rustlibdir} -maxdepth 1 -type f -exec rm -v '{}' '+'
628
629 # Remove backup files from %%configure munging
630 find %{buildroot}%{rustlibdir} -type f -name '*.orig' -exec rm -v '{}' '+'
631
632 # https://fedoraproject.org/wiki/Changes/Make_ambiguous_python_shebangs_error
633 # We don't actually need to ship any of those python scripts in rust-src anyway.
634 find %{buildroot}%{rustlibdir}/src -type f -name '*.py' -exec rm -v '{}' '+'
635
636 # FIXME: __os_install_post will strip the rlibs
637 # -- should we find a way to preserve debuginfo?
638
639 # Remove unwanted documentation files (we already package them)
640 rm -f %{buildroot}%{_docdir}/%{name}/README.md
641 rm -f %{buildroot}%{_docdir}/%{name}/COPYRIGHT
642 rm -f %{buildroot}%{_docdir}/%{name}/LICENSE
643 rm -f %{buildroot}%{_docdir}/%{name}/LICENSE-APACHE
644 rm -f %{buildroot}%{_docdir}/%{name}/LICENSE-MIT
645 rm -f %{buildroot}%{_docdir}/%{name}/LICENSE-THIRD-PARTY
646 rm -f %{buildroot}%{_docdir}/%{name}/*.old
647
648 # Sanitize the HTML documentation
649 find %{buildroot}%{_docdir}/%{name}/html -empty -delete
650 find %{buildroot}%{_docdir}/%{name}/html -type f -exec chmod -x '{}' '+'
651
652 # Create the path for crate-devel packages
653 mkdir -p %{buildroot}%{_datadir}/cargo/registry
654
655 # Cargo no longer builds its own documentation
656 # https://github.com/rust-lang/cargo/pull/4904
657 mkdir -p %{buildroot}%{_docdir}/cargo
658 ln -sT ../rust/html/cargo/ %{buildroot}%{_docdir}/cargo/html
659
660 %if %without lldb
661 rm -f %{buildroot}%{_bindir}/rust-lldb
662 rm -f %{buildroot}%{rustlibdir}/etc/lldb_*
663 %endif
664
665 # We don't want Rust copies of LLVM tools (rust-lld, rust-llvm-dwp)
666 rm -f %{buildroot}%{rustlibdir}/%{rust_triple}/bin/rust-ll*
667
668
669 %check
670 export %{rust_env}
671
672 # The results are not stable on koji, so mask errors and just log it.
673 %{python} ./x.py test --no-fail-fast --stage 2 || :
674 %{python} ./x.py test --no-fail-fast --stage 2 cargo || :
675 %{python} ./x.py test --no-fail-fast --stage 2 clippy || :
676 %{python} ./x.py test --no-fail-fast --stage 2 rls || :
677 %{python} ./x.py test --no-fail-fast --stage 2 rustfmt || :
678
679
680 %{?ldconfig_scriptlets}
681
682
683 %files
684 %license COPYRIGHT LICENSE-APACHE LICENSE-MIT
685 %doc README.md
686 %{_bindir}/rustc
687 %{_bindir}/rustdoc
688 %{_libdir}/*.so
689 %{_mandir}/man1/rustc.1*
690 %{_mandir}/man1/rustdoc.1*
691 %dir %{rustlibdir}
692 %dir %{rustlibdir}/%{rust_triple}
693 %dir %{rustlibdir}/%{rust_triple}/lib
694 %{rustlibdir}/%{rust_triple}/lib/*.so
695 %if %defined bootstrap_build_arch
696 %dir %{rustlibdir}/%{target_triple}
697 %dir %{rustlibdir}/%{target_triple}/lib
698 %{rustlibdir}/%{target_triple}/lib/*.so
699 %endif
700
701
702 %files std-static
703 %dir %{rustlibdir}
704 %dir %{rustlibdir}/%{rust_triple}
705 %dir %{rustlibdir}/%{rust_triple}/lib
706 %{rustlibdir}/%{rust_triple}/lib/*.rlib
707 %if %defined bootstrap_build_arch
708 %dir %{rustlibdir}/%{target_triple}
709 %dir %{rustlibdir}/%{target_triple}/lib
710 %{rustlibdir}/%{target_triple}/lib/*.rlib
711 %endif
712
713
714 %files debugger-common
715 %dir %{rustlibdir}
716 %dir %{rustlibdir}/etc
717 %{rustlibdir}/etc/rust_*.py*
718
719
720 %files gdb
721 %{_bindir}/rust-gdb
722 %{rustlibdir}/etc/gdb_*
723 %exclude %{_bindir}/rust-gdbgui
724
725
726 %if %with lldb
727 %files lldb
728 %{_bindir}/rust-lldb
729 %{rustlibdir}/etc/lldb_*
730 %endif
731
732
733 %files doc
734 %docdir %{_docdir}/%{name}
735 %dir %{_docdir}/%{name}
736 %dir %{_docdir}/%{name}/html
737 %{_docdir}/%{name}/html/*/
738 %{_docdir}/%{name}/html/*.html
739 %{_docdir}/%{name}/html/*.css
740 %{_docdir}/%{name}/html/*.js
741 %{_docdir}/%{name}/html/*.png
742 %{_docdir}/%{name}/html/*.svg
743 %{_docdir}/%{name}/html/*.woff
744 %{_docdir}/%{name}/html/*.woff2
745 %license %{_docdir}/%{name}/html/*.txt
746 %license %{_docdir}/%{name}/html/*.md
747
748
749 %files -n cargo
750 %license src/tools/cargo/LICENSE-APACHE src/tools/cargo/LICENSE-MIT src/tools/cargo/LICENSE-THIRD-PARTY
751 %doc src/tools/cargo/README.md
752 %{_bindir}/cargo
753 %{_libexecdir}/cargo*
754 %{_mandir}/man1/cargo*.1*
755 %{_sysconfdir}/bash_completion.d/cargo
756 %{_datadir}/zsh/site-functions/_cargo
757 %dir %{_datadir}/cargo
758 %dir %{_datadir}/cargo/registry
759
760
761 %files -n cargo-doc
762 %docdir %{_docdir}/cargo
763 %dir %{_docdir}/cargo
764 %{_docdir}/cargo/html
765
766
767 %files -n rustfmt
768 %{_bindir}/rustfmt
769 %{_bindir}/cargo-fmt
770 %doc src/tools/rustfmt/{README,CHANGELOG,Configurations}.md
771 %license src/tools/rustfmt/LICENSE-{APACHE,MIT}
772
773
774 %files -n rls
775 %{_bindir}/rls
776 %doc src/tools/rls/{README.md,COPYRIGHT,debugging.md}
777 %license src/tools/rls/LICENSE-{APACHE,MIT}
778
779
780 %files -n clippy
781 %{_bindir}/cargo-clippy
782 %{_bindir}/clippy-driver
783 %doc src/tools/clippy/{README.md,CHANGELOG.md}
784 %license src/tools/clippy/LICENSE-{APACHE,MIT}
785
786
787 %files src
788 %dir %{rustlibdir}
789 %{rustlibdir}/src
790
791
792 %files analysis
793 %{rustlibdir}/%{rust_triple}/analysis/
794 %if %defined bootstrap_build_arch
795 %{rustlibdir}/%{target_triple}/analysis/
796 %endif

  ViewVC Help
Powered by ViewVC 1.1.30