Pier Angelo Vendrame pushed to branch tor-browser-153.1.0esr-16.0-1 at The Tor Project / Applications / Tor Browser Commits: 89150102 by Jesse Schwartzentruber at 2026-08-23T10:45:16+02:00 Bug 2053518 - Handle the *-oe-linux-* rust targets added in rustc 1.98 in rust target detection. r=firefox-build-system-reviewers,glandium Differential Revision: https://phabricator.services.mozilla.com/D311145 - - - - - 2 changed files: - build/moz.configure/rust.configure - python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py Changes: ===================================== build/moz.configure/rust.configure ===================================== @@ -300,6 +300,10 @@ def detect_rustc_target( elif not candidates: return None + # config.guess uses the "pc" vendor for x86/x86_64 where rust uses its + # generic "unknown" vendor; normalize so we correlate on the right one. + vendor = "unknown" if host_or_target.vendor == "pc" else host_or_target.vendor + # We have multiple candidates. There are two cases where we can try to # narrow further down using extra information from the build system. # - For windows targets, correlate with the C compiler type @@ -367,11 +371,19 @@ def detect_rustc_target( else: suffix = "" for p in prefixes: - for c in candidates: - if c.rust_target.startswith( - "{}-".format(p) - ) and c.rust_target.endswith(suffix): + matches = [ + c + for c in candidates + if c.rust_target.startswith("{}-".format(p)) + and c.rust_target.endswith(suffix) + ] + if not matches: + continue + # As below, correlate on the (normalized) vendor. + for c in matches: + if c.target.vendor == vendor: return c.rust_target + return matches[0].rust_target # See if we can narrow down on the exact alias. # We use the sub_configure_alias to keep support mingw32 triplets as input. @@ -400,6 +412,15 @@ def detect_rustc_target( elif narrowed: candidates = narrowed + # Correlate on the (normalized) vendor, so vendor-specific targets (e.g. + # the *-oe-linux-gnu targets added in rust 1.98) don't shadow the + # generic ones for aliases whose vendor doesn't match a rust target. + narrowed = [c for c in candidates if c.target.vendor == vendor] + if len(narrowed) == 1: + return narrowed[0].rust_target + elif narrowed: + candidates = narrowed + # See if we can narrow down with the raw OS and raw CPU narrowed = [ c ===================================== python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py ===================================== @@ -1779,6 +1779,15 @@ def gen_invoke_rustc(version, rustup_wrapper=False): "xtensa-esp32s3-espidf", "xtensa-esp32s3-none-elf", ] + # Additional targets from 1.98 + if Version(version) >= "1.98.0": + rust_targets += [ + "aarch64-oe-linux-gnu", + "armv7-oe-linux-gnueabihf", + "i686-oe-linux-gnu", + "riscv64-oe-linux-gnu", + "x86_64-oe-linux-gnu", + ] return 0, "\n".join(sorted(rust_targets)), "" if ( len(args) == 6 @@ -1869,6 +1878,7 @@ class RustTest(BaseConfigureTest): ("x86_64-unknown-linux-android", "x86_64-linux-android"), ("x86_64-unknown-linux-android21", "x86_64-linux-android"), ("x86_64-pc-linux-gnu", "x86_64-unknown-linux-gnu"), + ("riscv64-unknown-linux-gnu", "riscv64gc-unknown-linux-gnu"), ("sparcv9-sun-solaris2", "sparcv9-sun-solaris"), ("x86_64-sun-solaris2", "x86_64-pc-solaris"), ("x86_64-apple-darwin23.3.0", "x86_64-apple-darwin"), @@ -1970,5 +1980,10 @@ class RustTest(BaseConfigureTest): self.assertEqual(self.get_rust_target("wasm32-unknown-wasi"), "wasm32-wasip1") +# Exercises the vendor-specific *-oe-linux-* targets added in rust 1.98. +class Rust198Test(RustTest): + VERSION = "1.98.0" + + if __name__ == "__main__": main() View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/89150102... -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/89150102... You're receiving this email because of your account on gitlab.torproject.org. Manage all notifications: https://gitlab.torproject.org/-/profile/notifications | Help: https://gitlab.torproject.org/help