rustup/rustup.spec
William Brown 1ab7fa3e9d Accepting request 924402 from home:mrostecki:branches:devel:languages:rust
- Add symlink to rustup-init. rustup and rustup-init are the same
  binary, but that binary behaves diferently based on the name it's
  executed by.
  rustup-init takes care of the initial setup, which includes
  setting PATH, modifying .bashrc etc. It's supposed to be called
  only once.
  rustup doesn't perform those steps and it only manages
  toolchains. It can be used the entire time.
- Install bash and zsh completion.

OBS-URL: https://build.opensuse.org/request/show/924402
OBS-URL: https://build.opensuse.org/package/show/devel:languages:rust/rustup?expand=0&rev=5
2021-10-10 22:55:18 +00:00

105 lines
4.2 KiB
RPMSpec

#
# spec file for package rustup
#
# Copyright (c) 2021 SUSE LLC
# Copyright (c) 2021 William Brown <william@blackhats.net.au>
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define rust_version 1.56
%define obsolete_rust_versioned() \
Obsoletes: %{1}1.55%{?2:-%{2}} \
Provides: %{1}1.55%{?2:-%{2}} \
Obsoletes: %{1}1.54%{?2:-%{2}} \
Provides: %{1}1.54%{?2:-%{2}} \
Obsoletes: %{1}1.53%{?2:-%{2}} \
Provides: %{1}1.53%{?2:-%{2}} \
Obsoletes: %{1}1.52%{?2:-%{2}} \
Obsoletes: %{1}1.51%{?2:-%{2}}
Name: rustup
Version: 1.24.3~git0.ce5817a9
Release: 0
Summary: A tool for managing user Rust toolchains
License: ( 0BSD OR MIT OR Apache-2.0 ) AND ( Apache-2.0 OR BSL-1.0 ) AND ( Apache-2.0 OR ISC OR MIT ) AND ( Apache-2.0 OR MIT ) AND ( MIT OR Apache-2.0 OR Zlib ) AND ( MIT OR Zlib OR Apache-2.0 ) AND ( Unlicense OR MIT ) AND ( Zlib OR Apache-2.0 OR MIT ) AND Apache-2.0 AND BSD-3-Clause AND CC0-1.0 AND ISC AND MIT
Group: Development/Languages/Rust
Url: https://github.com/rust-lang/rustup
Source0: %{name}-%{version}.tar.xz
Source1: vendor.tar.xz
Source2: cargo_config
Source3: %{name}-rpmlintrc
BuildRequires: cargo-packaging
BuildRequires: pkgconfig(openssl)
ExclusiveArch: %{rust_tier1_arches}
%obsolete_rust_versioned rls
%obsolete_rust_versioned rust doc
%obsolete_rust_versioned rust src
%obsolete_rust_versioned rust analysis
%obsolete_rust_versioned cargo doc
Obsoletes: cargo-doc < %{rust_version}
Obsoletes: rustfmt < %{rust_version}
Obsoletes: cargo-fmt < %{rust_version}
Obsoletes: clippy < %{rust_version}
Obsoletes: rust-analysis < %{rust_version}
Obsoletes: rls < %{rust_version}
Obsoletes: rust-src < %{rust_version}
Obsoletes: rust-doc < %{rust_version}
%description
A tool to manager user Rust toolchains. This is generally used by developers
managing multiple parallel toolchains in their environment.
%prep
%setup -q
%setup -qa1
cp %{SOURCE2} .cargo/config
# Remove exec bits to prevent an issue in fedora shebang checking. Uncomment only if required.
find vendor -type f -name \*.rs -exec chmod -x '{}' \;
%build
%{cargo_build} --features=no-self-update
%install
# manual process
install -D -d -m 0755 %{buildroot}%{_bindir}
install -m 0755 %{_builddir}/%{name}-%{version}/target/release/rustup-init %{buildroot}%{_bindir}/rustup
# rustup-init and rustup are the same binary, but that binary behaves
# differently based on the name it's executed by.
# rustup-init takes care of the initial setup, which includes setting PATH,
# modifying .bashrc etc. It's supposed to be called only once.
# rustup doesn't perform those steps and it only manages toolchains. It
# can be used the entire time.
ln -sf rustup %{buildroot}%{_bindir}/rustup-init
# shell completions
install -D -d -m 0755 %{buildroot}%{_datadir}/bash-completion/completions
ls %{buildroot}%{_bindir}
ls %{buildroot}%{_bindir}/rustup
%{buildroot}%{_bindir}/rustup completions bash > %{buildroot}%{_datadir}/bash-completion/completions/rustup
%{buildroot}%{_bindir}/rustup completions bash cargo > %{buildroot}%{_datadir}/bash-completion/completions/cargo
install -D -d -m 0755 %{buildroot}%{_datadir}/zsh/site-functions
%{buildroot}%{_bindir}/rustup completions zsh > %{buildroot}%{_datadir}/zsh/site-functions/_rustup
%{buildroot}%{_bindir}/rustup completions zsh cargo > %{buildroot}%{_datadir}/zsh/site-functions/_cargo
%files
%{_bindir}/rustup
%{_bindir}/rustup-init
%{_datadir}/bash-completion/completions/cargo
%{_datadir}/bash-completion/completions/rustup
%{_datadir}/zsh/site-functions/_cargo
%{_datadir}/zsh/site-functions/_rustup
%changelog