diff --git a/cargo-config b/cargo-config new file mode 100644 index 0000000000000000000000000000000000000000..621c190a45fb404035d3285a4737f691d7b119a2 --- /dev/null +++ b/cargo-config @@ -0,0 +1,5 @@ +[source.crates-io] +replace-with = 'ustc' + +[source.ustc] +registry = "sparse+https://mirrors.ustc.edu.cn/crates.io-index/" diff --git a/cargo-config.csh b/cargo-config.csh new file mode 100644 index 0000000000000000000000000000000000000000..7613473719d1fdccdef429b66b565403a1caa799 --- /dev/null +++ b/cargo-config.csh @@ -0,0 +1,5 @@ +# Copy cargo config from skel if it is not exist +if ( ! -e "$HOME/.cargo/config.toml" ) then + mkdir -p $HOME/.cargo + cp -f /etc/skel/.cargo/config.toml $HOME/.cargo +endif diff --git a/cargo-config.sh b/cargo-config.sh new file mode 100644 index 0000000000000000000000000000000000000000..2338945be912705cafbb21934bdb7143098f4aab --- /dev/null +++ b/cargo-config.sh @@ -0,0 +1,5 @@ +# Copy cargo config from skel if it is not exist +if [ ! -f "$HOME/.cargo/config.toml" ] ; then + mkdir -p $HOME/.cargo + cp -f /etc/skel/.cargo/config.toml $HOME/.cargo +fi diff --git a/rust.spec b/rust.spec index 472d90fb182b02ccbf1b7e65c564d8ccfbc54381..9287643521277912544f8dbf5336a6bd71bf7782 100644 --- a/rust.spec +++ b/rust.spec @@ -1,6 +1,6 @@ -%define anolis_release 1 +%define anolis_release 2 -# Only x86_64 and i686 are Tier 1 platforms at this time. +# Only i686, x86_64 and aarch64 are Tier 1 platforms at this time. # https://doc.rust-lang.org/nightly/rustc/platform-support.html %global rust_arches x86_64 aarch64 @@ -88,8 +88,12 @@ Patch2: rustc-1.61.0-rust-gdb-substitute-path.patch ### Distro-specific patches below ### # Simple rpm macros for rust-toolset (as opposed to full rust-packaging) Source100: macros.rust-toolset +# Default to use ustc as crates source +Source101: cargo-config +Source102: cargo-config.sh +Source103: cargo-config.csh -# Disable cargo->libgit2->libssh2 on RHEL, as it's not approved for FIPS (rhbz1732949) +# Disable cargo->libgit2->libssh2 Patch100: rustc-1.65.0-disable-libssh2.patch # libcurl on old distro doesn't have http2, but since cargo requests it, curl-sys @@ -227,17 +231,6 @@ Requires: /usr/bin/cc %global common_libdir %{_prefix}/lib %global rustlibdir %{common_libdir}/rustlib -%if %defined mingw_targets -BuildRequires: mingw32-filesystem >= 95 -BuildRequires: mingw64-filesystem >= 95 -BuildRequires: mingw32-crt -BuildRequires: mingw64-crt -BuildRequires: mingw32-gcc -BuildRequires: mingw64-gcc -BuildRequires: mingw32-winpthreads-static -BuildRequires: mingw64-winpthreads-static -%endif - %if %defined wasm_targets BuildRequires: clang BuildRequires: lld @@ -265,37 +258,6 @@ Requires: glibc-devel >= 2.17 This package includes the standard libraries for building applications written in Rust. -%if %defined mingw_targets -%{lua: do - for triple in string.gmatch(rpm.expand("%{mingw_targets}"), "%S+") do - local subs = { - triple = triple, - name = rpm.expand("%{name}"), - verrel = rpm.expand("%{version}-%{release}"), - mingw = string.sub(triple, 1, 4) == "i686" and "mingw32" or "mingw64", - } - local s = string.gsub([[ - -%package std-static-{{triple}} -Summary: Standard library for Rust {{triple}} -BuildArch: noarch -Provides: {{mingw}}-rust = {{verrel}} -Provides: {{mingw}}-rustc = {{verrel}} -Requires: {{mingw}}-crt -Requires: {{mingw}}-gcc -Requires: {{mingw}}-winpthreads-static -Requires: {{name}} = {{verrel}} - -%description std-static-{{triple}} -This package includes the standard libraries for building applications -written in Rust for the MinGW target {{triple}}. - -]], "{{(%w+)}}", subs) - print(s) - end -end} -%endif - %if %defined wasm_targets %{lua: do for triple in string.gmatch(rpm.expand("%{wasm_targets}"), "%S+") do @@ -585,27 +547,6 @@ if [ "$max_cpus" -ge 1 -a "$max_cpus" -lt "$ncpus" ]; then ncpus="$max_cpus" fi -%if %defined mingw_targets -%{lua: do - local cfg = "" - for triple in string.gmatch(rpm.expand("%{mingw_targets}"), "%S+") do - local subs = { - triple = triple, - mingw = string.sub(triple, 1, 4) == "i686" and "mingw32" or "mingw64", - } - local s = string.gsub([[ - --set target.{{triple}}.linker=%{{{mingw}}_cc} - --set target.{{triple}}.cc=%{{{mingw}}_cc} - --set target.{{triple}}.ar=%{{{mingw}}_ar} - --set target.{{triple}}.ranlib=%{{{mingw}}_ranlib} - ]], "{{(%w+)}}", subs) - cfg = cfg .. " " .. s - end - cfg = string.gsub(cfg, "%s+", " ") - rpm.define("mingw_target_config " .. cfg) -end} -%endif - %if %defined wasm_targets %make_build --quiet -C %{wasi_libc_dir} CC=clang AR=llvm-ar NM=llvm-nm %{lua: do @@ -628,7 +569,6 @@ end} --set target.%{rust_triple}.cxx=%{__cxx} \ --set target.%{rust_triple}.ar=%{__ar} \ --set target.%{rust_triple}.ranlib=%{__ranlib} \ - %{?mingw_target_config} \ %{?wasm_target_config} \ --python=%{__python3} \ --local-rust-root=%{local_rust_root} \ @@ -655,7 +595,7 @@ end} %{__python3} ./x.py build -j "$ncpus" %{__python3} ./x.py doc -for triple in %{?mingw_targets} %{?wasm_targets}; do +for triple in %{?wasm_targets}; do %{__python3} ./x.py build --target=$triple std done @@ -664,7 +604,7 @@ done DESTDIR=%{buildroot} %{__python3} ./x.py install -for triple in %{?mingw_targets} %{?wasm_targets}; do +for triple in %{?wasm_targets}; do DESTDIR=%{buildroot} %{__python3} ./x.py install --target=$triple std done @@ -742,6 +682,11 @@ rm -f %{buildroot}%{rustlibdir}/%{rust_triple}/bin/rust-ll* # This allows users to build packages using Rust Toolset. %{__install} -D -m 644 %{SOURCE100} %{buildroot}%{rpmmacrodir}/macros.rust-toolset +# Default to use ustc mirror for crates +%{__install} -D -m 644 %{SOURCE101} %{buildroot}%{_sysconfdir}/skel/.cargo/config.toml +%{__install} -D -m 644 %{SOURCE102} %{buildroot}%{_sysconfdir}/profile.d/cargo-config.sh +%{__install} -D -m 644 %{SOURCE103} %{buildroot}%{_sysconfdir}/profile.d/cargo-config.csh + %check %{export_rust_env} @@ -752,7 +697,7 @@ env RUSTC=%{buildroot}%{_bindir}/rustc \ %{buildroot}%{_bindir}/cargo run --manifest-path build/hello-world/Cargo.toml # Try a build sanity-check for other targets -for triple in %{?mingw_targets} %{?wasm_targets}; do +for triple in %{?wasm_targets}; do env RUSTC=%{buildroot}%{_bindir}/rustc \ LD_LIBRARY_PATH="%{buildroot}%{_libdir}:$LD_LIBRARY_PATH" \ %{buildroot}%{_bindir}/cargo build --manifest-path build/hello-world/Cargo.toml --target=$triple @@ -795,33 +740,6 @@ rm -rf "./build/%{rust_triple}/stage2-tools/%{rust_triple}/cit/" %dir %{rustlibdir}/%{rust_triple}/lib %{rustlibdir}/%{rust_triple}/lib/*.rlib - -%if %defined mingw_targets -%{lua: do - for triple in string.gmatch(rpm.expand("%{mingw_targets}"), "%S+") do - local subs = { - triple = triple, - rustlibdir = rpm.expand("%{rustlibdir}"), - } - local s = string.gsub([[ - -%files std-static-{{triple}} -%dir {{rustlibdir}} -%dir {{rustlibdir}}/{{triple}} -%dir {{rustlibdir}}/{{triple}}/lib -{{rustlibdir}}/{{triple}}/lib/*.rlib -{{rustlibdir}}/{{triple}}/lib/rs*.o -%exclude {{rustlibdir}}/{{triple}}/lib/*.dll -%exclude {{rustlibdir}}/{{triple}}/lib/*.dll.a -%exclude {{rustlibdir}}/{{triple}}/lib/self-contained - -]], "{{(%w+)}}", subs) - print(s) - end -end} -%endif - - %if %defined wasm_targets %{lua: do for triple in string.gmatch(rpm.expand("%{wasm_targets}"), "%S+") do @@ -882,6 +800,8 @@ end} %files -n cargo %license src/tools/cargo/LICENSE-{APACHE,MIT,THIRD-PARTY} %doc src/tools/cargo/README.md +%config(noreplace) %{_sysconfdir}/skel/.cargo/config.toml +%{_sysconfdir}/profile.d/cargo-config.* %{_bindir}/cargo %{_libexecdir}/cargo* %{_mandir}/man1/cargo*.1* @@ -924,6 +844,10 @@ end} %{rpmmacrodir}/macros.rust-toolset %changelog +* Sat Apr 8 2023 Funda Wang - 1.68.2-2 +- Default to use ustc mirror for crates +- Cleanup spec + * Wed Mar 29 2023 Funda Wang - 1.68.2-1 - New version 1.68.2