diff options
author | Randy Eckenrode <randy@largeandhighquality.com> | 2023-10-27 16:38:20 -0400 |
---|---|---|
committer | Randy Eckenrode <randy@largeandhighquality.com> | 2023-10-29 09:58:01 -0400 |
commit | b034e4cbf12f7c0d749674c102e31e6a47fa2d7f (patch) | |
tree | fff7ccc49b7a805881e19a661259a0e150795ae0 /pkgs/development/web | |
parent | 81d2db9460d74688a64d63fe2b31ddab46560848 (diff) | |
download | nixpkgs-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.nix | 14 |
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 |