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

  ViewVC Help
Powered by ViewVC 1.1.30