@ 261027.7

261018.1 · 4caa87cda978f25211499266fcc99e637c582ebc

chore: update swc to v1.16.18

reading declarations

Changes to deps/swc/bindings/binding_native_addon/build.rs. All files

deps/swc/bindings/binding_native_addon/build.rs

new file mode 100644@@ -0,0 +1,81 @@+use std::{env, fs, path::PathBuf};++use swc_native_addon::{+    format::{NativeTarget, Payload},+    integrity::RuntimeIntegrity,+};++fn main() {+    println!("cargo:rerun-if-env-changed=SWC_NATIVE_BINDING_PAYLOAD");+    let output = PathBuf::from(env::var_os("OUT_DIR").unwrap()).join("payload.rs");+    if env::var_os("CARGO_FEATURE_EMBEDDED_PAYLOAD").is_none() {+        fs::write(+            output,+            "static PAYLOAD: &[u8] = &[];\nstatic INTEGRITY: &[u8] = &[];\n",+        )+        .unwrap();+        return;+    }+    let target = env::var("TARGET").unwrap();+    let target = NativeTarget::parse(&target).expect("native carrier target");+    let path = PathBuf::from(+        env::var_os("SWC_NATIVE_BINDING_PAYLOAD")+            .expect("embedded-payload requires SWC_NATIVE_BINDING_PAYLOAD=/absolute/payload.swcn"),+    );+    assert!(+        path.is_absolute(),+        "SWC_NATIVE_BINDING_PAYLOAD must be absolute"+    );+    println!("cargo:rerun-if-changed={}", path.display());+    let bytes = fs::read(&path).expect("read native addon payload");+    let payload = Payload::parse(&bytes).expect("validate native addon payload header");+    assert_eq!(+        payload.header.target, target,+        "embedded native addon payload target does not match Cargo TARGET"+    );+    let output_parent = output.parent().expect("OUT_DIR has a parent");+    let mut raw = tempfile::Builder::new()+        .prefix(".swc-native-addon-validate-")+        .tempfile_in(output_parent)+        .expect("stage decoded native addon validation");+    payload+        .decode_into(&mut raw)+        .expect("decode embedded native addon bytes");+    payload+        .verify_target(&mut raw)+        .expect("validate embedded native addon target");+    let integrity = RuntimeIntegrity::from_raw(&payload.header, &mut raw)+        .expect("derive runtime integrity from SHA-512 verified raw addon");+    let integrity_path = output.with_file_name("integrity.swcn");+    fs::write(&integrity_path, integrity.encode()).expect("snapshot native runtime integrity");+    // Copy to OUT_DIR so a later input replacement cannot change the validated+    // payload between build-script validation and rustc's include_bytes call.+    let embedded = output.with_file_name("payload.swcn");+    fs::write(&embedded, &bytes).expect("snapshot validated addon payload");+    // Retain a complete, mapped payload for final-artifact verification. LTO+    // may otherwise fold header reads and eliminate parts of include_bytes.+    // Section names fit the Mach-O (16-byte) and PE (8-byte) limits.+    fs::write(+        output,+        format!(+            r#"#[used]+#[cfg_attr(target_os = "linux", link_section = ".swc_native")]+#[cfg_attr(target_os = "macos", link_section = "__TEXT,__swc_native")]+#[cfg_attr(windows, link_section = ".swcn")]+static EMBEDDED_PAYLOAD: [u8; {}] = *include_bytes!({:?});+static PAYLOAD: &[u8] = &EMBEDDED_PAYLOAD;+#[used]+#[cfg_attr(target_os = "linux", link_section = ".swc_integrity")]+#[cfg_attr(target_os = "macos", link_section = "__TEXT,__swc_integrity")]+#[cfg_attr(windows, link_section = ".swci")]+static EMBEDDED_INTEGRITY: [u8; {}] = *include_bytes!({:?});+static INTEGRITY: &[u8] = &EMBEDDED_INTEGRITY;+"#,+            payload.header.compressed_len + swc_native_addon::format::HEADER_LEN as u64,+            embedded,+            swc_native_addon::integrity::INTEGRITY_LEN,+            integrity_path,+        ),+    )+    .unwrap();+}