From 06ab0e9a5fcd9a24dcca9e92c9345d1cf7b7d95b Mon Sep 17 00:00:00 2001 From: jchzhou Date: Fri, 26 Sep 2025 11:02:39 +0800 Subject: [PATCH] Upgrade to 1.90.0 --- 0001-Use-lld-provided-by-system.patch | 20 +-- 0001-add-support-for-ppc64le.patch | 44 +++--- cargo_vendor.attr | 2 + cargo_vendor.prov | 127 ++++++++++++++++++ ...st-1.90.0-aarch64-unknown-linux-gnu.tar.xz | 4 +- ....90.0-loongarch64-unknown-linux-gnu.tar.xz | 4 +- ...-1.90.0-riscv64gc-unknown-linux-gnu.tar.xz | 4 +- ...ust-1.90.0-x86_64-unknown-linux-gnu.tar.xz | 4 +- rust.spec | 56 +++++--- rustc-1.86.0-src.tar.xz | 3 - rustc-1.86.0-src.tar.xz.asc | 16 --- ...atch => rustc-1.90.0-disable-libssh2.patch | 28 ++-- rustc-1.90.0-src.tar.xz | 3 + rustc-1.90.0-src.tar.xz.asc | 16 +++ 14 files changed, 236 insertions(+), 95 deletions(-) create mode 100644 cargo_vendor.attr create mode 100644 cargo_vendor.prov rename rust-1.85.0-aarch64-unknown-linux-gnu.tar.xz => rust-1.90.0-aarch64-unknown-linux-gnu.tar.xz (32%) rename rust-1.85.0-loongarch64-unknown-linux-gnu.tar.xz => rust-1.90.0-loongarch64-unknown-linux-gnu.tar.xz (32%) rename rust-1.85.0-riscv64gc-unknown-linux-gnu.tar.xz => rust-1.90.0-riscv64gc-unknown-linux-gnu.tar.xz (32%) rename rust-1.85.0-x86_64-unknown-linux-gnu.tar.xz => rust-1.90.0-x86_64-unknown-linux-gnu.tar.xz (32%) delete mode 100644 rustc-1.86.0-src.tar.xz delete mode 100644 rustc-1.86.0-src.tar.xz.asc rename rustc-1.86.0-disable-libssh2.patch => rustc-1.90.0-disable-libssh2.patch (43%) create mode 100644 rustc-1.90.0-src.tar.xz create mode 100644 rustc-1.90.0-src.tar.xz.asc diff --git a/0001-Use-lld-provided-by-system.patch b/0001-Use-lld-provided-by-system.patch index 63c9b14..1e5816b 100644 --- a/0001-Use-lld-provided-by-system.patch +++ b/0001-Use-lld-provided-by-system.patch @@ -1,4 +1,4 @@ -From 687112c89c9058ef1e79f1c3a974940b1ae43ea3 Mon Sep 17 00:00:00 2001 +From 0641fdd833785914f1ead6e1ab374beea5b55437 Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Fri, 16 Aug 2024 10:12:58 -0700 Subject: [PATCH] Use lld provided by system @@ -12,10 +12,10 @@ Subject: [PATCH] Use lld provided by system 5 files changed, 5 insertions(+), 4 deletions(-) diff --git a/compiler/rustc_target/src/spec/base/wasm.rs b/compiler/rustc_target/src/spec/base/wasm.rs -index 81b96cd39ffa..4c9916af826b 100644 +index 88e7af5e669..14100a683f9 100644 --- a/compiler/rustc_target/src/spec/base/wasm.rs +++ b/compiler/rustc_target/src/spec/base/wasm.rs -@@ -85,8 +85,7 @@ macro_rules! args { +@@ -86,8 +86,7 @@ macro_rules! args { // arguments just yet limit_rdylib_exports: false, @@ -26,7 +26,7 @@ index 81b96cd39ffa..4c9916af826b 100644 pre_link_args, diff --git a/compiler/rustc_target/src/spec/targets/aarch64_unknown_none_softfloat.rs b/compiler/rustc_target/src/spec/targets/aarch64_unknown_none_softfloat.rs -index 3b719ebaf07e..8b4fecee68f0 100644 +index 35a4dd72b86..a9c8fc5edb8 100644 --- a/compiler/rustc_target/src/spec/targets/aarch64_unknown_none_softfloat.rs +++ b/compiler/rustc_target/src/spec/targets/aarch64_unknown_none_softfloat.rs @@ -15,7 +15,7 @@ pub(crate) fn target() -> Target { @@ -39,7 +39,7 @@ index 3b719ebaf07e..8b4fecee68f0 100644 relocation_model: RelocModel::Static, disable_redzone: true, diff --git a/compiler/rustc_target/src/spec/targets/aarch64_unknown_uefi.rs b/compiler/rustc_target/src/spec/targets/aarch64_unknown_uefi.rs -index 9656024ddaa1..2099fa17229f 100644 +index 327b52389b9..17313d7e8b3 100644 --- a/compiler/rustc_target/src/spec/targets/aarch64_unknown_uefi.rs +++ b/compiler/rustc_target/src/spec/targets/aarch64_unknown_uefi.rs @@ -9,6 +9,7 @@ pub(crate) fn target() -> Target { @@ -51,7 +51,7 @@ index 9656024ddaa1..2099fa17229f 100644 Target { llvm_target: "aarch64-unknown-windows".into(), diff --git a/compiler/rustc_target/src/spec/targets/x86_64_unknown_none.rs b/compiler/rustc_target/src/spec/targets/x86_64_unknown_none.rs -index e14a36735894..b493d7d98b46 100644 +index 1a6343595f5..8015b082cd1 100644 --- a/compiler/rustc_target/src/spec/targets/x86_64_unknown_none.rs +++ b/compiler/rustc_target/src/spec/targets/x86_64_unknown_none.rs @@ -19,7 +19,7 @@ pub(crate) fn target() -> Target { @@ -64,17 +64,17 @@ index e14a36735894..b493d7d98b46 100644 features: "-mmx,-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2,-avx,-avx2,+soft-float".into(), supported_sanitizers: SanitizerSet::KCFI | SanitizerSet::KERNELADDRESS, diff --git a/compiler/rustc_target/src/spec/targets/x86_64_unknown_uefi.rs b/compiler/rustc_target/src/spec/targets/x86_64_unknown_uefi.rs -index bce6aa0ebc6b..7fa1148a1de7 100644 +index 0cf6a879462..3677fc662de 100644 --- a/compiler/rustc_target/src/spec/targets/x86_64_unknown_uefi.rs +++ b/compiler/rustc_target/src/spec/targets/x86_64_unknown_uefi.rs -@@ -14,6 +14,7 @@ pub(crate) fn target() -> Target { +@@ -15,6 +15,7 @@ pub(crate) fn target() -> Target { base.plt_by_default = false; base.max_atomic_width = Some(64); - base.entry_abi = Conv::X86_64Win64; + base.entry_abi = CanonAbi::X86(X86Call::Win64); + base.linker = Some("lld".into()); // We disable MMX and SSE for now, even though UEFI allows using them. Problem is, you have to // enable these CPU features explicitly before their first use, otherwise their instructions -- -2.48.1 +2.49.0 diff --git a/0001-add-support-for-ppc64le.patch b/0001-add-support-for-ppc64le.patch index 36e20a3..30b86e1 100644 --- a/0001-add-support-for-ppc64le.patch +++ b/0001-add-support-for-ppc64le.patch @@ -9,18 +9,18 @@ Subject: [PATCH] add support for ppc64le .../spec/targets/ppc64le_unknown_linux_gnu.rs | 23 +++++++++++++++++++ .../targets/ppc64le_unknown_linux_musl.rs | 23 +++++++++++++++++++ src/bootstrap/configure.py | 5 ++++ - vendor/openssl-src-111.28.2+1.1.1w/src/lib.rs | 3 +++ - vendor/target-lexicon-0.12.16/src/targets.rs | 3 +++ + vendor/openssl-src-300.5.0+3.5.0/src/lib.rs | 3 +++ + vendor/target-lexicon-0.13.1/src/targets.rs | 3 +++ 7 files changed, 82 insertions(+) create mode 100644 compiler/rustc_target/src/spec/targets/ppc64le_unknown_freebsd.rs create mode 100644 compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_gnu.rs create mode 100644 compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_musl.rs diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs -index 02962d55a..075d4fbb8 100644 +index 7234d1dc6..70d44f815 100644 --- a/compiler/rustc_target/src/spec/mod.rs +++ b/compiler/rustc_target/src/spec/mod.rs -@@ -1675,6 +1675,8 @@ supported_targets! { +@@ -1760,6 +1760,8 @@ supported_targets! { ("powerpc64-unknown-linux-musl", powerpc64_unknown_linux_musl), ("powerpc64le-unknown-linux-gnu", powerpc64le_unknown_linux_gnu), ("powerpc64le-unknown-linux-musl", powerpc64le_unknown_linux_musl), @@ -31,7 +31,7 @@ index 02962d55a..075d4fbb8 100644 ("sparc-unknown-linux-gnu", sparc_unknown_linux_gnu), diff --git a/compiler/rustc_target/src/spec/targets/ppc64le_unknown_freebsd.rs b/compiler/rustc_target/src/spec/targets/ppc64le_unknown_freebsd.rs new file mode 100644 -index 000000000..615bb6762 +index 000000000..c02321db7 --- /dev/null +++ b/compiler/rustc_target/src/spec/targets/ppc64le_unknown_freebsd.rs @@ -0,0 +1,23 @@ @@ -60,7 +60,7 @@ index 000000000..615bb6762 +} diff --git a/compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_gnu.rs b/compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_gnu.rs new file mode 100644 -index 000000000..5ff45e2f4 +index 000000000..13423b9c5 --- /dev/null +++ b/compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_gnu.rs @@ -0,0 +1,23 @@ @@ -89,7 +89,7 @@ index 000000000..5ff45e2f4 +} diff --git a/compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_musl.rs b/compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_musl.rs new file mode 100644 -index 000000000..2b612e76f +index 000000000..3f8a02be7 --- /dev/null +++ b/compiler/rustc_target/src/spec/targets/ppc64le_unknown_linux_musl.rs @@ -0,0 +1,23 @@ @@ -117,10 +117,10 @@ index 000000000..2b612e76f + } +} diff --git a/src/bootstrap/configure.py b/src/bootstrap/configure.py -index a86c20d46..7ea1a9666 100755 +index 0d4d6e0ff..5d0e213b3 100755 --- a/src/bootstrap/configure.py +++ b/src/bootstrap/configure.py -@@ -250,6 +250,11 @@ v( +@@ -259,6 +259,11 @@ v( "target.powerpc64le-unknown-linux-musl.musl-root", "powerpc64le-unknown-linux-musl install directory", ) @@ -132,25 +132,25 @@ index a86c20d46..7ea1a9666 100755 v( "musl-root-riscv32gc", "target.riscv32gc-unknown-linux-musl.musl-root", -diff --git a/vendor/openssl-src-111.28.2+1.1.1w/src/lib.rs b/vendor/openssl-src-111.28.2+1.1.1w/src/lib.rs -index 1ef018081..44308dcdc 100644 ---- a/vendor/openssl-src-111.28.2+1.1.1w/src/lib.rs -+++ b/vendor/openssl-src-111.28.2+1.1.1w/src/lib.rs -@@ -283,6 +283,9 @@ impl Build { - "powerpc64le-unknown-freebsd" => "BSD-generic64", +diff --git a/vendor/openssl-src-300.5.0+3.5.0/src/lib.rs b/vendor/openssl-src-300.5.0+3.5.0/src/lib.rs +index f7d19d95d..9b574b1e5 100644 +--- a/vendor/openssl-src-300.5.0+3.5.0/src/lib.rs ++++ b/vendor/openssl-src-300.5.0+3.5.0/src/lib.rs +@@ -368,6 +368,9 @@ impl Build { + "powerpc64le-unknown-freebsd" => "BSD-ppc64le", "powerpc64le-unknown-linux-gnu" => "linux-ppc64le", "powerpc64le-unknown-linux-musl" => "linux-ppc64le", -+ "ppc64le-unknown-freebsd" => "BSD-generic64", ++ "ppc64le-unknown-freebsd" => "BSD-ppc64le", + "ppc64le-unknown-linux-gnu" => "linux-ppc64le", + "ppc64le-unknown-linux-musl" => "linux-ppc64le", - "riscv64gc-unknown-linux-gnu" => "linux-generic64", - "s390x-unknown-linux-gnu" => "linux64-s390x", - "s390x-unknown-linux-musl" => "linux64-s390x", + "powerpc64le-alpine-linux-musl" => "linux-ppc64le", + "powerpc64le-chimera-linux-musl" => "linux-ppc64le", + "riscv64gc-unknown-freebsd" => "BSD-riscv64", diff --git a/vendor/target-lexicon-0.13.1/src/targets.rs b/vendor/target-lexicon-0.13.1/src/targets.rs -index 997c673e6..439899f67 100644 +index 83c0eac8c..61b7fcc33 100644 --- a/vendor/target-lexicon-0.13.1/src/targets.rs +++ b/vendor/target-lexicon-0.13.1/src/targets.rs -@@ -1701,6 +1701,9 @@ mod tests { +@@ -1811,6 +1811,9 @@ mod tests { "powerpc64le-unknown-freebsd", "powerpc64le-unknown-linux-gnu", "powerpc64le-unknown-linux-musl", @@ -161,5 +161,5 @@ index 997c673e6..439899f67 100644 "powerpc64-unknown-linux-gnu", "powerpc64-unknown-linux-musl", -- -2.48.1 +2.49.0 diff --git a/cargo_vendor.attr b/cargo_vendor.attr new file mode 100644 index 0000000..be2d48f --- /dev/null +++ b/cargo_vendor.attr @@ -0,0 +1,2 @@ +%__cargo_vendor_path ^%{_defaultlicensedir}(/[^/]+)+/cargo-vendor.txt$ +%__cargo_vendor_provides %{_rpmconfigdir}/cargo_vendor.prov diff --git a/cargo_vendor.prov b/cargo_vendor.prov new file mode 100644 index 0000000..6efca18 --- /dev/null +++ b/cargo_vendor.prov @@ -0,0 +1,127 @@ +#! /usr/bin/python3 -s +# Stripped down replacement for cargo2rpm parse-vendor-manifest + +import re +import subprocess +import sys +from typing import Optional + + +VERSION_REGEX = re.compile( + r""" + ^ + (?P0|[1-9]\d*) + \.(?P0|[1-9]\d*) + \.(?P0|[1-9]\d*) + (?:-(?P
(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?
+    (?:\+(?P[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$
+    """,
+    re.VERBOSE,
+)
+
+
+class Version:
+    """
+    Version that adheres to the "semantic versioning" format.
+    """
+
+    def __init__(self, major: int, minor: int, patch: int, pre: Optional[str] = None, build: Optional[str] = None):
+        self.major: int = major
+        self.minor: int = minor
+        self.patch: int = patch
+        self.pre: Optional[str] = pre
+        self.build: Optional[str] = build
+
+    @staticmethod
+    def parse(version: str) -> "Version":
+        """
+        Parses a version string and return a `Version` object.
+        Raises a `ValueError` if the string does not match the expected format.
+        """
+
+        match = VERSION_REGEX.match(version)
+        if not match:
+            raise ValueError(f"Invalid version: {version!r}")
+
+        matches = match.groupdict()
+
+        major_str = matches["major"]
+        minor_str = matches["minor"]
+        patch_str = matches["patch"]
+        pre = matches["pre"]
+        build = matches["build"]
+
+        major = int(major_str)
+        minor = int(minor_str)
+        patch = int(patch_str)
+
+        return Version(major, minor, patch, pre, build)
+
+    def to_rpm(self) -> str:
+        """
+        Formats the `Version` object as an equivalent RPM version string.
+        Characters that are invalid in RPM versions are replaced ("-" -> "_")
+
+        Build metadata (the optional `Version.build` attribute) is dropped, so
+        the conversion is not lossless for versions where this attribute is not
+        `None`. However, build metadata is not intended to be part of the
+        version (and is not even considered when doing version comparison), so
+        dropping it when converting to the RPM version format is correct.
+        """
+
+        s = f"{self.major}.{self.minor}.{self.patch}"
+        if self.pre:
+            s += f"~{self.pre.replace('-', '_')}"
+        return s
+
+
+def break_the_build(error: str):
+    """
+    This function writes a string that is an invalid RPM dependency specifier,
+    which causes dependency generators to fail and break the build. The
+    additional error message is printed to stderr.
+    """
+
+    print("*** FATAL ERROR ***")
+    print(error, file=sys.stderr)
+
+ 
+def get_cargo_vendor_txt_paths_from_stdin() -> set[str]:  # pragma nocover
+    """
+    Read lines from standard input and filter out lines that look like paths
+    to `cargo-vendor.txt` files. This is how RPM generators pass lists of files.
+    """
+
+    lines = {line.rstrip("\n") for line in sys.stdin.readlines()}
+    return {line for line in lines if line.endswith("/cargo-vendor.txt")}
+
+
+def action_parse_vendor_manifest():
+    paths = get_cargo_vendor_txt_paths_from_stdin()
+
+    for path in paths:
+        with open(path) as file:
+            manifest = file.read()
+
+        for line in manifest.strip().splitlines():
+            crate, version = line.split(" v")
+            print(f"bundled(crate({crate})) = {Version.parse(version).to_rpm()}")
+
+
+def main():
+    try:
+        action_parse_vendor_manifest()
+        exit(0)
+
+    # print an error message that is not a valid RPM dependency
+    # to cause the generator to break the build
+    except (IOError, ValueError) as exc:
+        break_the_build(str(exc))
+        exit(1)
+
+    break_the_build("Uncaught exception: This should not happen, please report a bug.")
+    exit(1)
+
+
+if __name__ == "__main__":
+    main()
diff --git a/rust-1.85.0-aarch64-unknown-linux-gnu.tar.xz b/rust-1.90.0-aarch64-unknown-linux-gnu.tar.xz
similarity index 32%
rename from rust-1.85.0-aarch64-unknown-linux-gnu.tar.xz
rename to rust-1.90.0-aarch64-unknown-linux-gnu.tar.xz
index 1b1516a..174c80e 100644
--- a/rust-1.85.0-aarch64-unknown-linux-gnu.tar.xz
+++ b/rust-1.90.0-aarch64-unknown-linux-gnu.tar.xz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:024918027c349bd237617a8a1207d7c4462f70549a31e8bf6c14b0601cfd489e
-size 241942608
+oid sha256:59f1883fcdd2d7243d2fd1ed19f22e05219251227abacfa3d656aebfbcc5e838
+size 169265824
diff --git a/rust-1.85.0-loongarch64-unknown-linux-gnu.tar.xz b/rust-1.90.0-loongarch64-unknown-linux-gnu.tar.xz
similarity index 32%
rename from rust-1.85.0-loongarch64-unknown-linux-gnu.tar.xz
rename to rust-1.90.0-loongarch64-unknown-linux-gnu.tar.xz
index 3580815..de0f16a 100644
--- a/rust-1.85.0-loongarch64-unknown-linux-gnu.tar.xz
+++ b/rust-1.90.0-loongarch64-unknown-linux-gnu.tar.xz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:a3d4a9a61cc903dd71f88ee730cf0ee4de7f55f38387bb6034925858be4dad11
-size 234279384
+oid sha256:405a53cb03f1958a7bafac4c983293bf3b03139f34370119eb7b07c1ad47adbc
+size 262294868
diff --git a/rust-1.85.0-riscv64gc-unknown-linux-gnu.tar.xz b/rust-1.90.0-riscv64gc-unknown-linux-gnu.tar.xz
similarity index 32%
rename from rust-1.85.0-riscv64gc-unknown-linux-gnu.tar.xz
rename to rust-1.90.0-riscv64gc-unknown-linux-gnu.tar.xz
index 6ca0c99..44a295f 100644
--- a/rust-1.85.0-riscv64gc-unknown-linux-gnu.tar.xz
+++ b/rust-1.90.0-riscv64gc-unknown-linux-gnu.tar.xz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:dcdbc9ed172c92b6e55e8c2fc08eca8f14b3d584f54c080170c0390a4d527350
-size 222050624
+oid sha256:bc2760ab21d5531fafb867f244f045fa3da7bfd16694ea74f77af3695c298867
+size 251333732
diff --git a/rust-1.85.0-x86_64-unknown-linux-gnu.tar.xz b/rust-1.90.0-x86_64-unknown-linux-gnu.tar.xz
similarity index 32%
rename from rust-1.85.0-x86_64-unknown-linux-gnu.tar.xz
rename to rust-1.90.0-x86_64-unknown-linux-gnu.tar.xz
index 748a676..d3104f6 100644
--- a/rust-1.85.0-x86_64-unknown-linux-gnu.tar.xz
+++ b/rust-1.90.0-x86_64-unknown-linux-gnu.tar.xz
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:6f8b323ed2a34ccf0031631b85d79e1133da662094566bc910432da9bd3a5b42
-size 182464920
+oid sha256:bff8974f2d3ee6c0e6ac926b533f65bbdd3697d2c2b925bdae5f45b9eed10a67
+size 202999512
diff --git a/rust.spec b/rust.spec
index 7741208..bdf8228 100644
--- a/rust.spec
+++ b/rust.spec
@@ -1,7 +1,8 @@
-%global bootstrap_rust 1.85.0
-%global bootstrap_cargo 1.85.0
-%global bootstrap_channel 1.85.0
-%global bootstrap_date 2025-02-20
+%define _lto_cflags %{nil}
+%global bootstrap_rust 1.90.0
+%global bootstrap_cargo 1.90.0
+%global bootstrap_channel 1.90.0
+%global bootstrap_date 2025-08-07
 %global bootstrap_arches x86_64 aarch64 riscv64 loongarch64
 %bcond_with llvm_static
 %ifarch x86_64 aarch64 riscv64 loongarch64
@@ -24,8 +25,8 @@
 %endif
 
 Name:                rust
-Version:             1.86.0
-Release:             6
+Version:             1.90.0
+Release:             1
 Summary:             The Rust Programming Language
 License:             Apache-2.0 OR MIT
 URL:                 https://www.rust-lang.org
@@ -36,8 +37,11 @@ Source2:             https://static.rust-lang.org/rust-key.gpg.ascii
 Source3:             cargo-config
 Source4:             cargo-config.sh
 Source5:             cargo-config.csh
+# Simple rpm macros for rust-toolset
+Source102:           cargo_vendor.attr
+Source103:           cargo_vendor.prov
 
-Patch0000:           rustc-1.86.0-disable-libssh2.patch
+Patch0000:           rustc-1.90.0-disable-libssh2.patch
 # By default, rust tries to use "rust-lld" as a linker for some targets.
 Patch0001:           0001-Use-lld-provided-by-system.patch
 # Set a substitute-path in rust-gdb for standard library sources.
@@ -112,27 +116,28 @@ BuildRequires:       pkgconfig(openssl) pkgconfig(zlib) pkgconfig(libssh2) >= 1.
 %global python python3
 BuildRequires:       %{python}
 %if %with bundled_llvm
-BuildRequires:       cmake3 >= 3.20.0
-Provides:            bundled(llvm) = 19.1.7
+BuildRequires:       cmake3 >= 3.20.3
+Provides:            bundled(llvm) = 20.1.8
 %else
 BuildRequires:       cmake >= 3.5.1
 %if %defined llvm
 %global llvm_root %{_libdir}/%{llvm}
 %else
-# default llvm is decent enough on riscv64
 %ifarch x86_64 aarch64 riscv64 loongarch64
-%global llvm llvm-toolset-18-llvm
-%global llvm_root /opt/%{_vendor}/llvm-toolset-18/root%{_prefix}
-%global clang_maj_ver 18
+%global llvm_toolset llvm-toolset-19
+%global llvm %{llvm_toolset}-llvm
+%global llvm_root /opt/%{_vendor}/%{llvm_toolset}/root%{_prefix}
+%global clang_maj_ver %(echo "%{llvm_toolset}" | cut -d '-' -f3)
 %else
 %global llvm llvm
 %global llvm_root %{_prefix}
 %global clang_maj_ver 17
 %endif
 %endif
-# Minimum external LLVM for rust 1.82
-BuildRequires:       %{llvm} >= 17.0.0
-BuildRequires:       %{llvm}-devel >= 17.0.0
+# Minimum external LLVM for rust 1.88
+# https://github.com/rust-lang/rust/pull/139275
+BuildRequires:       %{llvm} >= 19.0.0
+BuildRequires:       %{llvm}-devel >= 19.0.0
 %if %with llvm_static
 BuildRequires:       %{llvm}-static libffi-devel
 %endif
@@ -140,8 +145,8 @@ BuildRequires:       %{llvm}-static libffi-devel
 BuildRequires:       procps-ng
 BuildRequires:       ninja-build
 %ifarch x86_64 aarch64 riscv64 loongarch64
-BuildRequires:       llvm-toolset-18-compiler-rt
-BuildRequires:       llvm-toolset-18-clang
+BuildRequires:       %{llvm_toolset}-compiler-rt
+BuildRequires:       %{llvm_toolset}-clang
 %else
 BuildRequires:       compiler-rt
 BuildRequires:       clang
@@ -206,7 +211,7 @@ programs.
 %package -n cargo
 Summary:             Rust's package manager and build tool
 %if %with bundled_libgit2
-Provides:            bundled(libgit2) = 1.1.0
+Provides:            bundled(libgit2) = 1.9.1
 %endif
 BuildRequires:       git
 Requires:            %{name} = %{version}-%{release}
@@ -267,13 +272,11 @@ Obsoletes:   %{name}-doc < %{version}-%{release} %{name}-cargo-doc < %{version}-
 Man pages and other related help documents for rust.
 
 %prep
-# download source0 and gpg check
-#wget -qO %{SOURCE0} https://user-repo.openeuler.openatom.cn/lfs-tar/rust/rustc-%{version}-src.tar.xz
+# gpg check
 gpg --import %{SOURCE2}
 gpg --verify %{SOURCE1} %{SOURCE0}
 
 %ifarch %{bootstrap_arches}
-#wget -qO %{_sourcedir}/%{bootstrap_root}.tar.xz https://user-repo.openeuler.openatom.cn/lfs-tar/rust/%{bootstrap_root}.tar.xz
 %setup -q -n %{bootstrap_root} -T -b %{bootstrap_source}
 ./install.sh --components=cargo,rustc,rust-std-%{rust_triple} \
   --prefix=%{local_rust_root} --disable-ldconfig
@@ -434,6 +437,10 @@ install -m 0644 -D -p %{SOURCE3} %{buildroot}%{_sysconfdir}/skel/.cargo/config.t
 install -m 0644 -D -p %{SOURCE4} %{buildroot}%{_sysconfdir}/profile.d/cargo-config.sh
 install -m 0644 -D -p %{SOURCE5} %{buildroot}%{_sysconfdir}/profile.d/cargo-config.csh
 
+# This allows users to build packages using Rust Toolset.
+%{__install} -D -m 644 %{S:102} %{buildroot}%{_fileattrsdir}/cargo_vendor.attr
+%{__install} -D -m 755 %{S:103} %{buildroot}%{_rpmconfigdir}/cargo_vendor.prov
+
 %if %without lldb
 rm -f %{buildroot}%{_bindir}/rust-lldb
 rm -f %{buildroot}%{rustlibdir}/etc/lldb_*
@@ -514,6 +521,8 @@ export %{rust_env}
 %{_datadir}/zsh/site-functions/_cargo
 %dir %{_datadir}/cargo
 %dir %{_datadir}/cargo/registry
+%{_fileattrsdir}/cargo_vendor.attr
+%{_rpmconfigdir}/cargo_vendor.prov
 
 %files -n rustfmt
 %{_bindir}/rustfmt
@@ -548,6 +557,9 @@ export %{rust_env}
 %{_mandir}/man1/cargo*.1*
 
 %changelog
+* Thu Sep 25 2025 jchzhou  - 1.90.0-1
+- Update to 1.90.0
+
 * Wed Sep 24 2025 wangkai <13474090681@163.com> - 1.86.0-6
 - Remove rls command
 - Cleanup spec
diff --git a/rustc-1.86.0-src.tar.xz b/rustc-1.86.0-src.tar.xz
deleted file mode 100644
index bf827fc..0000000
--- a/rustc-1.86.0-src.tar.xz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d939eada065dc827a9d4dbb55bd48533ad14c16e7f0a42e70147029c82a7707b
-size 275696736
diff --git a/rustc-1.86.0-src.tar.xz.asc b/rustc-1.86.0-src.tar.xz.asc
deleted file mode 100644
index de2eb95..0000000
--- a/rustc-1.86.0-src.tar.xz.asc
+++ /dev/null
@@ -1,16 +0,0 @@
------BEGIN PGP SIGNATURE-----
-
-wsFcBAABCgAQBQJn7lKhCRCFq5bm+hvl/gAACjYP/3bTkeFsXeV3GMKpAjVhRDfS
-ni34+892i/suOodusQsj2l5dvOfWAcn2/X1iMezcZe3xk6gCsZ66GSwEGOQIhe/R
-ooxUS2fg/w8wXsTxN2epmyd/pOVURUP7Ng+iSUP0ezfGX4q5ohmGw6SdfhsUzrJG
-DROIEbLuHm0coB/RYFcGL5EhvtTc8TqEHkhemLg5z31tibuhyArOOcEY0GrNrj9s
-g9rBcN6CxlxT7e6HDvjCWRFv9Fe+PJi+AvkTDjLDpothGuoyTqTzUDpu3kbtuK0p
-kvIBRjcMfEXyA7qSogjQzViSVtgRwf029k7uMkNjPBPX+nS0NMlbD4jEXhqdNgM5
-6em7FMdYY2K+vFONBnR9smRPG/l+RswLkujAdMPCe2/KcTfRZ+m9GJpnwBeMMhxt
-dOGYPPDImFJbVFu6uVN418qbcz9FBi/xLGhmcbR2dltqLRnVSuiAbYJM4dYLqlGo
-fGkiidVMR6Qlwr++K7Ymv5bLmCELcJU2dK/kULrSTLhdO/2tEbiQgnxf03xCkkj5
-5jr5yF8LRGBhhnUZFX49W4dm1ipfZY5EHYvbbKrdQvo2Gyr2NaoXsuL4RGulYqLI
-2fIQSCFnqT1ZMYYG7MkOQBQmRfDnv91MWUUAKRMhNMNBL1HVkRWs/YXlc54UgMbR
-at0CKU1M2+OFY7ldicrc
-=SPYv
------END PGP SIGNATURE-----
diff --git a/rustc-1.86.0-disable-libssh2.patch b/rustc-1.90.0-disable-libssh2.patch
similarity index 43%
rename from rustc-1.86.0-disable-libssh2.patch
rename to rustc-1.90.0-disable-libssh2.patch
index 8b07bde..23dc6d8 100644
--- a/rustc-1.86.0-disable-libssh2.patch
+++ b/rustc-1.90.0-disable-libssh2.patch
@@ -1,7 +1,7 @@
 diff -up rustc-beta-src/src/tools/cargo/Cargo.lock.orig rustc-beta-src/src/tools/cargo/Cargo.lock
---- rustc-beta-src/src/tools/cargo/Cargo.lock.orig	2025-03-11 15:36:38.387335541 -0700
-+++ rustc-beta-src/src/tools/cargo/Cargo.lock	2025-03-11 15:39:27.491711044 -0700
-@@ -2528,7 +2528,6 @@ checksum = "e1a117465e7e1597e8febea8bb0c
+--- rustc-beta-src/src/tools/cargo/Cargo.lock.orig	2025-08-16 15:47:14.000000000 -0700
++++ rustc-beta-src/src/tools/cargo/Cargo.lock	2025-08-18 17:31:39.554771554 -0700
+@@ -2800,7 +2800,6 @@ checksum = "1c42fe03df2bd3c53a3a9c7317ad
  dependencies = [
   "cc",
   "libc",
@@ -9,7 +9,7 @@ diff -up rustc-beta-src/src/tools/cargo/Cargo.lock.orig rustc-beta-src/src/tools
   "libz-sys",
   "openssl-sys",
   "pkg-config",
-@@ -2574,20 +2573,6 @@ dependencies = [
+@@ -2847,20 +2846,6 @@ dependencies = [
   "pkg-config",
   "vcpkg",
  ]
@@ -29,16 +29,16 @@ diff -up rustc-beta-src/src/tools/cargo/Cargo.lock.orig rustc-beta-src/src/tools
 -]
  
  [[package]]
- name = "libz-sys"
+ name = "libz-rs-sys"
 diff -up rustc-beta-src/src/tools/cargo/Cargo.toml.orig rustc-beta-src/src/tools/cargo/Cargo.toml
---- rustc-beta-src/src/tools/cargo/Cargo.toml.orig	2025-03-11 15:36:38.389045348 -0700
-+++ rustc-beta-src/src/tools/cargo/Cargo.toml	2025-03-11 15:38:36.948228456 -0700
-@@ -47,7 +47,7 @@ curl = "0.4.47"
- curl-sys = "0.4.79"
+--- rustc-beta-src/src/tools/cargo/Cargo.toml.orig	2025-08-16 15:47:14.000000000 -0700
++++ rustc-beta-src/src/tools/cargo/Cargo.toml	2025-08-18 17:33:02.401743230 -0700
+@@ -46,7 +46,7 @@ curl = "0.4.48"
+ curl-sys = "0.4.82"
  filetime = "0.2.25"
- flate2 = { version = "1.0.35", default-features = false, features = ["zlib"] }
--git2 = "0.20.0"
-+git2 = { version = "0.20.0", default-features = false, features = ["https"] }
+ flate2 = { version = "1.1.2", default-features = false, features = ["zlib-rs"] }
+-git2 = "0.20.2"
++git2 = { version = "0.20.2", default-features = false, features = ["https"] }
  git2-curl = "0.21.0"
- gix = { version = "0.70.0", default-features = false, features = ["blocking-http-transport-curl", "progress-tree", "parallel", "dirwalk"] }
- glob = "0.3.2"
+ # When updating this, also see if `gix-transport` further down needs updating or some auth-related tests will fail.
+ gix = { version = "0.73.0", default-features = false, features = ["progress-tree", "parallel", "dirwalk", "status"] }
diff --git a/rustc-1.90.0-src.tar.xz b/rustc-1.90.0-src.tar.xz
new file mode 100644
index 0000000..e027136
--- /dev/null
+++ b/rustc-1.90.0-src.tar.xz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6bfeaddd90ffda2f063492b092bfed925c4b8c701579baf4b1316e021470daac
+size 272348992
diff --git a/rustc-1.90.0-src.tar.xz.asc b/rustc-1.90.0-src.tar.xz.asc
new file mode 100644
index 0000000..715f44b
--- /dev/null
+++ b/rustc-1.90.0-src.tar.xz.asc
@@ -0,0 +1,16 @@
+-----BEGIN PGP SIGNATURE-----
+
+wsFcBAABCgAQBQJozAZnCRCFq5bm+hvl/gAAxvcP/iIu9X8JHlzqc9WsOZ8kezPS
+pedXOWfUMJdq7BvcYBuhu2O84CeWN2ooiR6OnjHs+wdOfsthFFkt4gIJhTEIkUCu
+qgRUDNPZZAw7Q6ioOwdnC4p2QUu8YvJLyUtBsG8JMBwsbeX5cXae9tb5QyNGPHqT
+hPdmH1cl5OshgH7qZzCZfcLvf9O4BPcNmbPqqVKspqR8EdTFE4D4mBJmzQ/fyf5U
+gLJ5lA3AtAxZt62v9gujIUssKfduqrurfCwO19EA7QMjBfHExQLUhLBz7WoOTzDx
+Qxj5taVyjF69GOq3Z0k4SeFLnoG88nRZP2BEgPkXEhJZHW0tlM8p6P37MpbdJscj
+IAEbhyj/beLRhxFU5OOVERYJ6p2GnoNk4miufcXnS6xMKabP9UPnjhuCxqBFY17q
+sPnJBQApZt1OuP0IuGI4DGkbOm/fDxeIK/VdTGfbInYQXSCLaP1h1F+shQbRHVEo
+5W9bKfda9DQPUol2px+QSjngqdBcrR0PNKt7+wuqoPBvEhdLHK29up7qxBdTY4lt
+L0fyCwapOUmTbzxXqmfy2jct81wEV0l9eRWKVBoFw/vcRmN5ERqtCRCeDU4vPxVk
+qV0DvHaMTeX4n4ZGBPak5XuVkn4HKyQ1fUW06/Xb00vudQSApmHTdxDfJybFFbsw
+IsvOcxUEEDSwENyftCkG
+=+M9Y
+-----END PGP SIGNATURE-----
-- 
Gitee