# Abseil BMI2 public header Vendored Abseil includes `bmi2intrin.h` directly when `__BMI2__` is enabled. Compilers reject that internal header without the umbrella-header setup. `bmi2-public-header.patch` includes `immintrin.h` instead, allowing builds that enable BMI2 through `-march=x86-64-v3`. ## Scope and behavior The patch changes one include in `third_party/abseil-cpp/absl/container/internal/raw_hash_set.h`. `default.nix` applies it to Electron 43's unwrapped package, Deno's `librusty_v8`, and Signal's WebRTC dependency. It also supplies the patched Electron package to Signal. These overrides apply only to `x86-64-v3`. The shared file path is relative to each vendoring project's source root, not the root of a standalone Abseil checkout. No hash-table algorithm or test exclusion changes. ## Reproduction and focused checks From this directory, check and apply the patch to each vendored source tree: ```sh patch --dry-run --fuzz=0 -d /path/to/vendor-source -p1 < bmi2-public-header.patch patch --fuzz=0 -d /path/to/vendor-source -p1 < bmi2-public-header.patch ``` A small compiler check isolates the header requirement. With GCC or Clang on x86-64, compile `#include ` using `-march=x86-64-v3`; the compiler rejects the direct include. Changing it to `#include ` should compile. The full consumer builds below check integration with their actual toolchains. ## Upstream status Abseil addressed this issue through [PR #2071](https://github.com/abseil/abseil-cpp/pull/2071), imported by its upstream workflow. That change uses `x86gprintrin.h`; this local variant uses the public `immintrin.h` umbrella header for the vendored toolchains. Keep the workaround until all three bundled copies include a compatible fix. This file is a local adaptation, not a verbatim copy of the upstream diff. ## Local NixOS integration and build results [`../default.nix`](../default.nix) merges this directory's overlay fragment because it repairs multiple packages. From the repository root, the consumer build commands are: ```sh nix build --no-link -L .#nixosConfigurations.jeeves.pkgs.deno nix build --no-link -L .#nixosConfigurations.jeeves.pkgs.electron_43 nix build --no-link -L .#nixosConfigurations.jeeves.pkgs.signal-desktop ``` The earlier extraction checked the vendored header snapshots and evaluated all three patch attachments. Those records do not establish successful full consumer rebuilds. No new compiler or consumer build was run for the layout change; the patch and override are unchanged.