diff options
Diffstat (limited to 'user/thunderbird/triplet-vendor-support.patch')
-rw-r--r-- | user/thunderbird/triplet-vendor-support.patch | 316 |
1 files changed, 0 insertions, 316 deletions
diff --git a/user/thunderbird/triplet-vendor-support.patch b/user/thunderbird/triplet-vendor-support.patch deleted file mode 100644 index 84236b8ba..000000000 --- a/user/thunderbird/triplet-vendor-support.patch +++ /dev/null @@ -1,316 +0,0 @@ -Squashed version of https://github.com/bytecodealliance/target-lexicon/pull/35 - -diff -Naur thunderbird-91.13.0/third_party/rust/target-lexicon-0.9.0_orig/build.rs thunderbird-91.13.0/third_party/rust/target-lexicon-0.9.0/build.rs ---- thunderbird-91.13.0/third_party/rust/target-lexicon-0.9.0_orig/build.rs 2022-08-15 13:05:59.000000000 -0500 -+++ thunderbird-91.13.0/third_party/rust/target-lexicon-0.9.0/build.rs 2022-11-23 00:35:04.697192794 -0600 -@@ -32,6 +32,7 @@ - } - } - -+use self::targets::Vendor; - use self::triple::Triple; - - fn main() { -@@ -52,6 +53,8 @@ - writeln!(out, "use crate::Aarch64Architecture::*;")?; - writeln!(out, "#[allow(unused_imports)]")?; - writeln!(out, "use crate::ArmArchitecture::*;")?; -+ writeln!(out, "#[allow(unused_imports)]")?; -+ writeln!(out, "use crate::CustomVendor;")?; - writeln!(out)?; - writeln!(out, "/// The `Triple` of the current host.")?; - writeln!(out, "pub const HOST: Triple = Triple {{")?; -@@ -60,7 +63,7 @@ - " architecture: Architecture::{:?},", - triple.architecture - )?; -- writeln!(out, " vendor: Vendor::{:?},", triple.vendor)?; -+ writeln!(out, " vendor: {},", vendor_display(&triple.vendor))?; - writeln!( - out, - " operating_system: OperatingSystem::{:?},", -@@ -90,7 +93,7 @@ - writeln!(out, "impl Vendor {{")?; - writeln!(out, " /// Return the vendor for the current host.")?; - writeln!(out, " pub const fn host() -> Self {{")?; -- writeln!(out, " Vendor::{:?}", triple.vendor)?; -+ writeln!(out, " {}", vendor_display(&triple.vendor))?; - writeln!(out, " }}")?; - writeln!(out, "}}")?; - writeln!(out)?; -@@ -138,7 +141,11 @@ - " architecture: Architecture::{:?},", - triple.architecture - )?; -- writeln!(out, " vendor: Vendor::{:?},", triple.vendor)?; -+ writeln!( -+ out, -+ " vendor: {},", -+ vendor_display(&triple.vendor) -+ )?; - writeln!( - out, - " operating_system: OperatingSystem::{:?},", -@@ -160,3 +167,13 @@ - - Ok(()) - } -+ -+fn vendor_display(vendor: &Vendor) -> String { -+ match vendor { -+ Vendor::Custom(custom) => format!( -+ "Vendor::Custom(CustomVendor::Static({:?}))", -+ custom.as_str() -+ ), -+ known => format!("Vendor::{:?}", known), -+ } -+} -diff -Naur thunderbird-91.13.0/third_party/rust/target-lexicon-0.9.0_orig/src/lib.rs thunderbird-91.13.0/third_party/rust/target-lexicon-0.9.0/src/lib.rs ---- thunderbird-91.13.0/third_party/rust/target-lexicon-0.9.0_orig/src/lib.rs 2022-08-15 13:05:37.000000000 -0500 -+++ thunderbird-91.13.0/third_party/rust/target-lexicon-0.9.0/src/lib.rs 2022-11-23 00:35:04.697192794 -0600 -@@ -28,7 +28,7 @@ - pub use self::host::HOST; - pub use self::parse_error::ParseError; - pub use self::targets::{ -- Aarch64Architecture, Architecture, ArmArchitecture, BinaryFormat, Environment, OperatingSystem, -- Vendor, -+ Aarch64Architecture, Architecture, ArmArchitecture, BinaryFormat, CustomVendor, Environment, -+ OperatingSystem, Vendor, - }; - pub use self::triple::{CallingConvention, Endianness, PointerWidth, Triple}; -diff -Naur thunderbird-91.13.0/third_party/rust/target-lexicon-0.9.0_orig/src/targets.rs thunderbird-91.13.0/third_party/rust/target-lexicon-0.9.0/src/targets.rs ---- thunderbird-91.13.0/third_party/rust/target-lexicon-0.9.0_orig/src/targets.rs 2022-08-15 13:05:42.000000000 -0500 -+++ thunderbird-91.13.0/third_party/rust/target-lexicon-0.9.0/src/targets.rs 2022-11-23 00:35:04.697192794 -0600 -@@ -1,7 +1,10 @@ - // This file defines all the identifier enums and target-aware logic. - - use crate::triple::{Endianness, PointerWidth, Triple}; -+use alloc::boxed::Box; -+use alloc::string::String; - use core::fmt; -+use core::hash::{Hash, Hasher}; - use core::str::FromStr; - - /// The "architecture" field, which in some cases also specifies a specific -@@ -290,9 +293,42 @@ - } - } - -+/// A string for a `Vendor::Custom` that can either be used in `const` -+/// contexts or hold dynamic strings. -+#[derive(Clone, Debug, Eq)] -+pub enum CustomVendor { -+ /// An owned `String`. This supports the general case. -+ Owned(Box<String>), -+ /// A static `str`, so that `CustomVendor` can be constructed in `const` -+ /// contexts. -+ Static(&'static str), -+} -+ -+impl CustomVendor { -+ /// Extracts a string slice. -+ pub fn as_str(&self) -> &str { -+ match self { -+ CustomVendor::Owned(s) => s, -+ CustomVendor::Static(s) => s, -+ } -+ } -+} -+ -+impl PartialEq for CustomVendor { -+ fn eq(&self, other: &Self) -> bool { -+ self.as_str() == other.as_str() -+ } -+} -+ -+impl Hash for CustomVendor { -+ fn hash<H: Hasher>(&self, state: &mut H) { -+ self.as_str().hash(state) -+ } -+} -+ - /// The "vendor" field, which in practice is little more than an arbitrary - /// modifier. --#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)] -+#[derive(Clone, Debug, PartialEq, Eq, Hash)] - #[allow(missing_docs)] - pub enum Vendor { - Unknown, -@@ -306,6 +342,15 @@ - Sun, - Uwp, - Wrs, -+ -+ /// A custom vendor. "Custom" in this context means that the vendor is -+ /// not specifically recognized by upstream Autotools, LLVM, Rust, or other -+ /// relevant authorities on triple naming. It's useful for people building -+ /// and using locally patched toolchains. -+ /// -+ /// Outside of such patched environments, users of `target-lexicon` should -+ /// treat `Custom` the same as `Unknown` and ignore the string. -+ Custom(CustomVendor), - } - - /// The "operating system" field, which sometimes implies an environment, and -@@ -717,6 +762,7 @@ - Vendor::Sun => "sun", - Vendor::Uwp => "uwp", - Vendor::Wrs => "wrs", -+ Vendor::Custom(ref name) => name.as_str(), - }; - f.write_str(s) - } -@@ -738,7 +784,43 @@ - "sun" => Vendor::Sun, - "uwp" => Vendor::Uwp, - "wrs" => Vendor::Wrs, -- _ => return Err(()), -+ custom => { -+ use alloc::borrow::ToOwned; -+ -+ // A custom vendor. Since triple syntax is so loosely defined, -+ // be as conservative as we can to avoid potential ambiguities. -+ // We err on the side of being too strict here, as we can -+ // always relax it if needed. -+ -+ // Don't allow empty string names. -+ if custom.is_empty() { -+ return Err(()); -+ } -+ -+ // Don't allow any other recognized name as a custom vendor, -+ // since vendors can be omitted in some contexts. -+ if Architecture::from_str(custom).is_ok() -+ || OperatingSystem::from_str(custom).is_ok() -+ || Environment::from_str(custom).is_ok() -+ || BinaryFormat::from_str(custom).is_ok() -+ { -+ return Err(()); -+ } -+ -+ // Require the first character to be an ascii lowercase. -+ if !custom.chars().nth(0).unwrap().is_ascii_lowercase() { -+ return Err(()); -+ } -+ -+ // Restrict the set of characters permitted in a custom vendor. -+ if custom.chars().any(|c: char| { -+ !(c.is_ascii_lowercase() || c.is_ascii_digit() || c == '_' || c == '.') -+ }) { -+ return Err(()); -+ } -+ -+ Vendor::Custom(CustomVendor::Owned(Box::new(custom.to_owned()))) -+ } - }) - } - } -@@ -1120,4 +1202,87 @@ - assert_eq!(t.environment, Environment::Eabihf); - assert_eq!(t.binary_format, BinaryFormat::Elf); - } -+ -+ #[test] -+ fn custom_vendors() { -+ // Test various invalid cases. -+ assert!(Triple::from_str("x86_64--linux").is_err()); -+ assert!(Triple::from_str("x86_64-42-linux").is_err()); -+ assert!(Triple::from_str("x86_64-__customvendor__-linux").is_err()); -+ assert!(Triple::from_str("x86_64-^-linux").is_err()); -+ assert!(Triple::from_str("x86_64- -linux").is_err()); -+ assert!(Triple::from_str("x86_64-CustomVendor-linux").is_err()); -+ assert!(Triple::from_str("x86_64-linux-linux").is_err()); -+ assert!(Triple::from_str("x86_64-x86_64-linux").is_err()); -+ assert!(Triple::from_str("x86_64-elf-linux").is_err()); -+ assert!(Triple::from_str("x86_64-gnu-linux").is_err()); -+ assert!(Triple::from_str("x86_64-linux-customvendor").is_err()); -+ assert!(Triple::from_str("customvendor").is_err()); -+ assert!(Triple::from_str("customvendor-x86_64").is_err()); -+ assert!(Triple::from_str("x86_64-").is_err()); -+ assert!(Triple::from_str("x86_64--").is_err()); -+ -+ // Test various Unicode things. -+ assert!( -+ Triple::from_str("x86_64-𝓬𝓾𝓼𝓽𝓸𝓶𝓿𝓮𝓷𝓭𝓸𝓻-linux").is_err(), -+ "unicode font hazard" -+ ); -+ assert!( -+ Triple::from_str("x86_64-ćúśtőḿvéńdőŕ-linux").is_err(), -+ "diacritical mark stripping hazard" -+ ); -+ assert!( -+ Triple::from_str("x86_64-customvendοr-linux").is_err(), -+ "homoglyph hazard" -+ ); -+ assert!(Triple::from_str("x86_64-customvendor-linux").is_ok()); -+ assert!( -+ Triple::from_str("x86_64-ffi-linux").is_err(), -+ "normalization hazard" -+ ); -+ assert!(Triple::from_str("x86_64-ffi-linux").is_ok()); -+ assert!( -+ Triple::from_str("x86_64-customvendor-linux").is_err(), -+ "zero-width character hazard" -+ ); -+ assert!( -+ Triple::from_str("x86_64-customvendor-linux").is_err(), -+ "BOM hazard" -+ ); -+ -+ // Test some valid cases. -+ let t = Triple::from_str("x86_64-customvendor-linux") -+ .expect("can't parse target with custom vendor"); -+ assert_eq!(t.architecture, Architecture::X86_64); -+ assert_eq!( -+ t.vendor, -+ Vendor::Custom(CustomVendor::Static("customvendor")) -+ ); -+ assert_eq!(t.operating_system, OperatingSystem::Linux); -+ assert_eq!(t.environment, Environment::Unknown); -+ assert_eq!(t.binary_format, BinaryFormat::Elf); -+ assert_eq!(t.to_string(), "x86_64-customvendor-linux"); -+ -+ let t = -+ Triple::from_str("x86_64-customvendor").expect("can't parse target with custom vendor"); -+ assert_eq!(t.architecture, Architecture::X86_64); -+ assert_eq!( -+ t.vendor, -+ Vendor::Custom(CustomVendor::Static("customvendor")) -+ ); -+ assert_eq!(t.operating_system, OperatingSystem::Unknown); -+ assert_eq!(t.environment, Environment::Unknown); -+ assert_eq!(t.binary_format, BinaryFormat::Unknown); -+ -+ assert_eq!( -+ Triple::from_str("unknown-foo"), -+ Ok(Triple { -+ architecture: Architecture::Unknown, -+ vendor: Vendor::Custom(CustomVendor::Static("foo")), -+ operating_system: OperatingSystem::Unknown, -+ environment: Environment::Unknown, -+ binary_format: BinaryFormat::Unknown, -+ }) -+ ); -+ } - } -diff -Naur thunderbird-91.13.0/third_party/rust/target-lexicon-0.9.0_orig/src/triple.rs thunderbird-91.13.0/third_party/rust/target-lexicon-0.9.0/src/triple.rs ---- thunderbird-91.13.0/third_party/rust/target-lexicon-0.9.0_orig/src/triple.rs 2022-08-15 13:05:59.000000000 -0500 -+++ thunderbird-91.13.0/third_party/rust/target-lexicon-0.9.0/src/triple.rs 2022-11-23 00:35:04.697192794 -0600 -@@ -323,10 +323,6 @@ - Err(ParseError::UnrecognizedArchitecture("foo".to_owned())) - ); - assert_eq!( -- Triple::from_str("unknown-foo"), -- Err(ParseError::UnrecognizedVendor("foo".to_owned())) -- ); -- assert_eq!( - Triple::from_str("unknown-unknown-foo"), - Err(ParseError::UnrecognizedOperatingSystem("foo".to_owned())) - ); -diff -Naur thunderbird-91.13.0/third_party/rust/target-lexicon-0.9.0_orig/.cargo-checksum.json thunderbird-91.13.0/third_party/rust/target-lexicon-0.9.0/.cargo-checksum.json ---- thunderbird-91.13.0/third_party/rust/target-lexicon-0.9.0_orig/.cargo-checksum.json 2022-08-15 13:05:38.000000000 -0500 -+++ thunderbird-91.13.0/third_party/rust/target-lexicon-0.9.0/.cargo-checksum.json 2022-11-23 01:16:14.304912521 -0600 -@@ -1 +1 @@ --{"files":{"Cargo.lock":"a1a162e6ce8fc2234a6ddf7090410006a1920ace8738772e32a5b50e4780c19d","Cargo.toml":"f3b545fa0f184fd0d3624e6e5c205fcbdf1ad0934a2e08406549ad53c2a62ac3","LICENSE":"268872b9816f90fd8e85db5a28d33f8150ebb8dd016653fb39ef1f94f2686bc5","README.md":"c3467056d91be3f59562158ee9604c729b5b5f473efbefb036032803eb76809e","build.rs":"723100e9cdc30cd8c48407233c2cffa10f5b10703a0a11bac1230d8b86e49ccf","examples/host.rs":"503bafddfb372123fe4dc0e7b8037808beb5bfe6df60c00d3315922bd3792c6c","examples/misc.rs":"49a579845450b7b020ed5c97dca142fc548725893cbc82f6f750ee0caab2beca","newlist":"89564342916321c5bc35e772d374a7f0af22cc9ae6dcc0027eca48d2269f18cb","src/host.rs":"fb543df4f362e9119a58523563e453110f4e3a426f0995911d0ca386657cf1d9","src/lib.rs":"4414353c30f25d44df6cc14f7f9eea9991222289c6aa662b74406f6923235970","src/parse_error.rs":"b3735eabc0fd0a9dfdd6375662f20ec96a79852a00a05a98fb2e421545285e53","src/targets.rs":"9ccc0849cff06d8906dacbdc15136cc47fab85ccd795033ddfdde1397dfcfe32","src/triple.rs":"949bd83b043b53b18f643ebc3fbebbfe02a13998b787fda432a5d36aa27d20bd","test.sh":"22e3c630a6c84e90d5c70c367a6712be8eeca1e7682c00d1f65bf53e330e9191"},"package":"6f4c118a7a38378f305a9e111fcb2f7f838c0be324bfb31a77ea04f7f6e684b4"} -\ No newline at end of file -+{"files":{"Cargo.lock":"a1a162e6ce8fc2234a6ddf7090410006a1920ace8738772e32a5b50e4780c19d","Cargo.toml":"f3b545fa0f184fd0d3624e6e5c205fcbdf1ad0934a2e08406549ad53c2a62ac3","LICENSE":"268872b9816f90fd8e85db5a28d33f8150ebb8dd016653fb39ef1f94f2686bc5","README.md":"c3467056d91be3f59562158ee9604c729b5b5f473efbefb036032803eb76809e","build.rs":"85d6a1b6392b56946f48c0ff1526736a37fe012951bf3855709da1d6cfb4baa0","examples/host.rs":"503bafddfb372123fe4dc0e7b8037808beb5bfe6df60c00d3315922bd3792c6c","examples/misc.rs":"49a579845450b7b020ed5c97dca142fc548725893cbc82f6f750ee0caab2beca","newlist":"89564342916321c5bc35e772d374a7f0af22cc9ae6dcc0027eca48d2269f18cb","src/host.rs":"fb543df4f362e9119a58523563e453110f4e3a426f0995911d0ca386657cf1d9","src/lib.rs":"89986c98b9a04e0f1e957e0127e23a53048a1f0d597493723c4bba031c2ca32d","src/parse_error.rs":"b3735eabc0fd0a9dfdd6375662f20ec96a79852a00a05a98fb2e421545285e53","src/targets.rs":"f2048f06e3e2151a8181d8c92651fa45e64b8bfdfd18ead4b6c18ee7c9fb9003","src/triple.rs":"4704266fec8763bc70d230aad3608bdb790b51e41149056daa2ce0d5fdaef5a3","test.sh":"22e3c630a6c84e90d5c70c367a6712be8eeca1e7682c00d1f65bf53e330e9191"},"package":"6f4c118a7a38378f305a9e111fcb2f7f838c0be324bfb31a77ea04f7f6e684b4"} |