nodejs_18: drop due to upstream EOL

This commit is contained in:
Antoine du Hamel 2025-04-17 11:31:58 +02:00
parent e6031a08f6
commit f52dfae760
No known key found for this signature in database
GPG key ID: 21D900FFDB233756
13 changed files with 27 additions and 345 deletions

View file

@ -191,6 +191,8 @@
- `mkBinaryCache` now defaults to using `zstd` compression for the binary caches it creates. The previous `xz` compression method can be used by passing `compression = "xz";`.
- `nodejs_18` package was removed due to upstream End-of-Life in April 2025.
- `nodePackages."@commitlint/config-conventional"` has been removed, as it is a library, and projects should depend on it instead.
- zigbee2mqtt is now available in version 2.x as `zigbee2mqtt_2`. In NixOS 25.11 we'll remove `zigbee2mqtt_1` and default to `zigbee2mqtt_2`. See the [breaking changes](https://github.com/Koenkk/zigbee2mqtt/discussions/24198) announcement for 2.0.0.

View file

@ -4,13 +4,13 @@
fetchYarnDeps,
makeWrapper,
mkYarnPackage,
nodejs_18,
nodejs_20,
callPackage,
}:
let
data = lib.importJSON ./pin.json;
nodejs = nodejs_18;
nodejs = nodejs_20;
matrix-sdk-crypto-nodejs = callPackage ./matrix-sdk-crypto-nodejs-0_1_0-beta_3/package.nix { };
in
mkYarnPackage rec {
@ -59,5 +59,7 @@ mkYarnPackage rec {
chvp
];
license = licenses.asl20;
# Depends on nodejs_18 that has been removed.
broken = true;
};
}

View file

@ -2,7 +2,7 @@ src: version:
{
lib,
fetchYarnDeps,
nodejs_18,
nodejs_20,
fixup-yarn-lock,
stdenv,
yarn,
@ -19,8 +19,8 @@ stdenv.mkDerivation {
nativeBuildInputs = [
fixup-yarn-lock
nodejs_18
(yarn.override { nodejs = nodejs_18; })
nodejs_20
(yarn.override { nodejs = nodejs_20; })
];
configurePhase = ''
@ -55,5 +55,7 @@ stdenv.mkDerivation {
description = "Frontend for Mealie";
license = licenses.agpl3Only;
maintainers = with maintainers; [ litchipi ];
# Depends on nodejs_18 that has been removed.
broken = true;
};
}

View file

@ -5,7 +5,7 @@
makeBinaryWrapper,
makeDesktopItem,
copyDesktopItems,
nodejs_18,
nodejs_20,
electron,
python3,
nix-update-script,
@ -29,7 +29,7 @@ buildNpmPackage rec {
npmDepsHash = "sha256-UqjYNXdNoQmirIgU9DRgkp14SIrawfrfi9mD2h6ACyU=";
nodejs = nodejs_18;
nodejs = nodejs_20;
nativeBuildInputs = [
copyDesktopItems
@ -97,5 +97,7 @@ buildNpmPackage rec {
maintainers = [ ];
platforms = platforms.linux;
mainProgram = "open-stage-control";
# Depends on nodejs_18 that has been removed.
broken = true;
};
}

View file

@ -1,138 +0,0 @@
From 4b83f714c821d6d4d2306673ee3a87907cfec80e Mon Sep 17 00:00:00 2001
From: Ivan Trubach <mr.trubach@icloud.com>
Date: Fri, 19 Jul 2024 10:45:13 +0300
Subject: [PATCH] build: support setting an emulator from configure script
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
V8s JIT infrastructure requires binaries such as mksnapshot to be run
during the build. However, these binaries must have the same bit-width
as the host platform (e.g. a x86_64 build platform targeting ARMv6 needs
to produce a 32-bit binary).
To work around this issue, allow building the binaries for the host
platform and running them on the build platform with an emulator.
Based on Buildroots nodejs-src 0001-add-qemu-wrapper-support.patch.
https://gitlab.com/buildroot.org/buildroot/-/blob/c1d5eada4d4db9eeaa1c44dd1dea95a67c8a70ca/package/nodejs/nodejs-src/0001-add-qemu-wrapper-support.patch
Upstream: https://github.com/nodejs/node/pull/53899
---
common.gypi | 1 +
configure.py | 14 ++++++++++++++
node.gyp | 3 +++
tools/v8_gypfiles/v8.gyp | 4 ++++
4 files changed, 22 insertions(+)
diff --git a/common.gypi b/common.gypi
index ec92c9df4c..6474495ab6 100644
--- a/common.gypi
+++ b/common.gypi
@@ -13,6 +13,7 @@
'enable_pgo_generate%': '0',
'enable_pgo_use%': '0',
'python%': 'python',
+ 'emulator%': [],
'node_shared%': 'false',
'force_dynamic_crt%': 0,
diff --git a/configure.py b/configure.py
index 82916748fd..10dc0becbb 100755
--- a/configure.py
+++ b/configure.py
@@ -112,6 +112,12 @@ parser.add_argument('--dest-cpu',
choices=valid_arch,
help=f"CPU architecture to build for ({', '.join(valid_arch)})")
+parser.add_argument('--emulator',
+ action='store',
+ dest='emulator',
+ default=None,
+ help='emulator command that can run executables built for the target system')
+
parser.add_argument('--cross-compiling',
action='store_true',
dest='cross_compiling',
@@ -2160,6 +2166,14 @@ write('config.mk', do_not_edit + config_str)
gyp_args = ['--no-parallel', '-Dconfiguring_node=1']
gyp_args += ['-Dbuild_type=' + config['BUILDTYPE']]
+if options.emulator is not None:
+ if not options.cross_compiling:
+ # Note that emulator is a list so we have to quote the variable.
+ gyp_args += ['-Demulator=' + shlex.quote(options.emulator)]
+ else:
+ # TODO: perhaps use emulator for tests?
+ warn('The `--emulator` option has no effect when cross-compiling.')
+
if options.use_ninja:
gyp_args += ['-f', 'ninja-' + flavor]
elif flavor == 'win' and sys.platform != 'msys':
diff --git a/node.gyp b/node.gyp
index 08cb3f38e8..515b305933 100644
--- a/node.gyp
+++ b/node.gyp
@@ -332,6 +332,7 @@
'<(SHARED_INTERMEDIATE_DIR)/node_snapshot.cc',
],
'action': [
+ '<@(emulator)',
'<(node_mksnapshot_exec)',
'--build-snapshot',
'<(node_snapshot_main)',
@@ -351,6 +352,7 @@
'<(SHARED_INTERMEDIATE_DIR)/node_snapshot.cc',
],
'action': [
+ '<@(emulator)',
'<@(_inputs)',
'<@(_outputs)',
],
@@ -1520,6 +1522,7 @@
'<(PRODUCT_DIR)/<(node_core_target_name).def',
],
'action': [
+ '<@(emulator)',
'<(PRODUCT_DIR)/gen_node_def.exe',
'<@(_inputs)',
'<@(_outputs)',
diff --git a/tools/v8_gypfiles/v8.gyp b/tools/v8_gypfiles/v8.gyp
index ba8b161f0f..d5c90dad50 100644
--- a/tools/v8_gypfiles/v8.gyp
+++ b/tools/v8_gypfiles/v8.gyp
@@ -99,6 +99,7 @@
'<@(torque_outputs_inc)',
],
'action': [
+ '<@(emulator)',
'<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)torque<(EXECUTABLE_SUFFIX)',
'-o', '<(SHARED_INTERMEDIATE_DIR)/torque-generated',
'-v8-root', '<(V8_ROOT)',
@@ -219,6 +220,7 @@
'action': [
'<(python)',
'<(V8_ROOT)/tools/run.py',
+ '<@(emulator)',
'<@(_inputs)',
'<@(_outputs)',
],
@@ -442,6 +444,7 @@
}],
],
'action': [
+ '<@(emulator)',
'>@(_inputs)',
'>@(mksnapshot_flags)',
],
@@ -1577,6 +1580,7 @@
'action': [
'<(python)',
'<(V8_ROOT)/tools/run.py',
+ '<@(emulator)',
'<@(_inputs)',
'<@(_outputs)',
],
--
2.44.1

View file

@ -1,16 +0,0 @@
Disable v8 system instrumentation on Darwin
On Darwin, the v8 system instrumentation requires the header "os/signpost.h"
which is available since apple_sdk 11+. See: https://github.com/nodejs/node/issues/39584
--- old/tools/v8_gypfiles/features.gypi
+++ new/tools/v8_gypfiles/features.gypi
@@ -62,7 +62,7 @@
}, {
'is_component_build': 0,
}],
- ['OS == "win" or OS == "mac"', {
+ ['OS == "win"', {
# Sets -DSYSTEM_INSTRUMENTATION. Enables OS-dependent event tracing
'v8_enable_system_instrumentation': 1,
}, {

View file

@ -1,13 +0,0 @@
Fixes cross compilation to aarch64-linux by reverting
https://github.com/nodejs/node/pull/43200
--- old/configure.py
+++ new/configure.py
@@ -1236,7 +1236,6 @@
# Enable branch protection for arm64
if target_arch == 'arm64':
- o['cflags']+=['-msign-return-address=all']
o['variables']['arm_fpu'] = options.arm_fpu or 'neon'
if options.node_snapshot_main is not None:

View file

@ -1,76 +0,0 @@
Backport V8_TRAP_HANDLER_SUPPORTED conditional compilation for trap
handler implementation.
See https://github.com/v8/v8/commit/e7bef8d4cc4f38cc3d5a532fbcc445dc62adc08f
E.g. when cross-compiling from aarch64-linux for x86_64-linux target,
handler-inside-posix.cc is built on aarch64-linux even though it is not
supported; see src/trap-handler/trap-handler.h in v8 for (host, target)
combinations where trap handler is supported.
Note that handler-inside-posix.cc fails to build in the case above.
diff --git a/deps/v8/src/trap-handler/handler-inside-posix.cc b/deps/v8/src/trap-handler/handler-inside-posix.cc
index e4454c378f..17af3d75dc 100644
--- a/deps/v8/src/trap-handler/handler-inside-posix.cc
+++ b/deps/v8/src/trap-handler/handler-inside-posix.cc
@@ -47,6 +47,8 @@ namespace v8 {
namespace internal {
namespace trap_handler {
+#if V8_TRAP_HANDLER_SUPPORTED
+
#if V8_OS_LINUX
#define CONTEXT_REG(reg, REG) &uc->uc_mcontext.gregs[REG_##REG]
#elif V8_OS_DARWIN
@@ -181,6 +183,8 @@ void HandleSignal(int signum, siginfo_t* info, void* context) {
// TryHandleSignal modifies context to change where we return to.
}
+#endif
+
} // namespace trap_handler
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/trap-handler/handler-inside-win.cc b/deps/v8/src/trap-handler/handler-inside-win.cc
index fcccc78ee5..3d7a2c416a 100644
--- a/deps/v8/src/trap-handler/handler-inside-win.cc
+++ b/deps/v8/src/trap-handler/handler-inside-win.cc
@@ -38,6 +38,8 @@ namespace v8 {
namespace internal {
namespace trap_handler {
+#if V8_TRAP_HANDLER_SUPPORTED
+
// The below struct needed to access the offset in the Thread Environment Block
// to see if the thread local storage for the thread has been allocated yet.
//
@@ -129,6 +131,8 @@ LONG HandleWasmTrap(EXCEPTION_POINTERS* exception) {
return EXCEPTION_CONTINUE_SEARCH;
}
+#endif
+
} // namespace trap_handler
} // namespace internal
} // namespace v8
diff --git a/deps/v8/src/trap-handler/handler-outside-simulator.cc b/deps/v8/src/trap-handler/handler-outside-simulator.cc
index 179eab0659..5e58719e7f 100644
--- a/deps/v8/src/trap-handler/handler-outside-simulator.cc
+++ b/deps/v8/src/trap-handler/handler-outside-simulator.cc
@@ -4,6 +4,9 @@
#include "include/v8config.h"
#include "src/trap-handler/trap-handler-simulator.h"
+#include "src/trap-handler/trap-handler.h"
+
+#if V8_TRAP_HANDLER_SUPPORTED
#if V8_OS_DARWIN
#define SYMBOL(name) "_" #name
@@ -35,3 +38,5 @@ asm(
SYMBOL(v8_probe_memory_continuation) ": \n"
// If the trap handler continues here, it wrote the landing pad in %rax.
" ret \n");
+
+#endif

View file

@ -1,86 +0,0 @@
{
callPackage,
lib,
openssl,
python311,
fetchpatch2,
icu75,
enableNpm ? true,
}:
let
buildNodejs = callPackage ./nodejs.nix {
inherit openssl;
python = python311;
icu = icu75; # does not build with newer
};
gypPatches = callPackage ./gyp-patches.nix { } ++ [
./gyp-patches-pre-v22-import-sys.patch
];
in
buildNodejs {
inherit enableNpm;
version = "18.20.8";
sha256 = "36a7bf1a76d62ce4badd881ee5974a323c70e1d8d19165732684e145632460d9";
patches = [
./configure-emulator-node18.patch
./configure-armv6-vfpv2.patch
./disable-darwin-v8-system-instrumentation.patch
./bypass-darwin-xcrun-node16.patch
./revert-arm64-pointer-auth.patch
./node-npm-build-npm-package-logic.patch
./trap-handler-backport.patch
./use-correct-env-in-tests.patch
(fetchpatch2 {
url = "https://github.com/nodejs/node/commit/534c122de166cb6464b489f3e6a9a544ceb1c913.patch";
hash = "sha256-4q4LFsq4yU1xRwNsM1sJoNVphJCnxaVe2IyL6AeHJ/I=";
})
(fetchpatch2 {
url = "https://github.com/nodejs/node/commit/87598d4b63ef2c827a2bebdfa0f1540c35718519.patch";
hash = "sha256-JJi8z9aaWnu/y3nZGOSUfeNzNSCYzD9dzoHXaGkeaEA=";
includes = [ "test/common/assertSnapshot.js" ];
})
(fetchpatch2 {
url = "https://github.com/nodejs/node/commit/d0a6b605fba6cd69a82e6f12ff0363eef8fe1ee9.patch";
hash = "sha256-TfYal/PikRZHL6zpAlC3SmkYXCe+/8Gs83dLX/X/P/k=";
})
# Remove unused `fdopen` in vendored zlib, which causes compilation failures with clang 18 on Darwin.
(fetchpatch2 {
url = "https://github.com/madler/zlib/commit/4bd9a71f3539b5ce47f0c67ab5e01f3196dc8ef9.patch?full_index=1";
extraPrefix = "deps/v8/third_party/zlib/";
stripLen = 1;
hash = "sha256-WVxsoEcJu0WBTyelNrVQFTZxJhnekQb1GrueeRBRdnY=";
})
# Backport V8 fixes for LLVM 19.
(fetchpatch2 {
url = "https://chromium.googlesource.com/v8/v8/+/182d9c05e78b1ddb1cb8242cd3628a7855a0336f%5E%21/?format=TEXT";
decode = "base64 -d";
extraPrefix = "deps/v8/";
stripLen = 1;
hash = "sha256-bDTwFbATPn5W4VifWz/SqaiigXYDWHq785C64VezuUE=";
})
(fetchpatch2 {
url = "https://chromium.googlesource.com/v8/v8/+/1a3ecc2483b2dba6ab9f7e9f8f4b60dbfef504b7%5E%21/?format=TEXT";
decode = "base64 -d";
extraPrefix = "deps/v8/";
stripLen = 1;
hash = "sha256-6y3aEqxNC4iTQEv1oewodJrhOHxjp5xZMq1P1QL94Rg=";
})
# Fix for https://github.com/NixOS/nixpkgs/issues/355919
# FIXME: remove after a minor point release
(fetchpatch2 {
url = "https://github.com/nodejs/node/commit/a094a8166cd772f89e92b5deef168e5e599fa815.patch?full_index=1";
hash = "sha256-5FZfozYWRa1ZI/f+e+xpdn974Jg2DbiHbua13XUQP5E=";
})
(fetchpatch2 {
url = "https://github.com/nodejs/node/commit/f270462c09ddfd770291a7c8a2cd204b2c63d730.patch?full_index=1";
hash = "sha256-Err0i5g7WtXcnhykKgrS3ocX7/3oV9UrT0SNeRtMZNU=";
})
# fix test failure on macos 15.4
(fetchpatch2 {
url = "https://github.com/nodejs/node/commit/33f6e1ea296cd20366ab94e666b03899a081af94.patch?full_index=1";
hash = "sha256-aVBMcQlhQeviUQpMIfC988jjDB2BgYzlMYsq+w16mzU=";
})
] ++ gypPatches;
}

View file

@ -4,7 +4,7 @@
pkgs,
lib,
node-pre-gyp,
nodejs_18,
nodejs_20,
pkg-config,
libjpeg,
pixman,
@ -15,7 +15,7 @@
}:
let
nodejs = nodejs_18;
nodejs = nodejs_20;
version = "0.1.1";
@ -72,7 +72,8 @@ myNodePackages.package.override {
maintainers = [ ];
platforms = platforms.unix;
# never built on aarch64-darwin since first introduction in nixpkgs
broken = stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64;
# Depends on nodejs_18 that has been removed.
broken = true;
mainProgram = "mx-puppet-discord";
};
}

View file

@ -5,7 +5,7 @@
inherit system;
},
system ? builtins.currentSystem,
nodejs ? pkgs."nodejs_18",
nodejs ? pkgs."nodejs_20",
}:
let

View file

@ -265,6 +265,8 @@ stdenv.mkDerivation (finalAttrs: {
"x86_64-darwin"
"aarch64-darwin"
];
# Depends on nodejs_18 that has been removed.
broken = true;
mainProgram = "openvscode-server";
};
})

View file

@ -4164,9 +4164,9 @@ with pkgs;
nodejs-slim = nodejs-slim_22;
corepack = hiPrio corepack_22;
nodejs_18 = callPackage ../development/web/nodejs/v18.nix { };
nodejs-slim_18 = callPackage ../development/web/nodejs/v18.nix { enableNpm = false; };
corepack_18 = hiPrio (callPackage ../development/web/nodejs/corepack.nix { nodejs = nodejs_18; });
nodejs_18 = throw "Node.js 18.x has reached End-Of-Life and has been removed";
nodejs-slim_18 = throw "Node.js 18.x has reached End-Of-Life and has been removed";
corepack_18 = throw "Node.js 18.x has reached End-Of-Life and has been removed";
nodejs_20 = callPackage ../development/web/nodejs/v20.nix { };
nodejs-slim_20 = callPackage ../development/web/nodejs/v20.nix { enableNpm = false; };
@ -11990,7 +11990,7 @@ with pkgs;
};
lemmy-ui = callPackage ../servers/web-apps/lemmy/ui.nix {
nodejs = nodejs_18;
nodejs = nodejs_20;
};
mailmanPackages = callPackage ../servers/mail/mailman { };
@ -16467,7 +16467,7 @@ with pkgs;
};
openvscode-server = callPackage ../servers/openvscode-server {
nodejs = nodejs_18;
nodejs = nodejs_20;
inherit (darwin.apple_sdk.frameworks) AppKit Cocoa Security;
};