diff --git a/0001-Set-more-llvm-function-attributes-for-__rust_try.patch b/0001-Set-more-llvm-function-attributes-for-__rust_try.patch deleted file mode 100644 index 36bb15c04cc150363654eb5ddf2e034556231402..0000000000000000000000000000000000000000 --- a/0001-Set-more-llvm-function-attributes-for-__rust_try.patch +++ /dev/null @@ -1,186 +0,0 @@ -From 4b95b1a4fd035a73998dc21b265ce4594e35f8ae Mon Sep 17 00:00:00 2001 -From: Alex Crichton -Date: Thu, 16 Aug 2018 13:19:04 -0700 -Subject: [PATCH] Set more llvm function attributes for __rust_try - -This shim is generated elsewhere in the compiler so this commit adds support to -ensure it goes through similar paths as the rest of the compiler to set llvm -function attributes like target features. - -cc #53372 ---- - src/librustc_codegen_llvm/attributes.rs | 52 +++++++++++++++++++------ - src/librustc_codegen_llvm/base.rs | 21 ---------- - src/librustc_codegen_llvm/callee.rs | 2 +- - src/librustc_codegen_llvm/intrinsic.rs | 2 + - src/librustc_codegen_llvm/mono_item.rs | 2 +- - 5 files changed, 44 insertions(+), 35 deletions(-) - -diff --git a/src/librustc_codegen_llvm/attributes.rs b/src/librustc_codegen_llvm/attributes.rs -index 3b5f927d52f0..2a79ce2f2285 100644 ---- a/src/librustc_codegen_llvm/attributes.rs -+++ b/src/librustc_codegen_llvm/attributes.rs -@@ -11,7 +11,7 @@ - - use std::ffi::{CStr, CString}; - --use rustc::hir::CodegenFnAttrFlags; -+use rustc::hir::{CodegenFnAttrFlags, CodegenFnAttrs}; - use rustc::hir::def_id::{DefId, LOCAL_CRATE}; - use rustc::session::Session; - use rustc::session::config::Sanitizer; -@@ -123,11 +123,37 @@ pub fn llvm_target_features(sess: &Session) -> impl Iterator { - - /// Composite function which sets LLVM attributes for function depending on its AST (#[attribute]) - /// attributes. --pub fn from_fn_attrs(cx: &CodegenCx, llfn: ValueRef, id: DefId) { -- let codegen_fn_attrs = cx.tcx.codegen_fn_attrs(id); -+pub fn from_fn_attrs( -+ cx: &CodegenCx, -+ llfn: ValueRef, -+ id: Option, -+) { -+ let codegen_fn_attrs = id.map(|id| cx.tcx.codegen_fn_attrs(id)) -+ .unwrap_or(CodegenFnAttrs::new()); - - inline(llfn, codegen_fn_attrs.inline); - -+ // The `uwtable` attribute according to LLVM is: -+ // -+ // This attribute indicates that the ABI being targeted requires that an -+ // unwind table entry be produced for this function even if we can show -+ // that no exceptions passes by it. This is normally the case for the -+ // ELF x86-64 abi, but it can be disabled for some compilation units. -+ // -+ // Typically when we're compiling with `-C panic=abort` (which implies this -+ // `no_landing_pads` check) we don't need `uwtable` because we can't -+ // generate any exceptions! On Windows, however, exceptions include other -+ // events such as illegal instructions, segfaults, etc. This means that on -+ // Windows we end up still needing the `uwtable` attribute even if the `-C -+ // panic=abort` flag is passed. -+ // -+ // You can also find more info on why Windows is whitelisted here in: -+ // https://bugzilla.mozilla.org/show_bug.cgi?id=1302078 -+ if !cx.sess().no_landing_pads() || -+ cx.sess().target.target.options.requires_uwtable { -+ attributes::emit_uwtable(llfn, true); -+ } -+ - set_frame_pointer_elimination(cx, llfn); - set_probestack(cx, llfn); - -@@ -151,7 +177,7 @@ pub fn from_fn_attrs(cx: &CodegenCx, llfn: ValueRef, id: DefId) { - // *in Rust code* may unwind. Foreign items like `extern "C" { - // fn foo(); }` are assumed not to unwind **unless** they have - // a `#[unwind]` attribute. -- } else if !cx.tcx.is_foreign_item(id) { -+ } else if id.map(|id| !cx.tcx.is_foreign_item(id)).unwrap_or(false) { - Some(true) - } else { - None -@@ -188,14 +214,16 @@ pub fn from_fn_attrs(cx: &CodegenCx, llfn: ValueRef, id: DefId) { - // Note that currently the `wasm-import-module` doesn't do anything, but - // eventually LLVM 7 should read this and ferry the appropriate import - // module to the output file. -- if cx.tcx.sess.target.target.arch == "wasm32" { -- if let Some(module) = wasm_import_module(cx.tcx, id) { -- llvm::AddFunctionAttrStringValue( -- llfn, -- llvm::AttributePlace::Function, -- cstr("wasm-import-module\0"), -- &module, -- ); -+ if let Some(id) = id { -+ if cx.tcx.sess.target.target.arch == "wasm32" { -+ if let Some(module) = wasm_import_module(cx.tcx, id) { -+ llvm::AddFunctionAttrStringValue( -+ llfn, -+ llvm::AttributePlace::Function, -+ cstr("wasm-import-module\0"), -+ &module, -+ ); -+ } - } - } - } -diff --git a/src/librustc_codegen_llvm/base.rs b/src/librustc_codegen_llvm/base.rs -index 223c04f420f3..b0461582ddcb 100644 ---- a/src/librustc_codegen_llvm/base.rs -+++ b/src/librustc_codegen_llvm/base.rs -@@ -486,27 +486,6 @@ pub fn codegen_instance<'a, 'tcx>(cx: &CodegenCx<'a, 'tcx>, instance: Instance<' - - cx.stats.borrow_mut().n_closures += 1; - -- // The `uwtable` attribute according to LLVM is: -- // -- // This attribute indicates that the ABI being targeted requires that an -- // unwind table entry be produced for this function even if we can show -- // that no exceptions passes by it. This is normally the case for the -- // ELF x86-64 abi, but it can be disabled for some compilation units. -- // -- // Typically when we're compiling with `-C panic=abort` (which implies this -- // `no_landing_pads` check) we don't need `uwtable` because we can't -- // generate any exceptions! On Windows, however, exceptions include other -- // events such as illegal instructions, segfaults, etc. This means that on -- // Windows we end up still needing the `uwtable` attribute even if the `-C -- // panic=abort` flag is passed. -- // -- // You can also find more info on why Windows is whitelisted here in: -- // https://bugzilla.mozilla.org/show_bug.cgi?id=1302078 -- if !cx.sess().no_landing_pads() || -- cx.sess().target.target.options.requires_uwtable { -- attributes::emit_uwtable(lldecl, true); -- } -- - let mir = cx.tcx.instance_mir(instance.def); - mir::codegen_mir(cx, lldecl, &mir, instance, sig); - } -diff --git a/src/librustc_codegen_llvm/callee.rs b/src/librustc_codegen_llvm/callee.rs -index 2c01bd42cc77..97f07792ede8 100644 ---- a/src/librustc_codegen_llvm/callee.rs -+++ b/src/librustc_codegen_llvm/callee.rs -@@ -97,7 +97,7 @@ pub fn get_fn<'a, 'tcx>(cx: &CodegenCx<'a, 'tcx>, - if instance.def.is_inline(tcx) { - attributes::inline(llfn, attributes::InlineAttr::Hint); - } -- attributes::from_fn_attrs(cx, llfn, instance.def.def_id()); -+ attributes::from_fn_attrs(cx, llfn, Some(instance.def.def_id())); - - let instance_def_id = instance.def_id(); - -diff --git a/src/librustc_codegen_llvm/intrinsic.rs b/src/librustc_codegen_llvm/intrinsic.rs -index 9c5c0f730c16..f69fce15dc55 100644 ---- a/src/librustc_codegen_llvm/intrinsic.rs -+++ b/src/librustc_codegen_llvm/intrinsic.rs -@@ -10,6 +10,7 @@ - - #![allow(non_upper_case_globals)] - -+use attributes; - use intrinsics::{self, Intrinsic}; - use llvm; - use llvm::{ValueRef}; -@@ -936,6 +937,7 @@ fn gen_fn<'a, 'tcx>(cx: &CodegenCx<'a, 'tcx>, - Abi::Rust - ))); - let llfn = declare::define_internal_fn(cx, name, rust_fn_ty); -+ attributes::from_fn_attrs(cx, llfn, None); - let bx = Builder::new_block(cx, llfn, "entry-block"); - codegen(bx); - llfn -diff --git a/src/librustc_codegen_llvm/mono_item.rs b/src/librustc_codegen_llvm/mono_item.rs -index a528008e3b4b..32d8b24e3c15 100644 ---- a/src/librustc_codegen_llvm/mono_item.rs -+++ b/src/librustc_codegen_llvm/mono_item.rs -@@ -183,7 +183,7 @@ fn predefine_fn<'a, 'tcx>(cx: &CodegenCx<'a, 'tcx>, - if instance.def.is_inline(cx.tcx) { - attributes::inline(lldecl, attributes::InlineAttr::Hint); - } -- attributes::from_fn_attrs(cx, lldecl, instance.def.def_id()); -+ attributes::from_fn_attrs(cx, lldecl, Some(instance.def.def_id())); - - cx.instances.borrow_mut().insert(instance, lldecl); - } --- -2.17.1 - diff --git a/0001-std-stop-backtracing-when-the-frames-are-full.patch b/0001-std-stop-backtracing-when-the-frames-are-full.patch deleted file mode 100644 index aa1b9a5130e495f469cfc6a72c1404c69ba35572..0000000000000000000000000000000000000000 --- a/0001-std-stop-backtracing-when-the-frames-are-full.patch +++ /dev/null @@ -1,122 +0,0 @@ -From f4e8d57b6ad6f599de54c020ba185db83cb011a3 Mon Sep 17 00:00:00 2001 -From: Josh Stone -Date: Thu, 16 Aug 2018 11:26:27 -0700 -Subject: [PATCH] std: stop backtracing when the frames are full - ---- - src/libstd/sys/cloudabi/backtrace.rs | 18 ++++++++++-------- - src/libstd/sys/redox/backtrace/tracing.rs | 18 ++++++++++-------- - src/libstd/sys/unix/backtrace/tracing/gcc_s.rs | 18 ++++++++++-------- - 3 files changed, 30 insertions(+), 24 deletions(-) - -diff --git a/src/libstd/sys/cloudabi/backtrace.rs b/src/libstd/sys/cloudabi/backtrace.rs -index 1b970187558c..2c43b5937ce5 100644 ---- a/src/libstd/sys/cloudabi/backtrace.rs -+++ b/src/libstd/sys/cloudabi/backtrace.rs -@@ -64,6 +64,10 @@ extern "C" fn trace_fn( - arg: *mut libc::c_void, - ) -> uw::_Unwind_Reason_Code { - let cx = unsafe { &mut *(arg as *mut Context) }; -+ if cx.idx >= cx.frames.len() { -+ return uw::_URC_NORMAL_STOP; -+ } -+ - let mut ip_before_insn = 0; - let mut ip = unsafe { uw::_Unwind_GetIPInfo(ctx, &mut ip_before_insn) as *mut libc::c_void }; - if !ip.is_null() && ip_before_insn == 0 { -@@ -73,14 +77,12 @@ extern "C" fn trace_fn( - } - - let symaddr = unsafe { uw::_Unwind_FindEnclosingFunction(ip) }; -- if cx.idx < cx.frames.len() { -- cx.frames[cx.idx] = Frame { -- symbol_addr: symaddr as *mut u8, -- exact_position: ip as *mut u8, -- inline_context: 0, -- }; -- cx.idx += 1; -- } -+ cx.frames[cx.idx] = Frame { -+ symbol_addr: symaddr as *mut u8, -+ exact_position: ip as *mut u8, -+ inline_context: 0, -+ }; -+ cx.idx += 1; - - uw::_URC_NO_REASON - } -diff --git a/src/libstd/sys/redox/backtrace/tracing.rs b/src/libstd/sys/redox/backtrace/tracing.rs -index bb70ca360370..c0414b78f8d6 100644 ---- a/src/libstd/sys/redox/backtrace/tracing.rs -+++ b/src/libstd/sys/redox/backtrace/tracing.rs -@@ -68,6 +68,10 @@ pub fn unwind_backtrace(frames: &mut [Frame]) - extern fn trace_fn(ctx: *mut uw::_Unwind_Context, - arg: *mut libc::c_void) -> uw::_Unwind_Reason_Code { - let cx = unsafe { &mut *(arg as *mut Context) }; -+ if cx.idx >= cx.frames.len() { -+ return uw::_URC_NORMAL_STOP; -+ } -+ - let mut ip_before_insn = 0; - let mut ip = unsafe { - uw::_Unwind_GetIPInfo(ctx, &mut ip_before_insn) as *mut libc::c_void -@@ -94,14 +98,12 @@ extern fn trace_fn(ctx: *mut uw::_Unwind_Context, - unsafe { uw::_Unwind_FindEnclosingFunction(ip) } - }; - -- if cx.idx < cx.frames.len() { -- cx.frames[cx.idx] = Frame { -- symbol_addr: symaddr as *mut u8, -- exact_position: ip as *mut u8, -- inline_context: 0, -- }; -- cx.idx += 1; -- } -+ cx.frames[cx.idx] = Frame { -+ symbol_addr: symaddr as *mut u8, -+ exact_position: ip as *mut u8, -+ inline_context: 0, -+ }; -+ cx.idx += 1; - - uw::_URC_NO_REASON - } -diff --git a/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs b/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs -index 1b92fc0e6ad0..6e8415686792 100644 ---- a/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs -+++ b/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs -@@ -68,6 +68,10 @@ pub fn unwind_backtrace(frames: &mut [Frame]) - extern fn trace_fn(ctx: *mut uw::_Unwind_Context, - arg: *mut libc::c_void) -> uw::_Unwind_Reason_Code { - let cx = unsafe { &mut *(arg as *mut Context) }; -+ if cx.idx >= cx.frames.len() { -+ return uw::_URC_NORMAL_STOP; -+ } -+ - let mut ip_before_insn = 0; - let mut ip = unsafe { - uw::_Unwind_GetIPInfo(ctx, &mut ip_before_insn) as *mut libc::c_void -@@ -94,14 +98,12 @@ extern fn trace_fn(ctx: *mut uw::_Unwind_Context, - unsafe { uw::_Unwind_FindEnclosingFunction(ip) } - }; - -- if cx.idx < cx.frames.len() { -- cx.frames[cx.idx] = Frame { -- symbol_addr: symaddr as *mut u8, -- exact_position: ip as *mut u8, -- inline_context: 0, -- }; -- cx.idx += 1; -- } -+ cx.frames[cx.idx] = Frame { -+ symbol_addr: symaddr as *mut u8, -+ exact_position: ip as *mut u8, -+ inline_context: 0, -+ }; -+ cx.idx += 1; - - uw::_URC_NO_REASON - } --- -2.17.1 - diff --git a/rust-52876-const-endianess.patch b/rust-52876-const-endianess.patch deleted file mode 100644 index 1e844e8274b84540ecf9fb25e64d0782da9f68f9..0000000000000000000000000000000000000000 --- a/rust-52876-const-endianess.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 1ea2765918d1212a07e1359537470c477d82a681 Mon Sep 17 00:00:00 2001 -From: Josh Stone -Date: Mon, 30 Jul 2018 13:08:56 -0700 -Subject: [PATCH] run-pass/const-endianness: negate before to_le() - -`const LE_I128` needs parentheses to negate the value *before* calling -`to_le()`, otherwise it doesn't match the operations performed in the -black-boxed part of the test. This only makes a tangible difference on -big-endian targets. ---- - src/test/run-pass/const-endianess.rs | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/test/run-pass/const-endianess.rs b/src/test/run-pass/const-endianess.rs -index fa34b49210a6..95c738d3ec49 100644 ---- a/src/test/run-pass/const-endianess.rs -+++ b/src/test/run-pass/const-endianess.rs -@@ -25,7 +25,7 @@ fn main() { - #[cfg(not(target_arch = "asmjs"))] - { - const BE_U128: u128 = 999999u128.to_be(); -- const LE_I128: i128 = -999999i128.to_le(); -+ const LE_I128: i128 = (-999999i128).to_le(); - assert_eq!(BE_U128, b(999999u128).to_be()); - assert_eq!(LE_I128, b(-999999i128).to_le()); - } diff --git a/rust.spec b/rust.spec index 57c35843f6b5b24fe4f71e32f356ad0012e35583..fd49d48726478590eb7af13a3d478210af162ee8 100644 --- a/rust.spec +++ b/rust.spec @@ -1,226 +1,327 @@ -%global rustlibdir %{_prefix}/lib/rustlib -%global rust_triple %{_target_cpu}-unknown-linux-gnu +%{!?channel: %global channel stable} +%global bootstrap_rust 1.44.0 +%global bootstrap_cargo 1.44.0 +%global bootstrap_channel 1.44.0 +%global bootstrap_date 2020-06-04 +%bcond_with llvm_static +%bcond_with bundled_llvm +%bcond_without bundled_libgit2 +Name: rust +Version: 1.45.2 +Release: 1 +Summary: The Rust Programming Language +License: (ASL 2.0 or MIT) and (BSD and MIT) +URL: https://www.rust-lang.org +%if "%{channel}" == "stable" +%global rustc_package rustc-%{version}-src +%else +%global rustc_package rustc-%{channel}-src +%endif +Source0: https://static.rust-lang.org/dist/%{rustc_package}.tar.xz +%{lua: function rust_triple(arch) + local abi = "gnu" + if arch == "armv7hl" then + arch = "armv7" + abi = "gnueabihf" + elseif arch == "ppc64" then + arch = "powerpc64" + elseif arch == "ppc64le" then + arch = "powerpc64le" + end + return arch.."-unknown-linux-"..abi +end} +%global rust_triple %{lua: print(rust_triple(rpm.expand("%{_target_cpu}")))} +%if %defined bootstrap_arches +%{lua: do + local bootstrap_arches = {} + for arch in string.gmatch(rpm.expand("%{bootstrap_arches}"), "%S+") do + table.insert(bootstrap_arches, arch) + end + local base = rpm.expand("https://static.rust-lang.org/dist/%{bootstrap_date}" + .."/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.xz\n", + i, base, rust_triple(arch))) + if arch == target_arch then + rpm.define("bootstrap_source "..i) + end + end +end} +%endif +%ifarch %{bootstrap_arches} +%global bootstrap_root rust-%{bootstrap_channel}-%{rust_triple} +%global local_rust_root %{_builddir}/%{bootstrap_root}/usr +Provides: bundled(%{name}-bootstrap) = %{bootstrap_rust} +%else +BuildRequires: cargo >= %{bootstrap_cargo} +BuildRequires: (%{name} >= %{bootstrap_rust} with %{name} <= %{version}) +%global local_rust_root %{_prefix} +%endif +BuildRequires: make gcc gcc-c++ ncurses-devel curl pkgconfig(libcurl) pkgconfig(liblzma) +BuildRequires: pkgconfig(openssl) pkgconfig(zlib) pkgconfig(libssh2) >= 1.6.0 +%global python python3 +BuildRequires: %{python} +%if %with bundled_llvm +BuildRequires: cmake3 >= 3.4.3 +Provides: bundled(llvm) = 10.0.1 +%else +BuildRequires: cmake >= 2.8.11 +%if %defined llvm +%global llvm_root %{_libdir}/%{llvm} +%else +%global llvm llvm +%global llvm_root %{_prefix} +%endif +BuildRequires: %{llvm}-devel >= 8.0 +%if %with llvm_static +BuildRequires: %{llvm}-static libffi-devel +%endif +%endif +BuildRequires: procps-ng gdb +Provides: bundled(libbacktrace) = 1.0.20200219 +Provides: rustc = %{version}-%{release} +Provides: rustc%{?_isa} = %{version}-%{release} +Requires: %{name}-std-static%{?_isa} = %{version}-%{release} +Requires: /usr/bin/cc %global _privatelibs lib(.*-[[:xdigit:]]{16}*|rustc.*)[.]so.* %global __provides_exclude ^(%{_privatelibs})$ %global __requires_exclude ^(%{_privatelibs})$ %global __provides_exclude_from ^(%{_docdir}|%{rustlibdir}/src)/.*$ %global __requires_exclude_from ^(%{_docdir}|%{rustlibdir}/src)/.*$ %global _find_debuginfo_opts --keep-section .rustc -%bcond_with bundled_llvm -%global llvm_root %{_prefix} - -Name: rust -Version: 1.29.1 -Release: 4 -Summary: A systems programming language -License: (ASL 2.0 or MIT) and (BSD and MIT) -URL: https://www.rust-lang.org -Source0: https://static.rust-lang.org/dist/rustc-1.29.1-src.tar.xz -Patch0000: rust-52876-const-endianess.patch -Patch0001: 0001-std-stop-backtracing-when-the-frames-are-full.patch -Patch0002: 0001-Set-more-llvm-function-attributes-for-__rust_try.patch -BuildRequires: cargo >= 1.28.0 (%{name} >= 1.28.0 with %{name} <= 1.29.1) llvm-devel -BuildRequires: make gcc-c++ ncurses-devel curl python3 cmake3 >= 3.4.3 procps-ng -BuildRequires: pkgconfig(libcurl) pkgconfig(liblzma) pkgconfig(openssl) pkgconfig(zlib) gdb -Requires: %{name}-devel = 1.29.1-%{release} -Provides: bundled(libbacktrace) = 8.1.0 bundled(miniz) = 1.16~beta+r1 -Provides: rustc = 1.29.1-%{release} - +%global rustflags -Clink-arg=-Wl,-z,relro,-z,now +%if %{without bundled_llvm} +%if "%{llvm_root}" == "%{_prefix}" || 0%{?scl:1} +%global llvm_has_filecheck 1 +%endif +%endif %description -Rust is a systems programming language focused on three goals:safety, -speed,and concurrency.It maintains these goals without having a garbage -collector, making it a useful language for a number of use cases other -languages are not good at: embedding in other languages, programs with -specific space and time requirements,and writing low-level code, like -device drivers and operating systems. It improves on current languages -targeting this space by having a number of compile-time safety checks -that produce no runtime overhead,while eliminating all data races. - -%package devel -Summary: Libraries and header files for developing applications that use appstream-glib -Provides: %{name}-std-static = %{version}-%{release} -Obsoletes: %{name}-std-static < %{version}-%{release} - -%description devel -Libraries and header files for developing applications that use appstream-glib. +Rust is a systems programming language that runs blazingly fast, prevents +segfaults, and guarantees thread safety. +This package includes the Rust compiler and documentation generator. -%package debugger-common -Summary: Common debugger pretty printers for Rust -BuildArch: noarch +%package std-static +Summary: Standard library for Rust +%description std-static +This package includes the standard libraries for building applications +written in Rust. +%package debugger-common +Summary: Common debugger pretty printers for Rust +BuildArch: noarch %description debugger-common This package includes the common functionality for %{name}-gdb and %{name}-lldb. %package gdb -Summary: GDB pretty printers for Rust -BuildArch: noarch -Requires: gdb -Requires: %{name}-debugger-common = 1.29.1-%{release} - +Summary: GDB pretty printers for Rust +BuildArch: noarch +Requires: gdb %{name}-debugger-common = %{version}-%{release} %description gdb This package includes the rust-gdb script, which allows easier debugging of Rust programs. -%package -n cargo -Summary: Rust's package manager and build tool -Version: 1.29.0 -BuildRequires: git -Requires: rust -Provides: bundled(libgit2) = 0.27 bundled(libssh2) = 1.8.1 +%package lldb +Summary: LLDB pretty printers for Rust +BuildArch: noarch +Requires: lldb python3-lldb +Requires: %{name}-debugger-common = %{version}-%{release} +%description lldb +This package includes the rust-lldb script, which allows easier debugging of Rust +programs. + +%package doc +Summary: Documentation for Rust +%description doc +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 +Provides: bundled(libgit2) = 1.0.0 +BuildRequires: git +Requires: rust +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 rustfmt-preview -Summary: Tool to find and fix Rust formatting issues -Version: 0.99.1 -Requires: cargo -Provides: rustfmt = 0.99.1 -Obsoletes: rustfmt <= 0.9.0 - -%description -n rustfmt-preview +%package -n cargo-doc +Summary: Documentation for Cargo +BuildArch: noarch +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 +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-preview -Summary: Rust Language Server for IDE integration -Version: 0.130.0 -Provides: rls = 0.130.0 bundled(libgit2) = 0.27 bundled(libssh2) = 1.8.1 -Requires: rust-analysis %{name} = 1.29.1-%{release} - -%description -n rls-preview +%package -n rls +Summary: Rust Language Server for IDE integration +Provides: bundled(libgit2) = 1.0.0 +Requires: rust-analysis %{name}%{?_isa} = %{version}-%{release} +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-preview -Summary: Lints to catch common mistakes and improve your Rust code -Version: 0.0.212 -License: MPLv2.0 -Provides: clippy = 0.0.212 -Requires: cargo %{name} = 1.29.1-%{release} - -%description -n clippy-preview +%package -n clippy +Summary: Lints to catch common mistakes and improve your Rust code +Requires: cargo %{name}%{?_isa} = %{version}-%{release} +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 - +Summary: Sources for the Rust standard library +BuildArch: noarch %description src -This package includes source files for the Rust standard library.It may be +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 = 1.29.1-%{release} - +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. -%package help -Summary: Help documents for rust - -Provides: %{name}-doc = %{version}-%{release} %{name}-cargo-doc = %{version}-%{release} -Obsoletes: %{name}-doc < %{version}-%{release} %{name}-cargo-doc < %{version}-%{release} - -%description help -Man pages and other related help documents for rust. - %prep -%autosetup -n rustc-1.29.1-src -p1 - +%ifarch %{bootstrap_arches} +%setup -q -n %{bootstrap_root} -T -b %{bootstrap_source} +./install.sh --components=cargo,rustc,rust-std-%{rust_triple} \ + --prefix=%{local_rust_root} --disable-ldconfig +test -f '%{local_rust_root}/bin/cargo' +test -f '%{local_rust_root}/bin/rustc' +%endif +%setup -q -n %{rustc_package} +%if "%{python}" == "python3" sed -i.try-py3 -e '/try python2.7/i try python3 "$@"' ./configure -rm -rf src/llvm/ -rm -rf src/llvm-emscripten/ -sed -e '/*\//q' src/libbacktrace/backtrace.h >src/libbacktrace/LICENSE-libbacktrace - -sed -i.ignore -e '1i // ignore-test may still be exponential...' src/test/run-pass/issue-41696.rs - -find src/vendor -name .cargo-checksum.json -exec sed -i.uncheck -e 's/"files":{[^}]*}/"files":{ }/' '{}' '+' +%endif +%if %without bundled_llvm +rm -rf src/llvm-project/ +%endif +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/ +rm -rf vendor/libssh2-sys/libssh2/ +sed -i.lzma -e '/LZMA_API_STATIC/d' src/bootstrap/tool.rs +cp -a vendor/backtrace-sys/src/libbacktrace/LICENSE{,-libbacktrace} +%if %{without bundled_llvm} && %{with llvm_static} +sed -i.ffi -e '$a #[link(name = "ffi")] extern {}' \ + src/librustc_llvm/lib.rs +%endif +find vendor -name .cargo-checksum.json \ + -exec sed -i.uncheck -e 's/"files":{[^}]*}/"files":{ }/' '{}' '+' +find -name '*.rs' -type f -perm /111 -exec chmod -v -x '{}' '+' %build +export LIBSSH2_SYS_USE_PKG_CONFIG=1 %{?cmake_path:export PATH=%{cmake_path}:$PATH} -%{?library_path:export LIBRARY_PATH="%{library_path}"} -%{?rustflags:export RUSTFLAGS="-Clink-arg=-Wl,-z,relro,-z,now"} - -%configure --disable-option-checking --libdir=%{_prefix}/lib \ +%{?rustflags:export RUSTFLAGS="%{rustflags}"} +%global common_libdir %{_prefix}/lib +%global rustlibdir %{common_libdir}/rustlib +%ifarch %{arm} %{ix86} s390x +%define enable_debuginfo --debuginfo-level=0 --debuginfo-level-std=2 +%else +%define enable_debuginfo --debuginfo-level=2 +%endif +%ifnarch %{power64} +%define codegen_units_std --set rust.codegen-units-std=1 +%endif +%configure --disable-option-checking \ + --libdir=%{common_libdir} \ --build=%{rust_triple} --host=%{rust_triple} --target=%{rust_triple} \ - --local-rust-root=%{_prefix} --disable-jemalloc --disable-rpath --enable-llvm-link-shared \ - %{!?with_bundled_llvm: --llvm-root=%{llvm_root} --disable-codegen-tests} \ - --enable-debuginfo --disable-debuginfo-only-std --enable-debuginfo-tools --disable-debuginfo-lines \ - --enable-extended --enable-vendor --enable-verbose-tests --release-channel=stable - -python3 ./x.py build -python3 ./x.py doc + --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-rpath \ + %{enable_debuginfo} \ + --enable-extended \ + --tools=analysis,cargo,clippy,rls,rustfmt,src \ + --enable-vendor \ + --enable-verbose-tests \ + %{?codegen_units_std} \ + --release-channel=%{channel} +%{python} ./x.py build +%{python} ./x.py doc %install %{?cmake_path:export PATH=%{cmake_path}:$PATH} -%{?library_path:export LIBRARY_PATH="%{library_path}"} -%{?rustflags:export RUSTFLAGS="-Clink-arg=-Wl,-z,relro,-z,now"} - -DESTDIR=%{buildroot} python3 ./x.py install - -install -d %{buildroot}%{_libdir} -find %{buildroot}%{_prefix}/lib -maxdepth 1 -type f -name '*.so' -exec mv -v -t %{buildroot}%{_libdir} '{}' '+' - -find %{buildroot}%{_libdir} -maxdepth 1 -type f -name '*.so' -exec chmod -v +x '{}' '+' - +%{?rustflags:export RUSTFLAGS="%{rustflags}"} +DESTDIR=%{buildroot} %{python} ./x.py install +%if "%{_libdir}" != "%{common_libdir}" +mkdir -p %{buildroot}%{_libdir} +find %{buildroot}%{common_libdir} -maxdepth 1 -type f -name '*.so' \ + -exec mv -v -t %{buildroot}%{_libdir} '{}' '+' +%endif +find %{buildroot}%{_libdir} -maxdepth 1 -type f -name '*.so' \ + -exec chmod -v +x '{}' '+' (cd "%{buildroot}%{rustlibdir}/%{rust_triple}/lib" && find ../../../../%{_lib} -maxdepth 1 -name '*.so' | while read lib; do - cmp "$lib" "${lib##*/}" - ln -v -f -s -t . "$lib" + if [ -f "${lib##*/}" ]; then + # make sure they're actually identical! + cmp "$lib" "${lib##*/}" + ln -v -f -s -t . "$lib" + fi done) - find %{buildroot}%{rustlibdir} -maxdepth 1 -type f -exec rm -v '{}' '+' find %{buildroot}%{rustlibdir} -type f -name '*.orig' -exec rm -v '{}' '+' find %{buildroot}%{rustlibdir}/src -type f -name '*.py' -exec rm -v '{}' '+' +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 find %{buildroot}%{_docdir}/%{name}/html -empty -delete find %{buildroot}%{_docdir}/%{name}/html -type f -exec chmod -x '{}' '+' - -install -d %{buildroot}%{_datadir}/cargo/registry -install -d %{buildroot}%{_docdir}/cargo +mkdir -p %{buildroot}%{_datadir}/cargo/registry +mkdir -p %{buildroot}%{_docdir}/cargo ln -sT ../rust/html/cargo/ %{buildroot}%{_docdir}/cargo/html %check %{?cmake_path:export PATH=%{cmake_path}:$PATH} -%{?library_path:export LIBRARY_PATH="%{library_path}"} -%{?rustflags:export RUSTFLAGS="-Clink-arg=-Wl,-z,relro,-z,now"} - -python3 ./x.py test --no-fail-fast || : -python3 ./x.py test --no-fail-fast cargo || : -python3 ./x.py test --no-fail-fast clippy || : -python3 ./x.py test --no-fail-fast rls || : -python3 ./x.py test --no-fail-fast rustfmt || : - -%post -/sbin/ldconfig -%postun -/sbin/ldconfig +%{?rustflags:export RUSTFLAGS="%{rustflags}"} +%{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 || : +%ldconfig_scriptlets %files -%doc README.md %license COPYRIGHT LICENSE-APACHE LICENSE-MIT -%license src/libbacktrace/LICENSE-libbacktrace -%license %{_docdir}/%{name}/html/*.txt -%dir %{rustlibdir} -%dir %{rustlibdir}/%{rust_triple} -%dir %{rustlibdir}/%{rust_triple}/lib +%license vendor/backtrace-sys/src/libbacktrace/LICENSE-libbacktrace +%doc README.md %{_bindir}/rustc %{_bindir}/rustdoc %{_libdir}/*.so +%{_mandir}/man1/rustc.1* +%{_mandir}/man1/rustdoc.1* +%dir %{rustlibdir} +%dir %{rustlibdir}/%{rust_triple} +%dir %{rustlibdir}/%{rust_triple}/lib %{rustlibdir}/%{rust_triple}/lib/*.so -%{rustlibdir}/%{rust_triple}/codegen-backends/ -%exclude %{_docdir}/%{name}/{README.md,COPYRIGHT,LICENSE,*.old} -%exclude %{_docdir}/%{name}/LICENSE-{APACHE,MIT,THIRD-PARTY} -%exclude %{rustlibdir}/etc/lldb_*.py* -%exclude %{_bindir}/rust-lldb -%files devel +%files std-static %dir %{rustlibdir} %dir %{rustlibdir}/%{rust_triple} %dir %{rustlibdir}/%{rust_triple}/lib @@ -234,32 +335,58 @@ python3 ./x.py test --no-fail-fast rustfmt || : %files gdb %{_bindir}/rust-gdb %{rustlibdir}/etc/gdb_*.py* +%exclude %{_bindir}/rust-gdbgui + +%files lldb +%{_bindir}/rust-lldb +%{rustlibdir}/etc/lldb_*.py* + +%files doc +%docdir %{_docdir}/%{name} +%dir %{_docdir}/%{name} +%dir %{_docdir}/%{name}/html +%{_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 -%doc src/tools/cargo/README.md %license src/tools/cargo/LICENSE-APACHE src/tools/cargo/LICENSE-MIT src/tools/cargo/LICENSE-THIRD-PARTY -%dir %{_datadir}/cargo -%dir %{_datadir}/cargo/registry +%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 rustfmt-preview -%doc src/tools/rustfmt/{README,CHANGELOG,Configurations}.md -%license src/tools/rustfmt/LICENSE-{APACHE,MIT} +%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-preview +%files -n rls +%{_bindir}/rls %doc src/tools/rls/{README.md,COPYRIGHT,debugging.md} %license src/tools/rls/LICENSE-{APACHE,MIT} -%{_bindir}/rls -%files -n clippy-preview -%doc src/tools/clippy/{README.md,CHANGELOG.md} -%license src/tools/clippy/LICENSE +%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} @@ -268,24 +395,10 @@ python3 ./x.py test --no-fail-fast rustfmt || : %files analysis %{rustlibdir}/%{rust_triple}/analysis/ -%files help -%dir %{_docdir}/%{name} -%dir %{_docdir}/cargo -%dir %{_docdir}/%{name}/html -%docdir %{_docdir}/%{name} -%docdir %{_docdir}/cargo -%{_docdir}/%{name}/html/*/ -%{_docdir}/%{name}/html/*.html -%{_docdir}/%{name}/html/*.css -%{_docdir}/%{name}/html/*.js -%{_docdir}/%{name}/html/*.svg -%{_docdir}/%{name}/html/*.woff -%{_docdir}/cargo/html -%{_mandir}/man1/rustc.1* -%{_mandir}/man1/rustdoc.1* -%{_mandir}/man1/cargo*.1* - %changelog +* Mon Sep 21 2020 Jeffery.Gao - 1.45.2-1 +- Update to 1.45.2 + * Mon Apr 17 2020 zhujunhao - 1.29.1-4 - add llvm in rust diff --git a/rustc-1.29.1-src.tar.xz b/rustc-1.45.2-src.tar.xz similarity index 60% rename from rustc-1.29.1-src.tar.xz rename to rustc-1.45.2-src.tar.xz index 6ecd27dd7a79602faf978bd1529d4c39a56997a8..ee50aadfe62827bd43c3bc2f6943a8c4e931f671 100644 Binary files a/rustc-1.29.1-src.tar.xz and b/rustc-1.45.2-src.tar.xz differ