CBL-Mariner/SPECS/rust/rust.spec

204 строки
7.5 KiB
Plaintext

# Prevent librustc_driver from inadvertently being listed as a requirement
%global __requires_exclude ^librustc_driver-
# Release date and version of stage 0 compiler can be found in "src/stage0.txt" inside the extracted "Source0".
# Look for "date:" and "rustc:".
%define release_date 2022-05-19
%define stage0_version 1.61.0
Summary: Rust Programming Language
Name: rust
Version: 1.62.1
Release: 3%{?dist}
License: ASL 2.0 OR MIT
Vendor: Microsoft Corporation
Distribution: Mariner
Group: Applications/System
URL: https://www.rust-lang.org/
Source0: https://static.rust-lang.org/dist/rustc-%{version}-src.tar.xz
# Note: the rust-%%{version}-cargo.tar.gz file contains a cache created by capturing the contents downloaded into $CARGO_HOME.
# To update the cache run:
# [repo_root]/toolkit/scripts/build_cargo_cache.sh rustc-%%{version}-src.tar.gz
Source1: %{name}-%{version}-src-cargo.tar.gz
Source2: https://static.rust-lang.org/dist/%{release_date}/cargo-%{stage0_version}-x86_64-unknown-linux-gnu.tar.gz
Source3: https://static.rust-lang.org/dist/%{release_date}/rustc-%{stage0_version}-x86_64-unknown-linux-gnu.tar.gz
Source4: https://static.rust-lang.org/dist/%{release_date}/rust-std-%{stage0_version}-x86_64-unknown-linux-gnu.tar.gz
Source5: https://static.rust-lang.org/dist/%{release_date}/cargo-%{stage0_version}-aarch64-unknown-linux-gnu.tar.gz
Source6: https://static.rust-lang.org/dist/%{release_date}/rustc-%{stage0_version}-aarch64-unknown-linux-gnu.tar.gz
Source7: https://static.rust-lang.org/dist/%{release_date}/rust-std-%{stage0_version}-aarch64-unknown-linux-gnu.tar.gz
BuildRequires: binutils
BuildRequires: cmake
BuildRequires: curl-devel
BuildRequires: git
BuildRequires: glibc
BuildRequires: ninja-build
BuildRequires: python3
%if %{with_check}
BuildRequires: glibc-static >= 2.35-3%{?dist}
%endif
# rustc uses a C compiler to invoke the linker, and links to glibc in most cases
Requires: binutils
Requires: gcc
Requires: glibc-devel
Provides: cargo = %{version}-%{release}
%description
Rust Programming Language
%prep
# Setup .cargo directory
mkdir -p $HOME
pushd $HOME
tar -xf %{SOURCE1} --no-same-owner
popd
%autosetup -p1 -n rustc-%{version}-src
# Rust doesn't recognize our .tar.gz bootstrap files when XZ support is enabled
# This causes stage 0 bootstrap to look online for sources
# So, we remove XZ support detection in the bootstrap program
sed -i "s/tarball_suffix = '.tar.xz' if support_xz() else '.tar.gz'/tarball_suffix = '.tar.gz'/g" src/bootstrap/bootstrap.py
# Setup build/cache directory
BUILD_CACHE_DIR="build/cache/%{release_date}"
mkdir -pv "$BUILD_CACHE_DIR"
%ifarch x86_64
mv %{SOURCE2} "$BUILD_CACHE_DIR"
mv %{SOURCE3} "$BUILD_CACHE_DIR"
mv %{SOURCE4} "$BUILD_CACHE_DIR"
%endif
%ifarch aarch64
mv %{SOURCE5} "$BUILD_CACHE_DIR"
mv %{SOURCE6} "$BUILD_CACHE_DIR"
mv %{SOURCE7} "$BUILD_CACHE_DIR"
%endif
%build
# Disable symbol generation
export CFLAGS="`echo " %{build_cflags} " | sed 's/ -g//'`"
export CXXFLAGS="`echo " %{build_cxxflags} " | sed 's/ -g//'`"
sh ./configure \
--prefix=%{_prefix} \
--enable-extended \
--tools="cargo,rustfmt" \
--release-channel="stable" \
--release-description="CBL-Mariner %{version}-%{release}"
# SUDO_USER=root bypasses a check in the python bootstrap that
# makes rust refuse to pull sources from the internet
USER=root SUDO_USER=root %make_build
%check
ln -s %{_prefix}/src/mariner/BUILD/rustc-%{version}-src/build/x86_64-unknown-linux-gnu/stage2-tools-bin/rustfmt %{_prefix}/src/mariner/BUILD/rustc-%{version}-src/build/x86_64-unknown-linux-gnu/stage0/bin/
%make_build check
%install
USER=root SUDO_USER=root %make_install
rm %{buildroot}%{_docdir}/%{name}/html/.lock
rm %{buildroot}%{_docdir}/%{name}/*.old
%ldconfig_scriptlets
%files
%license LICENSE-MIT LICENSE-APACHE COPYRIGHT
%doc CONTRIBUTING.md README.md RELEASES.md
%{_bindir}/rustc
%{_bindir}/rustdoc
%{_bindir}/rust-lldb
%{_mandir}/man1/*
%{_libdir}/lib*.so
%{_libdir}/rustlib/*
%{_libexecdir}/cargo-credential-1password
%{_bindir}/rust-gdb
%{_bindir}/rust-gdbgui
%doc %{_docdir}/%{name}/html/*
%{_docdir}/%{name}/html/.stamp
%doc %{_docdir}/%{name}/README.md
%doc %{_docdir}/%{name}/COPYRIGHT
%doc %{_docdir}/%{name}/LICENSE-APACHE
%doc %{_docdir}/%{name}/LICENSE-MIT
%doc src/tools/rustfmt/{README,CHANGELOG,Configurations}.md
%doc src/tools/clippy/{README.md,CHANGELOG.md}
%{_bindir}/cargo
%{_bindir}/cargo-fmt
%{_bindir}/rustfmt
%{_datadir}/zsh/*
%doc %{_docdir}/%{name}/LICENSE-THIRD-PARTY
%{_sysconfdir}/bash_completion.d/cargo
%changelog
* Tue Nov 01 2022 Pawel Winogrodzki <pawelwi@microsoft.com> - 1.62.1-3
- Adding missing test dependency on "glibc-static".
* Wed Aug 31 2022 Olivia Crain <oliviacrain@microsoft.com> - 1.62.1-2
- Breaking change: Configure as a stable release, which disables unstable features
- Add runtime requirements on gcc, binutils, glibc-devel
- Package ASL 2.0 license, additional copyright information
- Fix licensing info- dual-licensed, not multiply-licensed
- License verified
* Thu Aug 18 2022 Chris Co <chrco@microsoft.com> - 1.62.1-1
- Updating to version 1.62.1
* Mon Mar 07 2022 Pawel Winogrodzki <pawelwi@microsoft.com> - 1.59.0-1
- Updating to version 1.59.0 to fix CVE-2022-21658.
- Updating build instructions to fix tests.
* Thu Mar 03 2022 Bala <balakumaran.kannan@microsoft.com> - 1.56.1-2
- Build rustfmt tool as it is required to run PTest
- Create softlink for rustfmt in stage0
* Wed Nov 24 2021 Pawel Winogrodzki <pawelwi@microsoft.com> - 1.56.1-1
- Updating to version 1.56.1.
- Switching to building with Python 3.
* Mon May 17 2021 Thomas Crain <thcrain@microsoft.com> - 1.47.0-5
- Add provides for 'cargo' from the base package
* Tue May 04 2021 Thomas Crain <thcrain@microsoft.com> - 1.47.0-4
- Remove XZ support detection in bootstrap
* Mon Apr 26 2021 Thomas Crain <thcrain@microsoft.com> - 1.47.0-3
- Patch CVE-2020-36317, CVE-2021-28875, CVE-2021-28876, CVE-2021-28877, CVE-2021-28878
- Redo patch for CVE-2021-28879 with regards to patches listed above
* Mon Apr 19 2021 Thomas Crain <thcrain@microsoft.com> - 1.47.0-2
- Patch CVE-2021-28879
* Wed Feb 24 2021 Andrew Phelps <anphel@microsoft.com> - 1.47.0-1
- Update version to 1.47.0
* Wed Jan 06 2021 Thomas Crain <thcrain@microsoft.com> - 1.39.0-8
- Add python-xml BR for package test
- Add ignore-linker-output-non-utf8-test patch to skip faulty test
* Wed Aug 12 2020 Mateusz Malisz <mamalisz@microsoft.com> - 1.39.0-7
- Add patch for the build to not fail on file not found error.
* Fri Jun 12 2020 Henry Beberman <henry.beberman@microsoft.com> - 1.39.0-6
- Temporarily disable generation of debug symbols.
* Thu May 28 2020 Chris Co <chrco@microsoft.com> - 1.39.0-5
- Update source checkout and prep steps
* Sat May 09 2020 Nick Samson <nisamson@microsoft.com> - 1.39.0-4
- Added %%license line automatically
* Mon May 4 2020 Nicolas Guibourge <nicolasg@microsoft.com> - 1.39.0-3
- Fix build issue when building from Docker
* Tue Apr 21 2020 Andrew Phelps <anphel@microsoft.com> - 1.39.0-2
- Support building offline.
* Thu Mar 19 2020 Henry Beberman <henry.beberman@microsoft.com> - 1.39.0-1
- Update to 1.39.0. Fix URL. Fix Source0 URL. License verified.
* Thu Feb 27 2020 Henry Beberman <hebeberm@microsoft.com> - 1.34.2-3
- Set SUDO_USER and USER to allow rust to hydrate as root
* Wed Sep 25 2019 Saravanan Somasundaram <sarsoma@microsoft.com> - 1.34.2-2
- Initial CBL-Mariner import from Photon (license: Apache2).
* Wed May 15 2019 Ankit Jain <ankitja@vmware.com> - 1.34.2-1
- Initial build. First version