From 8cc0ed453694ab74346db7dc644092ab10556cdb Mon Sep 17 00:00:00 2001 From: Hilton Chain Date: Wed, 26 Apr 2023 22:29:24 +0200 Subject: [PATCH] gnu: node-lts: Update to 18.16.0. * gnu/packages/node.scm (node-lts): Update to 18.16.0. [snippet]: Keep file deps/openssl/nodejs-openssl.cnf. [arguments]<#:configure-flags>: Enable v8 snapshot compression. <#:phases>: Adjust problematic tests to delete accordingly. Patch additional file with hardcoded references to /bin/sh. [native-inputs,inputs]: Replace openssl-1.1 with openssl. Replace libuv-for-node with libuv. Replace nghttp2-for-node with nghttp2. Signed-off-by: Jelle Licht Co-authored-by: Jelle Licht --- gnu/packages/node.scm | 48 ++++++++++++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm index 2ed60fbf38..3106f01779 100644 --- a/gnu/packages/node.scm +++ b/gnu/packages/node.scm @@ -11,6 +11,7 @@ ;;; Copyright © 2021 Simon Tournier ;;; Copyright © 2021 Guillaume Le Vaillant ;;; Copyright © 2021, 2022 Philip McGrath +;;; Copyright © 2022 Hilton Chain ;;; ;;; This file is part of GNU Guix. ;;; @@ -737,23 +738,28 @@ (define-public llhttp-bootstrap (define-public node-lts (package (inherit node) - (version "14.19.3") + (version "18.16.0") (source (origin (method url-fetch) (uri (string-append "https://nodejs.org/dist/v" version - "/node-v" version ".tar.xz")) + "/node-v" version ".tar.gz")) (sha256 (base32 - "15691j5zhiikyamiwwd7f282g6d9acfhq91nrwx54xya38gmpx2w")) + "0vcc132z7lkxnw5clmiz6sp6ccmw35pyb69hczphrig5frfmqkva")) (modules '((guix build utils))) (snippet `(begin + ;; openssl.cnf is required for build. + (for-each delete-file-recursively + (find-files "deps/openssl" + (lambda (file stat) + (if (string-contains file "nodejs-openssl.cnf") + #f #t)))) ;; Remove bundled software, where possible (for-each delete-file-recursively '("deps/cares" "deps/icu-small" "deps/nghttp2" - "deps/openssl" "deps/zlib")) (substitute* "Makefile" ;; Remove references to bundled software. @@ -769,7 +775,9 @@ (define-public node-lts "--shared-openssl" "--shared-zlib" "--shared-brotli" - "--with-intl=system-icu")) + "--with-intl=system-icu" + ;;Needed for correct snapshot checksums + "--v8-enable-snapshot-compression")) ((#:phases phases) `(modify-phases ,phases (replace 'set-bootstrap-host-rpath @@ -802,23 +810,31 @@ (define-public node-lts libuv "/lib:" zlib "/lib" "'],")))))) + (add-after 'patch-hardcoded-program-references + 'patch-additional-hardcoded-program-references + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "test/parallel/test-stdin-from-file-spawn.js" + (("'/bin/sh'") (string-append + "'" (search-input-file inputs "/bin/sh") + "'"))))) (replace 'delete-problematic-tests (lambda* (#:key inputs #:allow-other-keys) ;; FIXME: These tests fail in the build container, but they don't ;; seem to be indicative of real problems in practice. (for-each delete-file - '("test/parallel/test-cluster-master-error.js" - "test/parallel/test-cluster-master-kill.js")) + '("test/parallel/test-cluster-primary-error.js" + "test/parallel/test-cluster-primary-kill.js")) ;; These require a DNS resolver. (for-each delete-file '("test/parallel/test-dns.js" - "test/parallel/test-dns-lookupService-promises.js")) + "test/parallel/test-dns-lookupService-promises.js" + "test/parallel/test-net-socket-connect-without-cb.js" + "test/parallel/test-tcp-wrap-listen.js")) ;; These tests require networking. (for-each delete-file - '("test/parallel/test-https-agent-unref-socket.js" - "test/parallel/test-corepack-yarn-install.js")) + '("test/parallel/test-https-agent-unref-socket.js")) ;; This test is timing-sensitive, and fails sporadically on ;; slow, busy, or even very fast machines. @@ -866,9 +882,9 @@ (define-public node-lts c-ares-for-node brotli icu4c - libuv-for-node - `(,nghttp2-for-node "lib") - openssl-1.1 + libuv + `(,nghttp2 "lib") + openssl zlib ;; Regular build-time dependencies. perl @@ -881,11 +897,11 @@ (define-public node-lts coreutils c-ares-for-node icu4c - libuv-for-node + libuv llhttp-bootstrap brotli - `(,nghttp2-for-node "lib") - openssl-1.1 + `(,nghttp2 "lib") + openssl zlib)))) (define-public libnode