From cb4fc55885d6a205693f812552ba48b5a25ac1e7 Mon Sep 17 00:00:00 2001 From: basebuilder_pel7x64builder0 Date: Mon, 31 Aug 2020 17:27:46 +0200 Subject: [PATCH] rust pre update Signed-off-by: basebuilder_pel7x64builder0 --- SPECS/rust.spec | 698 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 600 insertions(+), 98 deletions(-) diff --git a/SPECS/rust.spec b/SPECS/rust.spec index c8bc7511..a4070b24 100644 --- a/SPECS/rust.spec +++ b/SPECS/rust.spec @@ -8,49 +8,54 @@ # To bootstrap from scratch, set the channel and date from src/stage0.txt # e.g. 1.10.0 wants rustc: 1.9.0-2016-05-24 # or nightly wants some beta-YYYY-MM-DD -%global bootstrap_rust 1.18.0 -%global bootstrap_cargo 0.19.0 -%global bootstrap_channel %{bootstrap_rust} -%global bootstrap_date 2017-06-08 +# Note that cargo matches the program version here, not its crate version. +%global bootstrap_rust 1.45.2 +%global bootstrap_cargo 1.45.2 +%global bootstrap_channel 1.45.2 +%global bootstrap_date 2020-08-03 # Only the specified arches will use bootstrap binaries. #global bootstrap_arches %%{rust_arches} -# We generally don't want llvm-static present at all, since llvm-config will -# make us link statically. But we can opt in, e.g. to aid LLVM rebases. -# FIXME: LLVM 3.9 prefers shared linking now! Which is good, but next time we -# *want* static we'll have to force it with "llvm-config --link-static". -# See also https://github.com/rust-lang/rust/issues/36854 -# The new rustbuild accepts `--enable-llvm-link-shared`, else links static. +# Using llvm-static may be helpful as an opt-in, e.g. to aid LLVM rebases. %bcond_with llvm_static # We can also choose to just use Rust's bundled LLVM, in case the system LLVM -# is insufficient. Rust currently requires LLVM 3.7+. -%if 0%{?rhel} && !0%{?epel} -%bcond_without bundled_llvm -%else +# is insufficient. Rust currently requires LLVM 8.0+. %bcond_with bundled_llvm -%endif -# LLDB only works on some architectures -%ifarch %{arm} aarch64 %{ix86} x86_64 -# LLDB isn't available everywhere... -%if !0%{?rhel} -%bcond_without lldb +# Requires stable libgit2 1.0 +%if 0%{?fedora} >= 32 +%bcond_with bundled_libgit2 %else -%bcond_with lldb +%bcond_without bundled_libgit2 %endif + +%if 0%{?rhel} +# Disable cargo->libgit2->libssh2 on RHEL, as it's not approved for FIPS (rhbz1732949) +%bcond_without disabled_libssh2 %else -%bcond_with lldb +%bcond_with disabled_libssh2 %endif +%if 0%{?rhel} && 0%{?rhel} < 8 +%bcond_with curl_http2 +%else +%bcond_without curl_http2 +%endif +# LLDB isn't available everywhere... +%if 0%{?rhel} && 0%{?rhel} < 8 +%bcond_with lldb +%else +%bcond_without lldb +%endif Name: rust -Version: 1.19.0 -Release: 1%{?dist} +Version: 1.46.0 +Release: 2%{?dist} Summary: The Rust Programming Language -License: (ASL 2.0 or MIT) and (BSD and ISC and MIT) +License: (ASL 2.0 or MIT) and (BSD and MIT) # ^ written as: (rust itself) and (bundled libraries) URL: https://www.rust-lang.org ExclusiveArch: %{rust_arches} @@ -62,8 +67,24 @@ ExclusiveArch: %{rust_arches} %endif Source0: https://static.rust-lang.org/dist/%{rustc_package}.tar.xz -Patch1: rust-1.19.0-43072-stack-guard.patch -Patch2: rust-1.19.0-43297-configure-debuginfo.patch +# https://github.com/rust-lang/cargo/pull/8598 +Patch1: 0001-Fix-jobserver_exists-test-on-single-cpu-systems.patch +# https://github.com/rust-lang/cargo/pull/8657 (backported) +Patch2: 0002-Fix-LTO-with-doctests.patch + +### RHEL-specific patches below ### + +# Disable cargo->libgit2->libssh2 on RHEL, as it's not approved for FIPS (rhbz1732949) +Patch100: rustc-1.42.0-disable-libssh2.patch + +# libcurl on RHEL7 doesn't have http2, but since cargo requests it, curl-sys +# will try to build it statically -- instead we turn off the feature. +Patch101: rustc-1.45.0-disable-http2.patch + +# kernel rh1410097 causes too-small stacks for PIE. +# (affects RHEL6 kernels when building for RHEL7) +Patch102: rustc-1.45.0-no-default-pie.patch + # Get the Rust triple for any arch. %{lua: function rust_triple(arch) @@ -75,6 +96,8 @@ Patch2: rust-1.19.0-43297-configure-debuginfo.patch arch = "powerpc64" elseif arch == "ppc64le" then arch = "powerpc64le" + elseif arch == "riscv64" then + arch = "riscv64gc" end return arch.."-unknown-linux-"..abi end} @@ -93,7 +116,7 @@ end} .."/rust-%{bootstrap_channel}") local target_arch = rpm.expand("%{_target_cpu}") for i, arch in ipairs(bootstrap_arches) do - print(string.format("Source%d: %s-%s.tar.gz\n", + print(string.format("Source%d: %s-%s.tar.xz\n", i, base, rust_triple(arch))) if arch == target_arch then rpm.define("bootstrap_source "..i) @@ -108,8 +131,12 @@ end} Provides: bundled(%{name}-bootstrap) = %{bootstrap_rust} %else BuildRequires: cargo >= %{bootstrap_cargo} +%if 0%{?rhel} && 0%{?rhel} < 8 BuildRequires: %{name} >= %{bootstrap_rust} BuildConflicts: %{name} > %{version} +%else +BuildRequires: (%{name} >= %{bootstrap_rust} with %{name} <= %{version}) +%endif %global local_rust_root %{_prefix} %endif @@ -117,28 +144,44 @@ BuildRequires: make BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: ncurses-devel -BuildRequires: zlib-devel -BuildRequires: python2 BuildRequires: curl +# explicit curl-devel to avoid httpd24-curl (rhbz1540167) +BuildRequires: curl-devel +BuildRequires: pkgconfig(libcurl) +BuildRequires: pkgconfig(liblzma) +BuildRequires: pkgconfig(openssl) +BuildRequires: pkgconfig(zlib) + +%if %without bundled_libgit2 +BuildRequires: pkgconfig(libgit2) >= 1.0.0 +%endif + +%if %{without disabled_libssh2} && %{without bundled_libssh2} +# needs libssh2_userauth_publickey_frommemory +BuildRequires: pkgconfig(libssh2) >= 1.6.0 +%endif + +%global python python3 +BuildRequires: %{python} %if %with bundled_llvm -BuildRequires: cmake3 -Provides: bundled(llvm) = 3.9 +BuildRequires: cmake3 >= 3.4.3 +Provides: bundled(llvm) = 10.0.1 %else -%if 0%{?epel} -%global llvm llvm3.9 +BuildRequires: cmake >= 2.8.11 +%if 0%{?epel} == 7 +%global llvm llvm9.0 +%endif +%if %defined llvm %global llvm_root %{_libdir}/%{llvm} %else %global llvm llvm %global llvm_root %{_prefix} %endif -BuildRequires: %{llvm}-devel >= 3.7 +BuildRequires: %{llvm}-devel >= 8.0 %if %with llvm_static BuildRequires: %{llvm}-static BuildRequires: libffi-devel -%else -# Make sure llvm-config doesn't see it. -BuildConflicts: %{llvm}-static %endif %endif @@ -149,10 +192,7 @@ BuildRequires: procps-ng BuildRequires: gdb # TODO: work on unbundling these! -Provides: bundled(hoedown) = 3.0.5 -Provides: bundled(jquery) = 2.1.4 -Provides: bundled(libbacktrace) = 6.1.0 -Provides: bundled(miniz) = 1.14 +Provides: bundled(libbacktrace) = 1.0.20200219 # Virtual provides for folks who attempt "dnf install rustc" Provides: rustc = %{version}-%{release} @@ -164,28 +204,34 @@ Requires: %{name}-std-static%{?_isa} = %{version}-%{release} # The C compiler is needed at runtime just for linking. Someday rustc might # invoke the linker directly, and then we'll only need binutils. # https://github.com/rust-lang/rust/issues/11937 -Requires: gcc +Requires: /usr/bin/cc # ALL Rust libraries are private, because they don't keep an ABI. -%global _privatelibs lib.*-[[:xdigit:]]*[.]so.* +%global _privatelibs lib(.*-[[:xdigit:]]{16}*|rustc.*)[.]so.* %global __provides_exclude ^(%{_privatelibs})$ %global __requires_exclude ^(%{_privatelibs})$ -%global __provides_exclude_from ^%{_docdir}/.*$ -%global __requires_exclude_from ^%{_docdir}/.*$ +%global __provides_exclude_from ^(%{_docdir}|%{rustlibdir}/src)/.*$ +%global __requires_exclude_from ^(%{_docdir}|%{rustlibdir}/src)/.*$ # While we don't want to encourage dynamic linking to Rust shared libraries, as # there's no stable ABI, we still need the unallocated metadata (.rustc) to -# support custom-derive plugins like #[proc_macro_derive(Foo)]. But eu-strip is -# very eager by default, so we have to limit it to -g, only debugging symbols. +# support custom-derive plugins like #[proc_macro_derive(Foo)]. +%if 0%{?rhel} && 0%{?rhel} < 8 +# eu-strip is very eager by default, so we have to limit it to -g, only debugging symbols. %global _find_debuginfo_opts -g %undefine _include_minidebuginfo +%else +# Newer find-debuginfo.sh supports --keep-section, which is preferable. rhbz1465997 +%global _find_debuginfo_opts --keep-section .rustc +%endif # Use hardening ldflags. %global rustflags -Clink-arg=-Wl,-z,relro,-z,now -%if %{without bundled_llvm} && "%{llvm_root}" != "%{_prefix}" -# https://github.com/rust-lang/rust/issues/40717 -%global library_path $(%{llvm_root}/bin/llvm-config --libdir) +%if %{without bundled_llvm} +%if "%{llvm_root}" == "%{_prefix}" || 0%{?scl:1} +%global llvm_has_filecheck 1 +%endif %endif %description @@ -226,12 +272,9 @@ programs. %package lldb Summary: LLDB pretty printers for Rust - -# It could be noarch, but lldb has limited availability -#BuildArch: noarch - +BuildArch: noarch Requires: lldb -Requires: python-lldb +Requires: %{python}-lldb Requires: %{name}-debugger-common = %{version}-%{release} %description lldb @@ -253,6 +296,108 @@ This package includes HTML documentation for the Rust programming language and its standard library. +%package -n cargo +Summary: Rust's package manager and build tool +%if %with bundled_libgit2 +Provides: bundled(libgit2) = 1.0.0 +%endif +%if %with bundled_libssh2 +Provides: bundled(libssh2) = 1.9.0~dev +%endif +# For tests: +BuildRequires: git +# Cargo is not much use without Rust +Requires: rust + +# "cargo vendor" is a builtin command starting with 1.37. The Obsoletes and +# Provides are mostly relevant to RHEL, but harmless to have on Fedora/etc. too +Obsoletes: cargo-vendor <= 0.1.23 +Provides: cargo-vendor = %{version}-%{release} + +%description -n cargo +Cargo is a tool that allows Rust projects to declare their various dependencies +and ensure that you'll always get a repeatable build. + + +%package -n cargo-doc +Summary: Documentation for Cargo +BuildArch: noarch +# Cargo no longer builds its own documentation +# https://github.com/rust-lang/cargo/pull/4904 +Requires: rust-doc = %{version}-%{release} + +%description -n cargo-doc +This package includes HTML documentation for Cargo. + + +%package -n rustfmt +Summary: Tool to find and fix Rust formatting issues +Requires: cargo + +# The component/package was rustfmt-preview until Rust 1.31. +Obsoletes: rustfmt-preview < 1.0.0 +Provides: rustfmt-preview = %{version}-%{release} + +%description -n rustfmt +A tool for formatting Rust code according to style guidelines. + + +%package -n rls +Summary: Rust Language Server for IDE integration +%if %with bundled_libgit2 +Provides: bundled(libgit2) = 1.0.0 +%endif +%if %with bundled_libssh2 +Provides: bundled(libssh2) = 1.9.0~dev +%endif +Requires: rust-analysis +# /usr/bin/rls is dynamically linked against internal rustc libs +Requires: %{name}%{?_isa} = %{version}-%{release} + +# The component/package was rls-preview until Rust 1.31. +Obsoletes: rls-preview < 1.31.6 +Provides: rls-preview = %{version}-%{release} + +%description -n rls +The Rust Language Server provides a server that runs in the background, +providing IDEs, editors, and other tools with information about Rust programs. +It supports functionality such as 'goto definition', symbol search, +reformatting, and code completion, and enables renaming and refactorings. + + +%package -n clippy +Summary: Lints to catch common mistakes and improve your Rust code +Requires: cargo +# /usr/bin/clippy-driver is dynamically linked against internal rustc libs +Requires: %{name}%{?_isa} = %{version}-%{release} + +# The component/package was clippy-preview until Rust 1.31. +Obsoletes: clippy-preview <= 0.0.212 +Provides: clippy-preview = %{version}-%{release} + +%description -n clippy +A collection of lints to catch common mistakes and improve your Rust code. + + +%package src +Summary: Sources for the Rust standard library +BuildArch: noarch + +%description src +This package includes source files for the Rust standard library. It may be +useful as a reference for code completion tools in various editors. + + +%package analysis +Summary: Compiler analysis data for the Rust standard library +Requires: rust-std-static%{?_isa} = %{version}-%{release} + +%description analysis +This package contains analysis data files produced with rustc's -Zsave-analysis +feature for the Rust standard library. The RLS (Rust Language Server) uses this +data to provide information about the Rust standard library. + + %prep %ifarch %{bootstrap_arches} @@ -265,32 +410,60 @@ test -f '%{local_rust_root}/bin/rustc' %setup -q -n %{rustc_package} -# unbundle -rm -rf src/jemalloc/ +%patch1 -p1 -d src/tools/cargo +%patch2 -p1 + +%if %with disabled_libssh2 +%patch100 -p1 +%endif + +%if %without curl_http2 +%patch101 -p1 +rm -rf vendor/libnghttp2-sys/ +%endif + +%if 0%{?rhel} && 0%{?rhel} < 8 +%patch102 -p1 -b .no-pie +%endif + +%if "%{python}" != "python3" +# Use our preferred python first +sed -i.try-python -e '/^try python3 /i try "%{python}" "$@"' ./configure +%endif + %if %without bundled_llvm -rm -rf src/llvm/ +rm -rf src/llvm-project/ %endif -# extract bundled licenses for packaging -cp src/rt/hoedown/LICENSE src/rt/hoedown/LICENSE-hoedown -sed -e '/*\//q' src/libbacktrace/backtrace.h \ - >src/libbacktrace/LICENSE-libbacktrace +# Remove other unused vendored libraries +rm -rf vendor/curl-sys/curl/ +rm -rf vendor/jemalloc-sys/jemalloc/ +rm -rf vendor/libz-sys/src/zlib/ +rm -rf vendor/lzma-sys/xz-*/ +rm -rf vendor/openssl-src/openssl/ + +%if %without bundled_libgit2 +rm -rf vendor/libgit2-sys/libgit2/ +%endif + +%if %without bundled_libssh2 +rm -rf vendor/libssh2-sys/libssh2/ +%endif +%if %with disabled_libssh2 +rm -rf vendor/libssh2-sys/ +%endif -# These tests assume that alloc_jemalloc is present -# https://github.com/rust-lang/rust/issues/35017 -sed -i.jemalloc -e '1i // ignore-test jemalloc is disabled' \ - src/test/compile-fail/allocator-dylib-is-system.rs \ - src/test/compile-fail/allocator-rust-dylib-is-jemalloc.rs \ - src/test/run-pass/allocator-default.rs +# This only affects the transient rust-installer, but let it use our dynamic xz-libs +sed -i.lzma -e '/LZMA_API_STATIC/d' src/bootstrap/tool.rs -# This tests a problem of exponential growth, which seems to be less-reliably -# fixed when running on older LLVM and/or some arches. Just skip it for now. -sed -i.ignore -e '1i // ignore-test may still be exponential...' \ - src/test/run-pass/issue-41696.rs +# rename bundled license for packaging +cp -a vendor/backtrace-sys/src/libbacktrace/LICENSE{,-libbacktrace} +%if %{with bundled_llvm} && 0%{?epel} == 7 mkdir -p cmake-bin ln -s /usr/bin/cmake3 cmake-bin/cmake %global cmake_path $PWD/cmake-bin +%endif %if %{without bundled_llvm} && %{with llvm_static} # Static linking to distro LLVM needs to add -lffi @@ -299,20 +472,35 @@ sed -i.ffi -e '$a #[link(name = "ffi")] extern {}' \ src/librustc_llvm/lib.rs %endif -%patch1 -p1 -b .stack-guard -%patch2 -p1 -b .debuginfo - # The configure macro will modify some autoconf-related files, which upsets # cargo when it tries to verify checksums in those files. If we just truncate # that file list, cargo won't have anything to complain about. -find src/vendor -name .cargo-checksum.json \ +find vendor -name .cargo-checksum.json \ -exec sed -i.uncheck -e 's/"files":{[^}]*}/"files":{ }/' '{}' '+' +# Sometimes Rust sources start with #![...] attributes, and "smart" editors think +# it's a shebang and make them executable. Then brp-mangle-shebangs gets upset... +find -name '*.rs' -type f -perm /111 -exec chmod -v -x '{}' '+' + %build +# This package fails to build with LTO due to undefined symbols. LTO +# was disabled in OpenSuSE as well, but with no real explanation why +# beyond the undefined symbols. It really should be investigated further. +# Disable LTO +%define _lto_cflags %{nil} + +%if %without bundled_libgit2 +# convince libgit2-sys to use the distro libgit2 +export LIBGIT2_SYS_USE_PKG_CONFIG=1 +%endif + +%if %without bundled_libssh2 +# convince libssh2-sys to use the distro libssh2 +export LIBSSH2_SYS_USE_PKG_CONFIG=1 +%endif %{?cmake_path:export PATH=%{cmake_path}:$PATH} -%{?library_path:export LIBRARY_PATH="%{library_path}"} %{?rustflags:export RUSTFLAGS="%{rustflags}"} # We're going to override --libdir when configuring to get rustlib into a @@ -320,31 +508,61 @@ find src/vendor -name .cargo-checksum.json \ %global common_libdir %{_prefix}/lib %global rustlibdir %{common_libdir}/rustlib +%ifarch %{arm} %{ix86} s390x +# full debuginfo is exhausting memory; just do libstd for now +# https://github.com/rust-lang/rust/issues/45854 +%if 0%{?rhel} && 0%{?rhel} < 8 +# Older rpmbuild didn't work with partial debuginfo coverage. +%global debug_package %{nil} +%define enable_debuginfo --debuginfo-level=0 +%else +%define enable_debuginfo --debuginfo-level=0 --debuginfo-level-std=2 +%endif +%else +%define enable_debuginfo --debuginfo-level=2 +%endif + +# We want the best optimization for std, but it caused problems for rpm-ostree +# on ppc64le to have all of the compiler_builtins in a single object: +# https://bugzilla.redhat.com/show_bug.cgi?id=1713090 +%ifnarch %{power64} +%define codegen_units_std --set rust.codegen-units-std=1 +%endif + +# Some builders have relatively little memory for their CPU count. +# At least 2GB per CPU is a good rule of thumb for building rustc. +ncpus=$(/usr/bin/getconf _NPROCESSORS_ONLN) +max_cpus=$(( ($(free -g | awk '/^Mem:/{print $2}') + 1) / 2 )) +if [ "$max_cpus" -ge 1 -a "$max_cpus" -lt "$ncpus" ]; then + ncpus="$max_cpus" +fi + %configure --disable-option-checking \ --libdir=%{common_libdir} \ --build=%{rust_triple} --host=%{rust_triple} --target=%{rust_triple} \ - --enable-local-rust --local-rust-root=%{local_rust_root} \ - %{!?with_bundled_llvm: --llvm-root=%{llvm_root} --disable-codegen-tests \ + --python=%{python} \ + --local-rust-root=%{local_rust_root} \ + %{!?with_bundled_llvm: --llvm-root=%{llvm_root} \ + %{!?llvm_has_filecheck: --disable-codegen-tests} \ %{!?with_llvm_static: --enable-llvm-link-shared } } \ - --disable-jemalloc \ --disable-rpath \ - --disable-debuginfo-lines \ - --disable-debuginfo-only-std \ - --enable-debuginfo \ + %{enable_debuginfo} \ + --enable-extended \ + --tools=analysis,cargo,clippy,rls,rustfmt,src \ --enable-vendor \ + --enable-verbose-tests \ + %{?codegen_units_std} \ --release-channel=%{channel} -./x.py build -./x.py doc +%{python} ./x.py build -j "$ncpus" --stage 2 +%{python} ./x.py doc %install %{?cmake_path:export PATH=%{cmake_path}:$PATH} -%{?library_path:export LIBRARY_PATH="%{library_path}"} %{?rustflags:export RUSTFLAGS="%{rustflags}"} -DESTDIR=%{buildroot} ./x.py install - +DESTDIR=%{buildroot} %{python} ./x.py install # Make sure the shared libraries are in the proper libdir %if "%{_libdir}" != "%{common_libdir}" @@ -361,25 +579,49 @@ find %{buildroot}%{_libdir} -maxdepth 1 -type f -name '*.so' \ # library loading if we keep them in libdir, but we do need them in rustlib/ # to support dynamic linking for compiler plugins, so we'll symlink. (cd "%{buildroot}%{rustlibdir}/%{rust_triple}/lib" && - find ../../../../%{_lib} -maxdepth 1 -name '*.so' \ - -exec ln -v -f -s -t . '{}' '+') + find ../../../../%{_lib} -maxdepth 1 -name '*.so' | + while read lib; do + if [ -f "${lib##*/}" ]; then + # make sure they're actually identical! + cmp "$lib" "${lib##*/}" + ln -v -f -s -t . "$lib" + fi + done) # Remove installer artifacts (manifests, uninstall scripts, etc.) find %{buildroot}%{rustlibdir} -maxdepth 1 -type f -exec rm -v '{}' '+' +# Remove backup files from %%configure munging +find %{buildroot}%{rustlibdir} -type f -name '*.orig' -exec rm -v '{}' '+' + +# https://fedoraproject.org/wiki/Changes/Make_ambiguous_python_shebangs_error +# We don't actually need to ship any of those python scripts in rust-src anyway. +find %{buildroot}%{rustlibdir}/src -type f -name '*.py' -exec rm -v '{}' '+' + # FIXME: __os_install_post will strip the rlibs # -- should we find a way to preserve debuginfo? # Remove unwanted documentation files (we already package them) rm -f %{buildroot}%{_docdir}/%{name}/README.md rm -f %{buildroot}%{_docdir}/%{name}/COPYRIGHT +rm -f %{buildroot}%{_docdir}/%{name}/LICENSE rm -f %{buildroot}%{_docdir}/%{name}/LICENSE-APACHE rm -f %{buildroot}%{_docdir}/%{name}/LICENSE-MIT +rm -f %{buildroot}%{_docdir}/%{name}/LICENSE-THIRD-PARTY +rm -f %{buildroot}%{_docdir}/%{name}/*.old # Sanitize the HTML documentation find %{buildroot}%{_docdir}/%{name}/html -empty -delete find %{buildroot}%{_docdir}/%{name}/html -type f -exec chmod -x '{}' '+' +# Create the path for crate-devel packages +mkdir -p %{buildroot}%{_datadir}/cargo/registry + +# Cargo no longer builds its own documentation +# https://github.com/rust-lang/cargo/pull/4904 +mkdir -p %{buildroot}%{_docdir}/cargo +ln -sT ../rust/html/cargo/ %{buildroot}%{_docdir}/cargo/html + %if %without lldb rm -f %{buildroot}%{_bindir}/rust-lldb rm -f %{buildroot}%{rustlibdir}/etc/lldb_*.py* @@ -388,21 +630,22 @@ rm -f %{buildroot}%{rustlibdir}/etc/lldb_*.py* %check %{?cmake_path:export PATH=%{cmake_path}:$PATH} -%{?library_path:export LIBRARY_PATH="%{library_path}"} %{?rustflags:export RUSTFLAGS="%{rustflags}"} # The results are not stable on koji, so mask errors and just log it. -./x.py test --no-fail-fast || : +%{python} ./x.py test --no-fail-fast || : +%{python} ./x.py test --no-fail-fast cargo || : +%{python} ./x.py test --no-fail-fast clippy || : +%{python} ./x.py test --no-fail-fast rls || : +%{python} ./x.py test --no-fail-fast rustfmt || : -%post -p /sbin/ldconfig -%postun -p /sbin/ldconfig +%ldconfig_scriptlets %files %license COPYRIGHT LICENSE-APACHE LICENSE-MIT -%license src/libbacktrace/LICENSE-libbacktrace -%license src/rt/hoedown/LICENSE-hoedown +%license vendor/backtrace-sys/src/libbacktrace/LICENSE-libbacktrace %doc README.md %{_bindir}/rustc %{_bindir}/rustdoc @@ -425,12 +668,13 @@ rm -f %{buildroot}%{rustlibdir}/etc/lldb_*.py* %files debugger-common %dir %{rustlibdir} %dir %{rustlibdir}/etc -%{rustlibdir}/etc/debugger_*.py* +%{rustlibdir}/etc/rust_*.py* %files gdb %{_bindir}/rust-gdb %{rustlibdir}/etc/gdb_*.py* +%exclude %{_bindir}/rust-gdbgui %if %with lldb @@ -447,12 +691,270 @@ rm -f %{buildroot}%{rustlibdir}/etc/lldb_*.py* %{_docdir}/%{name}/html/*/ %{_docdir}/%{name}/html/*.html %{_docdir}/%{name}/html/*.css +%{_docdir}/%{name}/html/*.ico %{_docdir}/%{name}/html/*.js +%{_docdir}/%{name}/html/*.png +%{_docdir}/%{name}/html/*.svg %{_docdir}/%{name}/html/*.woff %license %{_docdir}/%{name}/html/*.txt +%license %{_docdir}/%{name}/html/*.md + + +%files -n cargo +%license src/tools/cargo/LICENSE-APACHE src/tools/cargo/LICENSE-MIT src/tools/cargo/LICENSE-THIRD-PARTY +%doc src/tools/cargo/README.md +%{_bindir}/cargo +%{_mandir}/man1/cargo*.1* +%{_sysconfdir}/bash_completion.d/cargo +%{_datadir}/zsh/site-functions/_cargo +%dir %{_datadir}/cargo +%dir %{_datadir}/cargo/registry + + +%files -n cargo-doc +%docdir %{_docdir}/cargo +%dir %{_docdir}/cargo +%{_docdir}/cargo/html + + +%files -n rustfmt +%{_bindir}/rustfmt +%{_bindir}/cargo-fmt +%doc src/tools/rustfmt/{README,CHANGELOG,Configurations}.md +%license src/tools/rustfmt/LICENSE-{APACHE,MIT} + + +%files -n rls +%{_bindir}/rls +%doc src/tools/rls/{README.md,COPYRIGHT,debugging.md} +%license src/tools/rls/LICENSE-{APACHE,MIT} + + +%files -n clippy +%{_bindir}/cargo-clippy +%{_bindir}/clippy-driver +%doc src/tools/clippy/{README.md,CHANGELOG.md} +%license src/tools/clippy/LICENSE-{APACHE,MIT} + + +%files src +%dir %{rustlibdir} +%{rustlibdir}/src + + +%files analysis +%{rustlibdir}/%{rust_triple}/analysis/ %changelog +* Fri Aug 28 2020 Fabio Valentini - 1.46.0-2 +- Fix LTO with doctests (backported cargo PR#8657). + +* Thu Aug 27 2020 Josh Stone - 1.46.0-1 +- Update to 1.46.0. + +* Mon Aug 03 2020 Josh Stone - 1.45.2-1 +- Update to 1.45.2. + +* Thu Jul 30 2020 Josh Stone - 1.45.1-1 +- Update to 1.45.1. + +* Wed Jul 29 2020 Fedora Release Engineering - 1.45.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Thu Jul 16 2020 Josh Stone - 1.45.0-1 +- Update to 1.45.0. + +* Wed Jul 01 2020 Jeff Law - 1.44.1-2 +- Disable LTO + +* Thu Jun 18 2020 Josh Stone - 1.44.1-1 +- Update to 1.44.1. + +* Thu Jun 04 2020 Josh Stone - 1.44.0-1 +- Update to 1.44.0. + +* Tue May 19 2020 Josh Stone - 1.43.1-1.1 +- Rebuild with LLVM 9. + +* Thu May 07 2020 Josh Stone - 1.43.1-1 +- Update to 1.43.1. + +* Thu Apr 23 2020 Josh Stone - 1.43.0-1 +- Update to 1.43.0. + +* Thu Mar 12 2020 Josh Stone - 1.42.0-1 +- Update to 1.42.0. + +* Thu Feb 27 2020 Josh Stone - 1.41.1-1 +- Update to 1.41.1. + +* Thu Feb 20 2020 Josh Stone - 1.41.0-2 +- Rebuild with llvm9.0 + +* Thu Jan 30 2020 Josh Stone - 1.41.0-1 +- Update to 1.41.0. + +* Thu Jan 16 2020 Josh Stone - 1.40.0-3 +- Build compiletest with in-tree libtest + +* Tue Jan 07 2020 Josh Stone - 1.40.0-2 +- Fix compiletest with newer (local-rebuild) libtest +- Fix ARM EHABI unwinding + +* Thu Dec 19 2019 Josh Stone - 1.40.0-1 +- Update to 1.40.0. + +* Tue Nov 12 2019 Josh Stone - 1.39.0-2 +- Fix a couple build and test issues with rustdoc. + +* Thu Nov 07 2019 Josh Stone - 1.39.0-1 +- Update to 1.39.0. + +* Fri Sep 27 2019 Josh Stone - 1.38.0-2 +- Filter the libraries included in rust-std (rhbz1756487) + +* Thu Sep 26 2019 Josh Stone - 1.38.0-1 +- Update to 1.38.0. + +* Thu Aug 15 2019 Josh Stone - 1.37.0-1 +- Update to 1.37.0. +- Disable HTTP/2 support, lacking in system libcurl. + +* Fri Jul 26 2019 Fedora Release Engineering - 1.36.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Thu Jul 04 2019 Josh Stone - 1.36.0-1 +- Update to 1.36.0. + +* Wed May 29 2019 Josh Stone - 1.35.0-2 +- Fix compiletest for rebuild testing. + +* Thu May 23 2019 Josh Stone - 1.35.0-1 +- Update to 1.35.0. + +* Tue May 14 2019 Josh Stone - 1.34.2-1 +- Update to 1.34.2 -- fixes CVE-2019-12083. + +* Thu Apr 25 2019 Josh Stone - 1.34.1-1 +- Update to 1.34.1. +- Add a ThinLTO fix for rhbz1701339. + +* Thu Apr 11 2019 Josh Stone - 1.34.0-1 +- Update to 1.34.0. + +* Fri Mar 01 2019 Josh Stone - 1.33.0-2 +- Fix deprecations for self-rebuild + +* Thu Feb 28 2019 Josh Stone - 1.33.0-1 +- Update to 1.33.0. + +* Sat Feb 02 2019 Fedora Release Engineering - 1.32.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Thu Jan 17 2019 Josh Stone - 1.32.0-1 +- Update to 1.32.0. + +* Mon Jan 07 2019 Josh Stone - 1.31.1-9 +- Update to 1.31.1 for RLS fixes. + +* Thu Dec 06 2018 Josh Stone - 1.31.0-8 +- Update to 1.31.0 -- Rust 2018! +- clippy/rls/rustfmt are no longer -preview + +* Thu Nov 08 2018 Josh Stone - 1.30.1-7 +- Update to 1.30.1. + +* Thu Nov 01 2018 Josh Stone - 1.30.0-6.1 +- Rebuild without bootstrap binaries. + +* Thu Oct 25 2018 Josh Stone - 1.30.0-6 +- Update to 1.30.0. +- Re-bootstrap ppc64le for rust#54545 + +* Fri Oct 12 2018 Josh Stone - 1.29.2-3 +- Update to 1.29.2. + +* Tue Sep 25 2018 Josh Stone - 1.29.1-2 +- Update to 1.29.1. +- Security fix for str::repeat (pending CVE). + +* Thu Sep 13 2018 Josh Stone - 1.29.0-1 +- Update to 1.29.0. +- Add a clippy-preview subpackage + +* Wed Aug 08 2018 Josh Stone - 1.28.0-1 +- Update to 1.28.0. + +* Tue Jul 24 2018 Josh Stone - 1.27.2-3 +- Update to 1.27.2. + +* Tue Jul 10 2018 Josh Stone - 1.27.1-2 +- Update to 1.27.1. +- Security fix for CVE-2018-1000622 + +* Thu Jun 21 2018 Josh Stone - 1.27.0-1 +- Update to 1.27.0. + +* Wed Jun 06 2018 Josh Stone - 1.26.2-3 +- Update to 1.26.2. + +* Tue May 29 2018 Josh Stone - 1.26.1-2 +- Update to 1.26.1. + +* Thu May 10 2018 Josh Stone - 1.26.0-1 +- Update to 1.26.0. + +* Mon Apr 16 2018 Dan Callaghan - 1.25.0-3 +- Add cargo, rls, and analysis + +* Tue Apr 10 2018 Josh Stone - 1.25.0-2 +- Filter codegen-backends from Provides too. + +* Thu Mar 29 2018 Josh Stone - 1.25.0-1 +- Update to 1.25.0. + +* Thu Mar 01 2018 Josh Stone - 1.24.1-1 +- Update to 1.24.1. + +* Wed Feb 21 2018 Josh Stone - 1.24.0-3 +- Backport a rebuild fix for rust#48308. + +* Mon Feb 19 2018 Josh Stone - 1.24.0-2 +- rhbz1546541: drop full-bootstrap; cmp libs before symlinking. +- Backport pr46592 to fix local_rebuild bootstrapping. +- Backport pr48362 to fix relative/absolute libdir. + +* Thu Feb 15 2018 Josh Stone - 1.24.0-1 +- Update to 1.24.0. + +* Mon Feb 12 2018 Iryna Shcherbina - 1.23.0-4 +- Update Python 2 dependency declarations to new packaging standards + (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) + +* Tue Feb 06 2018 Josh Stone - 1.23.0-3 +- Use full-bootstrap to work around a rebuild issue. +- Patch binaryen for GCC 8 + +* Thu Feb 01 2018 Igor Gnatenko - 1.23.0-2 +- Switch to %%ldconfig_scriptlets + +* Mon Jan 08 2018 Josh Stone - 1.23.0-1 +- Update to 1.23.0. + +* Thu Nov 23 2017 Josh Stone - 1.22.1-1 +- Update to 1.22.1. + +* Thu Oct 12 2017 Josh Stone - 1.21.0-1 +- Update to 1.21.0. + +* Mon Sep 11 2017 Josh Stone - 1.20.0-2 +- ABI fixes for ppc64 and s390x. + +* Thu Aug 31 2017 Josh Stone - 1.20.0-1 +- Update to 1.20.0. +- Add a rust-src subpackage. + * Thu Jul 20 2017 Josh Stone - 1.19.0-1 - Update to 1.19.0.