nodejs_18: fix build with clang 16 mk2

Trying to backport the fixes from v8 caused crashes with npm when
building other packages, so just build it with clang 15.
This commit is contained in:
Randy Eckenrode 2023-10-27 16:38:20 -04:00
parent 81d2db9460
commit b034e4cbf1
No known key found for this signature in database
GPG Key ID: 64C1CD4EC2A600D9

View File

@ -1,8 +1,20 @@
{ callPackage, fetchpatch, openssl, python3, enableNpm ? true }:
{ callPackage, lib, overrideCC, pkgs, buildPackages, fetchpatch, openssl, python3, enableNpm ? true }:
let
# Clang 16+ cannot build Node v18 due to -Wenum-constexpr-conversion errors.
# Use an older version of clang with the current libc++ for compatibility (e.g., with icu).
ensureCompatibleCC = packages:
if packages.stdenv.cc.isClang && lib.versionAtLeast (lib.getVersion packages.stdenv.cc.cc) "16"
then overrideCC packages.llvmPackages_15.stdenv (packages.llvmPackages_15.stdenv.cc.override {
inherit (packages.llvmPackages) libcxx;
extraPackages = [ packages.llvmPackages.libcxxabi ];
})
else packages.stdenv;
buildNodejs = callPackage ./nodejs.nix {
inherit openssl;
stdenv = ensureCompatibleCC pkgs;
buildPackages = buildPackages // { stdenv = ensureCompatibleCC buildPackages; };
python = python3;
};
in