# TODO
+# - unpackaged %{rustlibdir}/%{rust_triple}/bin/rust-llvm-dwp
# - consider a rust-std package containing .../rustlib/$target
# This might allow multilib cross-compilation to work naturally.
# - package additional tools
# 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
-%define bootstrap_rust 1.51.0
-%define bootstrap_cargo 1.51.0
-%define bootstrap_date 2021-03-25
+%define bootstrap_rust 1.55.0
+%define bootstrap_cargo 1.55.0
+%define bootstrap_date 2021-09-09
%ifarch x32
%define with_cross 1
Summary: The Rust Programming Language
Summary(pl.UTF-8): Język programowania Rust
Name: rust
-Version: 1.52.1
+Version: 1.56.0
Release: 1
# Licenses: (rust itself) and (bundled libraries)
License: (Apache v2.0 or MIT) and (BSD and ISC and MIT)
Group: Development/Languages
Source0: https://static.rust-lang.org/dist/%{rustc_package}.tar.xz
-# Source0-md5: 2df4835e3a15cc6f7e06fa4a986285d2
+# Source0-md5: 3ad94ba9f05779800a5da6c02e00c444
Source1: https://static.rust-lang.org/dist/%{bootstrap_date}/rust-%{bootstrap_rust}-x86_64-unknown-linux-gnu.tar.xz
-# Source1-md5: 7640d6538716c6492e56f361e3af0631
+# Source1-md5: 59b0a04436f96250a307086b6fc2ce34
Source2: https://static.rust-lang.org/dist/%{bootstrap_date}/rust-%{bootstrap_rust}-i686-unknown-linux-gnu.tar.xz
-# Source2-md5: 64f117dc1ae1543c8910eaa9a971ddd4
+# Source2-md5: 693c87cf2fc1a41169f55fdbf8426a2e
Source3: https://static.rust-lang.org/dist/%{bootstrap_date}/rust-%{bootstrap_rust}-aarch64-unknown-linux-gnu.tar.xz
-# Source3-md5: 3ac79872671df7ea0215fd351f52ffcf
+# Source3-md5: 475f762804d4ad8695029a70f8b93a6d
Source4: https://static.rust-lang.org/dist/%{bootstrap_date}/rust-%{bootstrap_rust}-arm-unknown-linux-gnueabihf.tar.xz
-# Source4-md5: f624772d7c7ba2e83a51b4e9c1657f7b
+# Source4-md5: 56a568e97e7a5c3cb80569ab84f4657b
+Source5: https://static.rust-lang.org/dist/%{bootstrap_date}/rust-%{bootstrap_rust}-armv7-unknown-linux-gnueabihf.tar.xz
+# Source5-md5: 991a439bcdcbcf1b2bbe55ce9e90404f
URL: https://www.rust-lang.org/
# for src/compiler-rt
BuildRequires: cmake >= 3.4.3
BuildRequires: curl-devel
BuildRequires: libgit2-devel >= 1.1.0
BuildRequires: libstdc++-devel
-%{?with_system_llvm:BuildRequires: llvm-devel >= 9.0}
+%if %{with system_llvm}
+BuildRequires: llvm >= 10.0
+BuildRequires: llvm-devel >= 10.0
+%endif
BuildRequires: openssl-devel >= 1.0.1
BuildRequires: tar >= 1:1.22
BuildRequires: xz
BuildRequires: gcc-multilib-x32
BuildRequires: libgit2-devel >= 1.1.0
BuildRequires: libstdc++-devel
-%{?with_system_llvm:BuildRequires: llvm-devel >= 9.0}
+%{?with_system_llvm:BuildRequires: llvm-devel >= 10.0}
BuildRequires: openssl-devel >= 1.0.1
BuildRequires: zlib-devel
%else
BuildRequires: libgit2-devel(x86-x32) >= 1.1.0
BuildRequires: libstdc++-multilib-64-devel
%if %{with system_llvm}
-BuildRequires: llvm-devel(x86-64) >= 9.0
-BuildRequires: llvm-devel(x86-x32) >= 9.0
+BuildRequires: llvm-devel(x86-64) >= 10.0
+BuildRequires: llvm-devel(x86-x32) >= 10.0
%endif
BuildRequires: openssl-devel(x86-64)
BuildRequires: openssl-devel(x86-x32)
%ifarch x32
Requires: %{name}-std(x86-64) = %{version}-%{release}
%endif
+Obsoletes: rust-analyzer < 1.53.0
# Only x86_64 and i686 are Tier 1 platforms at this time.
# x32 is Tier 2, only rust-std is available (no rustc or cargo).
# https://doc.rust-lang.org/nightly/rustc/platform-support.html
%define _lib lib64
%define _libdir %{_prefix}/lib64
%else
-%ifarch armv6hl armv7hl armv7hnl
+%ifarch armv6hl
%define rust_triple arm-unknown-linux-gnueabihf
%define rust_host_triple %{rust_triple}
%define rust_bootstrap_triple %{rust_triple}
%else
+%ifarch armv7hl armv7hnl
+%define rust_triple armv7-unknown-linux-gnueabihf
+%define rust_host_triple %{rust_triple}
+%define rust_bootstrap_triple %{rust_triple}
+%else
%define rust_triple %{_target_cpu}-unknown-linux-gnu
%define rust_host_triple %{rust_triple}
%define rust_bootstrap_triple %{rust_triple}
%endif
%endif
+%endif
%if %{without bootstrap}
%define local_rust_root %{_prefix}
%description std -l pl.UTF-8
Standardowa biblioteka Rusta.
-%package analyzer
-Summary: Implementation of Language Server Protocol for Rust
-Summary(pl.UTF-8): Implementacja Language Server Protocol dla Rusta
-Group: Development/Tools
-Requires: %{name} = %{version}-%{release}
-
-%description analyzer
-Implementation of Language Server Protocol for Rust.
-
-%description analyzer -l pl.UTF-8
-Implementacja Language Server Protocol dla Rusta.
-
%package debugger-common
Summary: Common debugger pretty printers for Rust
Summary(pl.UTF-8): Narzędzia wypisujące struktury Rusa wspólne dla różnych debuggerów
%ifarch aarch64
tar xf %{SOURCE3}
%endif
-%ifarch armv6hl armv7hl armv7hnl
+%ifarch armv6hl
tar xf %{SOURCE4}
%endif
+%ifarch armv7hl armv7hnl
+tar xf %{SOURCE5}
+%endif
%{__mv} %{bootstrap_root} %{bootstrap_root}-root
%{bootstrap_root}-root/install.sh \
--components=cargo,rustc,rust-std-%{rust_bootstrap_triple} \
mkdir -p src/llvm-project/libunwind
%endif
-# extract bundled licenses for packaging
-sed -e '/*\//q' library/backtrace/crates/backtrace-sys/src/libbacktrace/backtrace.h \
- >library/backtrace/crates/backtrace-sys/src/libbacktrace/LICENSE-libbacktrace
-
# rust-gdb has hardcoded SYSROOT/lib -- let's make it noarch
sed -i -e 's#DIRECTORY=".*"#DIRECTORY="%{_datadir}/%{name}/etc"#' \
src/etc/rust-gdb
+# cargo has hardcoded libexec path - honour rpm _libexecdir
+%if "%{_libexecdir}" != "%{_prefix}/libexec"
+suffix="%(echo "%{_libexecdir}" | %{__sed} -e 's,^%{_prefix}/,,')"
+%{__sed} -i -e 's,"libexec","'${suffix}'",' \
+ src/bootstrap/dist.rs \
+ src/tools/cargo/src/cargo/ops/registry/auth.rs
+%{__sed} -i -e 's,libexec/,'${suffix}'/,' src/tools/cargo/tests/testsuite/credential_process.rs
+%endif
+
# 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.
%files
%defattr(644,root,root,755)
-%doc COPYRIGHT LICENSE-APACHE LICENSE-MIT README.md library/backtrace/crates/backtrace-sys/src/libbacktrace/LICENSE-libbacktrace
-%attr(755,root,root) %{_bindir}/miri
+%doc COPYRIGHT LICENSE-APACHE LICENSE-MIT README.md
%attr(755,root,root) %{_bindir}/rustc
%attr(755,root,root) %{_bindir}/rustdoc
%attr(755,root,root) %{_bindir}/rustfmt
%attr(755,root,root) %{rustlibdir}/%{rust_triple}/lib/*.so
%{rustlibdir}/%{rust_triple}/lib/*.rlib
-%files analyzer
-%defattr(644,root,root,755)
-%attr(755,root,root) %{_bindir}/rust-analyzer
-
%files debugger-common
%defattr(644,root,root,755)
%dir %{_datadir}/%{name}
%attr(755,root,root) %{_bindir}/cargo
%attr(755,root,root) %{_bindir}/cargo-clippy
%attr(755,root,root) %{_bindir}/cargo-fmt
-%attr(755,root,root) %{_bindir}/cargo-miri
%attr(755,root,root) %{_bindir}/clippy-driver
%attr(755,root,root) %{_libexecdir}/cargo-credential-1password
%{_mandir}/man1/cargo*.1*