diff --git a/overlays/test-exclusions.nix b/overlays/test-exclusions.nix index 41a6d5a..e410525 100644 --- a/overlays/test-exclusions.nix +++ b/overlays/test-exclusions.nix @@ -111,6 +111,15 @@ _final: prev: { ]; }); + torchaudio = pythonPrev.torchaudio.overridePythonAttrs (old: { + # x86-64-v3 pitch shifting produces batch-versus-single-item numerical + # differences up to 2.9e-6. We accept that audio-precision risk for our + # workloads. + disabledTests = (old.disabledTests or [ ]) ++ [ + "test_batch_pitch_shift" + ]; + }); + torchcodec = pythonPrev.torchcodec.overridePythonAttrs (old: { # For these 8 kHz MP3 cases, the x86-64-v3 API and CLI codec paths # differ in 0.8% of decoded samples. Retain the original tolerance for diff --git a/overlays/x86-64-v3-workarounds.nix b/overlays/x86-64-v3-workarounds.nix index 6f8a390..c1e0bd0 100644 --- a/overlays/x86-64-v3-workarounds.nix +++ b/overlays/x86-64-v3-workarounds.nix @@ -4,17 +4,57 @@ # by the generic x86-64 build. Keep compile fixes here, separate from test # exclusions, until upstream or nixpkgs incorporates them. _final: prev: +let + patchAbseilBmi2Include = + package: + package.overrideAttrs (old: { + # GCC and Clang prohibit including their internal BMI2 header directly. + # The public umbrella provides the same intrinsics with the required + # compiler setup. + postPatch = (old.postPatch or "") + '' + substituteInPlace third_party/abseil-cpp/absl/container/internal/raw_hash_set.h \ + --replace-fail "#include " "#include " + ''; + }); + + removeSiblingOutputChecks = + package: + package.overrideAttrs (old: { + # Nix 2.34 can validate a partial multi-output rebuild against only the + # outputs still being realised. PostgreSQL's checks then reject valid + # sibling names such as "out" and "lib". Keep the test suite and + # disallowed-requisite checks; accept the loss of cross-output checks. + outputChecks = builtins.mapAttrs ( + _output: checks: builtins.removeAttrs checks [ "disallowedReferences" ] + ) (old.outputChecks or { }); + }); + + electron43Unwrapped = patchAbseilBmi2Include prev.electron_43.unwrapped; + electron43 = prev.electron_43.override { + electron-unwrapped = electron43Unwrapped; + }; + + signalCallPackage = + path: args: + let + package = prev.callPackage path args; + in + if builtins.baseNameOf path == "webrtc.nix" then patchAbseilBmi2Include package else package; +in prev.lib.optionalAttrs ((prev.stdenv.hostPlatform.gcc.arch or null) == "x86-64-v3") { deno = let - librusty_v8 = prev.deno.passthru.librusty_v8.overrideAttrs (old: { - # Clang prohibits including its internal BMI2 header directly. The - # public umbrella supplies the same intrinsics with the required setup. - postPatch = (old.postPatch or "") + '' - substituteInPlace third_party/abseil-cpp/absl/container/internal/raw_hash_set.h \ - --replace-fail "#include " "#include " - ''; - }); + librusty_v8 = patchAbseilBmi2Include prev.deno.passthru.librusty_v8; in prev.deno.override { inherit librusty_v8; }; + + electron_43 = electron43; + + postgresql = removeSiblingOutputChecks prev.postgresql; + postgresql_18 = removeSiblingOutputChecks prev.postgresql_18; + + signal-desktop = prev.signal-desktop.override { + electron_43 = electron43; + callPackage = signalCallPackage; + }; }