summary refs log tree commit diff
path: root/pkgs/development/web
diff options
context:
space:
mode:
authorRandy Eckenrode <randy@largeandhighquality.com>2023-10-27 16:38:20 -0400
committerRandy Eckenrode <randy@largeandhighquality.com>2023-10-29 09:58:01 -0400
commitb034e4cbf12f7c0d749674c102e31e6a47fa2d7f (patch)
treefff7ccc49b7a805881e19a661259a0e150795ae0 /pkgs/development/web
parent81d2db9460d74688a64d63fe2b31ddab46560848 (diff)
downloadnixpkgs-b034e4cbf12f7c0d749674c102e31e6a47fa2d7f.tar
nixpkgs-b034e4cbf12f7c0d749674c102e31e6a47fa2d7f.tar.gz
nixpkgs-b034e4cbf12f7c0d749674c102e31e6a47fa2d7f.tar.bz2
nixpkgs-b034e4cbf12f7c0d749674c102e31e6a47fa2d7f.tar.lz
nixpkgs-b034e4cbf12f7c0d749674c102e31e6a47fa2d7f.tar.xz
nixpkgs-b034e4cbf12f7c0d749674c102e31e6a47fa2d7f.tar.zst
nixpkgs-b034e4cbf12f7c0d749674c102e31e6a47fa2d7f.zip
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.
Diffstat (limited to 'pkgs/development/web')
-rw-r--r--pkgs/development/web/nodejs/v18.nix14
1 files changed, 13 insertions, 1 deletions
diff --git a/pkgs/development/web/nodejs/v18.nix b/pkgs/development/web/nodejs/v18.nix
index 3c8abbb2918..b36e8e3d0f3 100644
--- a/pkgs/development/web/nodejs/v18.nix
+++ b/pkgs/development/web/nodejs/v18.nix
@@ -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