guix_mirror_bot pushed a commit to branch master
in repository guix.

commit d3b771327b76dfb46b5c1b137d3261d1068b8e8a
Author: Maxim Cournoyer <[email protected]>
AuthorDate: Wed Sep 16 12:35:09 2026 +0900

    gnu: node: Unbundle more libraries.
    
    * gnu/packages/node.scm (node-lts) [source] <snippet>: More thoroughly 
remove
    bundled libraries, by using an allow-list instead of a delete list.
    [#:configure-flags]: Add "--shared-ada", "--shared-gtest", "--shared-merve",
    "--shared-nbytes", "--shared-simdjson", "--shared-simdutf" and
    "--shared-sqlite".
    [#:phases] {set-bootstrap-host-rpath}: Augment with added native inputs.
    [native-inputs]: Add cpp-ada-url-parser, googletest, merve, nbytes, 
simdjson, simdutf
    and sqlite-next.
    [inputs]: Likewise.
---
 gnu/packages/node.scm | 100 ++++++++++++++++++++++++++++++++++----------------
 1 file changed, 68 insertions(+), 32 deletions(-)

diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm
index 552c0f7fe95..25b0fc67a94 100644
--- a/gnu/packages/node.scm
+++ b/gnu/packages/node.scm
@@ -35,18 +35,24 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages c)
+  #:use-module (gnu packages check)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages cpp)
   #:use-module (gnu packages dns)
+  #:use-module (gnu packages elf)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages javascript)
   #:use-module (gnu packages libevent)
+  #:use-module (gnu packages libffi)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages networking)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages web)
   #:use-module (gnu packages)
@@ -320,38 +326,40 @@ parser definition into a C output.")
               (sha256
                (base32
                 "1z4lxmf5zh0mjzr63kqj2ybf1d79g0gdc4xs3ps88z7xnvplvxd6"))
-              (modules '((guix build utils)))
+              (modules '((guix build utils)
+                         (ice-9 ftw)
+                         (srfi srfi-26)))
               (snippet
-               '(begin
-                  ;; openssl.cnf is required for build.
-                  (for-each delete-file-recursively
-                            (find-files
-                             "deps/openssl"
-                             (lambda (file stat)
-                               (not (string-contains file 
"nodejs-openssl.cnf")))))
-                  ;; [temp.names] requires a 'template' when calling a template
-                  ;; member via a dependent expression.  This header is 
compiled
-                  ;; for 32-bit targets (V8_TARGET_ARCH_32_BIT), so
-                  ;; non-conformance goes unnoticed elsewhere.  Coincidentally
-                  ;; fixed in upstream v8 at:
-                  ;; https://chromium-review.googlesource.com/c/v8/v8/+/6830052
-                  (substitute*
-                      
"deps/v8/src/compiler/turboshaft/int64-lowering-reducer.h"
-                    (("__ Tuple<Word32, Word32>")
-                     "__ template Tuple<Word32, Word32>"))
-                  ;; Remove bundled software, where possible
-                  (for-each delete-file-recursively
-                            '("deps/brotli"
-                              "deps/cares"
-                              "deps/histogram"
-                              "deps/icu-small"
-                              "deps/nghttp2"
-                              "deps/ngtcp2"
-                              "deps/llhttp"
-                              "deps/uv"
-                              "deps/uvwasi"
-                              "deps/zlib"
-                              "deps/zstd"))))))
+               #~(begin
+                   ;; XXX: 'delete-all-but' is copied from the turbovnc 
package.
+                   (define (delete-all-but directory . preserve)
+                     (with-directory-excursion directory
+                       (let* ((pred (negate (cut member <>
+                                                 (cons* "." ".." preserve))))
+                              (items (scandir "." pred)))
+                         (for-each (cut delete-file-recursively <>) items))))
+
+                   ;; the nodejs-openssl.cnf file is required by the build
+                   ;; system.
+                   (delete-all-but "deps/openssl" "nodejs-openssl.cnf")
+                   (delete-all-but "deps"
+                                   "acorn"
+                                   "amaro"
+                                   "corepack" ;used by test suite
+                                   "inspector_protocol"
+                                   "minimatch"
+                                   "ncrypto"
+                                   "npm" ;used by test suite
+                                   "openssl"
+                                   "postject"
+                                   "undici"
+                                   "v8")
+                   ;; TODO: Remove when the node-lts version becomes >= 25.
+                   ;; 
<https://chromium-review.googlesource.com/c/v8/v8/+/6830052>
+                   (substitute*
+                       
"deps/v8/src/compiler/turboshaft/int64-lowering-reducer.h"
+                     (("__ Tuple<Word32, Word32>")
+                      "__ template Tuple<Word32, Word32>"))))))
     (build-system gnu-build-system)
     (arguments
      (list
@@ -359,20 +367,27 @@ parser definition into a C output.")
       ;; Search for 'shared_optgroup.add_argument' in
       ;; configure.py to find the relevant options.
       #~(list "--shared"
+              "--shared-ada"
               "--shared-brotli"
               "--shared-cares"
+              "--shared-gtest"
               "--shared-hdr-histogram"
               "--shared-http-parser"
               "--shared-http-parser-libname=llhttp"
               "--shared-libuv"
+              "--shared-merve"
+              "--shared-nbytes"
               "--shared-nghttp2"
               "--shared-nghttp3"
               "--shared-ngtcp2"
               "--shared-openssl"
+              "--shared-simdjson"
+              "--shared-simdutf"
+              "--shared-sqlite"
               "--shared-uvwasi"
               "--shared-zlib"
               "--shared-zstd"
-              ;; Needed for correct snapshot checksums
+              ;; Needed for correct snapshot checksums.
               "--v8-enable-snapshot-compression"
               "--with-intl=system-icu")
       #:make-flags #~(list "V=1")       ;to see build commands
@@ -477,14 +492,21 @@ parser definition into a C output.")
                        (host-inputs (map safe-lookup
                                          '("brotli"
                                            "c-ares"
+                                           "cpp-ada-url-parser"
+                                           "googletest"
                                            "hdrhistogram-c"
                                            "icu4c"
                                            "libuv"
                                            "llhttpish"
+                                           "merve"
+                                           "nbytes"
                                            "nghttp2"
                                            "nghttp3"
                                            "ngtcp2"
                                            "openssl"
+                                           "simdjson"
+                                           "simdutf"
+                                           "sqlite"
                                            "uvwasi"
                                            "zlib"
                                            "zstd")))
@@ -614,14 +636,21 @@ parser definition into a C output.")
       ;; Runtime dependencies for binaries used as a bootstrap.
       brotli
       c-ares-for-node-lts
+      cpp-ada-url-parser
+      googletest
       hdrhistogram-c
       icu4c-78
       libuv-for-node-lts
       llhttpish
+      merve
+      nbytes
       `(,nghttp2-for-node-lts "lib")
       nghttp3
       ngtcp2
       openssl
+      simdjson
+      simdutf
+      sqlite-next
       uvwasi-for-node-lts
       zlib
       `(,zstd "lib")
@@ -636,14 +665,21 @@ parser definition into a C output.")
            brotli
            c-ares-for-node-lts
            coreutils-minimal
+           cpp-ada-url-parser
+           googletest
            hdrhistogram-c
            icu4c-78
            libuv-for-node-lts
            llhttpish
+           merve
+           nbytes
            `(,nghttp2-for-node-lts "lib")
            nghttp3
            ngtcp2
            openssl
+           simdjson
+           simdutf
+           sqlite-next
            uvwasi-for-node-lts
            zlib
            `(,zstd "lib")))

Reply via email to