From f52dfae760a7135cbb66a38ab60d926b5557ecc3 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Thu, 17 Apr 2025 11:31:58 +0200 Subject: [PATCH] nodejs_18: drop due to upstream EOL --- doc/release-notes/rl-2505.section.md | 2 + .../ma/matrix-appservice-slack/package.nix | 6 +- pkgs/by-name/me/mealie/mealie-frontend.nix | 8 +- .../by-name/op/open-stage-control/package.nix | 6 +- .../nodejs/configure-emulator-node18.patch | 138 ------------------ ...ble-darwin-v8-system-instrumentation.patch | 16 -- .../nodejs/revert-arm64-pointer-auth.patch | 13 -- .../web/nodejs/trap-handler-backport.patch | 76 ---------- pkgs/development/web/nodejs/v18.nix | 86 ----------- pkgs/servers/mx-puppet-discord/default.nix | 7 +- .../mx-puppet-discord/node-composition.nix | 2 +- pkgs/servers/openvscode-server/default.nix | 2 + pkgs/top-level/all-packages.nix | 10 +- 13 files changed, 27 insertions(+), 345 deletions(-) delete mode 100644 pkgs/development/web/nodejs/configure-emulator-node18.patch delete mode 100644 pkgs/development/web/nodejs/disable-darwin-v8-system-instrumentation.patch delete mode 100644 pkgs/development/web/nodejs/revert-arm64-pointer-auth.patch delete mode 100644 pkgs/development/web/nodejs/trap-handler-backport.patch delete mode 100644 pkgs/development/web/nodejs/v18.nix diff --git a/doc/release-notes/rl-2505.section.md b/doc/release-notes/rl-2505.section.md index b434691b279d..346319db23ab 100644 --- a/doc/release-notes/rl-2505.section.md +++ b/doc/release-notes/rl-2505.section.md @@ -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. diff --git a/pkgs/by-name/ma/matrix-appservice-slack/package.nix b/pkgs/by-name/ma/matrix-appservice-slack/package.nix index b37ebccbf2f2..0a24e694698a 100644 --- a/pkgs/by-name/ma/matrix-appservice-slack/package.nix +++ b/pkgs/by-name/ma/matrix-appservice-slack/package.nix @@ -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; }; } diff --git a/pkgs/by-name/me/mealie/mealie-frontend.nix b/pkgs/by-name/me/mealie/mealie-frontend.nix index bbf356cad3e3..2947ffb2ab6c 100644 --- a/pkgs/by-name/me/mealie/mealie-frontend.nix +++ b/pkgs/by-name/me/mealie/mealie-frontend.nix @@ -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; }; } diff --git a/pkgs/by-name/op/open-stage-control/package.nix b/pkgs/by-name/op/open-stage-control/package.nix index 7df60380a38f..6ffa6b95ec41 100644 --- a/pkgs/by-name/op/open-stage-control/package.nix +++ b/pkgs/by-name/op/open-stage-control/package.nix @@ -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; }; } diff --git a/pkgs/development/web/nodejs/configure-emulator-node18.patch b/pkgs/development/web/nodejs/configure-emulator-node18.patch deleted file mode 100644 index f7faddb7e005..000000000000 --- a/pkgs/development/web/nodejs/configure-emulator-node18.patch +++ /dev/null @@ -1,138 +0,0 @@ -From 4b83f714c821d6d4d2306673ee3a87907cfec80e Mon Sep 17 00:00:00 2001 -From: Ivan Trubach -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 - -V8’s 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 Buildroot’s 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 - diff --git a/pkgs/development/web/nodejs/disable-darwin-v8-system-instrumentation.patch b/pkgs/development/web/nodejs/disable-darwin-v8-system-instrumentation.patch deleted file mode 100644 index 63e9107b33d0..000000000000 --- a/pkgs/development/web/nodejs/disable-darwin-v8-system-instrumentation.patch +++ /dev/null @@ -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, - }, { diff --git a/pkgs/development/web/nodejs/revert-arm64-pointer-auth.patch b/pkgs/development/web/nodejs/revert-arm64-pointer-auth.patch deleted file mode 100644 index f5827983d7f2..000000000000 --- a/pkgs/development/web/nodejs/revert-arm64-pointer-auth.patch +++ /dev/null @@ -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: diff --git a/pkgs/development/web/nodejs/trap-handler-backport.patch b/pkgs/development/web/nodejs/trap-handler-backport.patch deleted file mode 100644 index c562aea3a6e2..000000000000 --- a/pkgs/development/web/nodejs/trap-handler-backport.patch +++ /dev/null @@ -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 diff --git a/pkgs/development/web/nodejs/v18.nix b/pkgs/development/web/nodejs/v18.nix deleted file mode 100644 index f63676f25823..000000000000 --- a/pkgs/development/web/nodejs/v18.nix +++ /dev/null @@ -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; -} diff --git a/pkgs/servers/mx-puppet-discord/default.nix b/pkgs/servers/mx-puppet-discord/default.nix index a4e4da2f5343..b7418016a52e 100644 --- a/pkgs/servers/mx-puppet-discord/default.nix +++ b/pkgs/servers/mx-puppet-discord/default.nix @@ -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"; }; } diff --git a/pkgs/servers/mx-puppet-discord/node-composition.nix b/pkgs/servers/mx-puppet-discord/node-composition.nix index e7922d509acb..bea673390a92 100644 --- a/pkgs/servers/mx-puppet-discord/node-composition.nix +++ b/pkgs/servers/mx-puppet-discord/node-composition.nix @@ -5,7 +5,7 @@ inherit system; }, system ? builtins.currentSystem, - nodejs ? pkgs."nodejs_18", + nodejs ? pkgs."nodejs_20", }: let diff --git a/pkgs/servers/openvscode-server/default.nix b/pkgs/servers/openvscode-server/default.nix index 309030b4d303..9eb723753496 100644 --- a/pkgs/servers/openvscode-server/default.nix +++ b/pkgs/servers/openvscode-server/default.nix @@ -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"; }; }) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 173d75522063..103411685a3d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -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; };