about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/web/nodejs
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/web/nodejs')
-rw-r--r--nixpkgs/pkgs/development/web/nodejs/nodejs.nix7
-rw-r--r--nixpkgs/pkgs/development/web/nodejs/v14.nix16
-rw-r--r--nixpkgs/pkgs/development/web/nodejs/v16.nix14
-rw-r--r--nixpkgs/pkgs/development/web/nodejs/v18.nix14
4 files changed, 47 insertions, 4 deletions
diff --git a/nixpkgs/pkgs/development/web/nodejs/nodejs.nix b/nixpkgs/pkgs/development/web/nodejs/nodejs.nix
index 8b615a55dd3a..b1bd0ae912d9 100644
--- a/nixpkgs/pkgs/development/web/nodejs/nodejs.nix
+++ b/nixpkgs/pkgs/development/web/nodejs/nodejs.nix
@@ -34,6 +34,7 @@ let
      */
   ]) (builtins.attrNames sharedLibDeps) ++ [
     "--with-intl=system-icu"
+    "--openssl-use-def-ca-store"
   ];
 
   copyLibHeaders =
@@ -52,6 +53,12 @@ let
 
     strictDeps = true;
 
+    env = lib.optionalAttrs (stdenv.isDarwin && stdenv.isx86_64) {
+      # Make sure libc++ uses `posix_memalign` instead of `aligned_alloc` on x86_64-darwin.
+      # Otherwise, nodejs would require the 11.0 SDK and macOS 10.15+.
+      NIX_CFLAGS_COMPILE = "-D__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__=101300";
+    };
+
     CC_host = "cc";
     CXX_host = "c++";
     depsBuildBuild = [ buildPackages.stdenv.cc openssl libuv zlib icu ];
diff --git a/nixpkgs/pkgs/development/web/nodejs/v14.nix b/nixpkgs/pkgs/development/web/nodejs/v14.nix
index e7dec1c12f66..c2d5d58bea78 100644
--- a/nixpkgs/pkgs/development/web/nodejs/v14.nix
+++ b/nixpkgs/pkgs/development/web/nodejs/v14.nix
@@ -1,8 +1,20 @@
-{ callPackage, python3, lib, stdenv, openssl, enableNpm ? true }:
+{ callPackage, lib, overrideCC, pkgs, buildPackages, openssl, python3, enableNpm ? true }:
 
 let
+  # Clang 16+ cannot build Node v14 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
@@ -10,5 +22,5 @@ in
     inherit enableNpm;
     version = "14.21.3";
     sha256 = "sha256-RY7AkuYK1wDdzwectj1DXBXaTHuz0/mbmo5YqZ5UB14=";
-    patches = lib.optional stdenv.isDarwin ./bypass-xcodebuild.diff;
+    patches = lib.optional pkgs.stdenv.isDarwin ./bypass-xcodebuild.diff;
   }
diff --git a/nixpkgs/pkgs/development/web/nodejs/v16.nix b/nixpkgs/pkgs/development/web/nodejs/v16.nix
index d4bb94c07d3e..930b648ca559 100644
--- a/nixpkgs/pkgs/development/web/nodejs/v16.nix
+++ b/nixpkgs/pkgs/development/web/nodejs/v16.nix
@@ -1,8 +1,20 @@
-{ callPackage, openssl, python3, fetchpatch, enableNpm ? true }:
+{ callPackage, lib, overrideCC, pkgs, buildPackages, openssl, python3, fetchpatch, enableNpm ? true }:
 
 let
+  # Clang 16+ cannot build Node v14 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;
   };
 
diff --git a/nixpkgs/pkgs/development/web/nodejs/v18.nix b/nixpkgs/pkgs/development/web/nodejs/v18.nix
index 3c8abbb29188..b36e8e3d0f3a 100644
--- a/nixpkgs/pkgs/development/web/nodejs/v18.nix
+++ b/nixpkgs/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