guix_mirror_bot pushed a commit to branch javascript-team in repository guix.
commit 6c5caa7613d202ecb8c04508e518c79b85d454dd Author: Jelle Licht <[email protected]> AuthorDate: Thu Sep 3 21:08:10 2026 +0200 gnu: Remove node-bootstrap. * gnu/packages/node.scm (node-bootstrap): Delete variable. --- gnu/packages/node.scm | 276 -------------------------------------------------- 1 file changed, 276 deletions(-) diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm index 3f83e3c7258..441f7cdc6df 100644 --- a/gnu/packages/node.scm +++ b/gnu/packages/node.scm @@ -62,282 +62,6 @@ #:use-module (srfi srfi-1) #:use-module (srfi srfi-26)) -;; This should be the latest version of node that still builds without -;; depending on llhttp. -(define-public node-bootstrap - (package - (name "node") - (version "10.24.1") - (source (origin - (method url-fetch) - (uri (string-append "https://nodejs.org/dist/v" version - "/node-v" version ".tar.xz")) - (sha256 - (base32 - "032801kg24j04xmf09m0vxzlcz86sv21s24lv9l4cfv08k1c4byp")) - (modules '((guix build utils))) - (snippet - '(begin - ;; Fix process.versions.XXXX assumption of always having - ;; a version string of major.minor.patch and not major.minor. - (substitute* "test/parallel/test-process-versions.js" - (("\\\\d\\+\\\\.\\\\d\\+\\\\.") "(\\d+\\.)+")) - ;; Remove bundled software. - (for-each delete-file-recursively - '("deps/cares" - "deps/http_parser" - "deps/icu-small" - "deps/nghttp2" - "deps/openssl" - "deps/uv" - "deps/zlib")) - (substitute* "Makefile" - ;; Remove references to bundled software. - (("deps/http_parser/http_parser.gyp") "") - (("deps/uv/include/\\*.h") "") - (("deps/uv/uv.gyp") "") - (("deps/zlib/zlib.gyp") "")))))) - (build-system gnu-build-system) - (arguments - `(#:configure-flags '("--shared-cares" - "--shared-http-parser" - "--shared-libuv" - "--shared-nghttp2" - "--shared-openssl" - "--shared-zlib" - "--without-snapshot" - "--without-intl") - ;; Run only the CI tests. The default test target requires additional - ;; add-ons from NPM that are not distributed with the source. - #:test-target "test-ci-js" - #:modules - ((guix build gnu-build-system) - (guix build utils) - (srfi srfi-1) - (ice-9 match)) - #:phases - (modify-phases %standard-phases - (add-before 'configure 'patch-hardcoded-program-references - (lambda* (#:key inputs #:allow-other-keys) - - ;; Fix hardcoded /bin/sh references. - (substitute* - (let ((common - '("lib/child_process.js" - "lib/internal/v8_prof_polyfill.js" - "test/parallel/test-child-process-spawnsync-shell.js" - "test/parallel/test-stdio-closed.js" - "test/sequential/test-child-process-emfile.js")) - ;; not in bootstap node: - (sigxfsz "test/parallel/test-fs-write-sigxfsz.js")) - (if (file-exists? sigxfsz) - (cons sigxfsz common) - common)) - (("'/bin/sh'") - (string-append "'" (search-input-file inputs "/bin/sh") "'"))) - - ;; Fix hardcoded /usr/bin/env references. - (substitute* '("test/parallel/test-child-process-default-options.js" - "test/parallel/test-child-process-env.js" - "test/parallel/test-child-process-exec-env.js") - (("'/usr/bin/env'") - (string-append "'" (assoc-ref inputs "coreutils") - "/bin/env'"))))) - (add-after 'patch-hardcoded-program-references - '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" - ;; See also <https://github.com/nodejs/node/issues/25903>. - "test/sequential/test-performance.js")) - - ;; These tests fail on recent versions of nghttp2 - (for-each delete-file - '("test/parallel/test-http2-methods.js" - "test/parallel/test-http2-multiplex.js")) - - ;; This requires a DNS resolver. - (delete-file "test/parallel/test-dns.js") - - ;; This test is timing-sensitive, and fails sporadically on - ;; slow, busy, or even very fast machines. - (delete-file "test/parallel/test-fs-utimes.js") - - ;; FIXME: This test fails randomly: - ;; https://github.com/nodejs/node/issues/31213 - (delete-file "test/parallel/test-net-listen-after-destroying-stdin.js") - - ;; FIXME: These tests fail on armhf-linux: - ;; https://github.com/nodejs/node/issues/31970 - ,@(if (string-prefix? "arm" (%current-system)) - '((for-each delete-file - '("test/parallel/test-zlib.js" - "test/parallel/test-zlib-brotli.js" - "test/parallel/test-zlib-brotli-flush.js" - "test/parallel/test-zlib-brotli-from-brotli.js" - "test/parallel/test-zlib-brotli-from-string.js" - "test/parallel/test-zlib-convenience-methods.js" - "test/parallel/test-zlib-random-byte-pipes.js" - "test/parallel/test-zlib-write-after-flush.js"))) - '()) - - ;; These tests have an expiry date: they depend on the validity of - ;; TLS certificates that are bundled with the source. We want this - ;; package to be reproducible forever, so remove those. - ;; TODO: Regenerate certs instead. - (for-each delete-file - '("test/parallel/test-tls-passphrase.js" - "test/parallel/test-tls-server-verify.js")))) - (add-before 'configure 'set-bootstrap-host-rpath - (lambda* (#:key native-inputs inputs #:allow-other-keys) - (let* ((inputs (or native-inputs inputs)) - (c-ares (assoc-ref inputs "c-ares")) - (http-parser (assoc-ref inputs "http-parser")) - (nghttp2 (assoc-ref inputs "nghttp2")) - (openssl (assoc-ref inputs "openssl")) - (libuv (assoc-ref inputs "libuv")) - (zlib (assoc-ref inputs "zlib"))) - (substitute* "deps/v8/gypfiles/v8.gyp" - (("'target_name': 'torque'," target) - (string-append target - "'ldflags': ['-Wl,-rpath=" - c-ares "/lib:" - http-parser "/lib:" - nghttp2 "/lib:" - openssl "/lib:" - libuv "/lib:" - zlib "/lib" - "'],")))))) - (replace 'configure - ;; Node's configure script is actually a python script, so we can't - ;; run it with bash. - (lambda* (#:key outputs (configure-flags '()) native-inputs inputs - #:allow-other-keys) - (let* ((prefix (assoc-ref outputs "out")) - (xflags ,(if (%current-target-system) - `'("--cross-compiling" - ,(string-append - "--dest-cpu=" - (match (%current-target-system) - ((? (cut string-prefix? "arm" <>)) - "arm") - ((? (cut string-prefix? "aarch64" <>)) - "arm64") - ((? (cut string-prefix? "i686" <>)) - "ia32") - ((? (cut string-prefix? "x86_64" <>)) - "x64") - ((? (cut string-prefix? "powerpc64" <>)) - "ppc64") - ((? (cut string-prefix? "riscv64" <>)) - "riscv64") - (_ "unsupported")))) - ''())) - (flags (cons (string-append "--prefix=" prefix) - (append xflags configure-flags)))) - (format #t "build directory: ~s~%" (getcwd)) - (format #t "configure flags: ~s~%" flags) - ;; Node's configure script expects the CC environment variable to - ;; be set. - (setenv "CC_host" "gcc") - (setenv "CXX_host" "g++") - (setenv "CC" ,(cc-for-target)) - (setenv "CXX" ,(cxx-for-target)) - (setenv "PKG_CONFIG" ,(pkg-config-for-target)) - (apply invoke - (let ((inpts (or native-inputs inputs))) - (with-exception-handler - (lambda (e) - (if (search-error? e) - (search-input-file inpts "/bin/python3") - (raise-exception e))) - (lambda () - (search-input-file inpts "/bin/python")) - #:unwind? #t)) - "configure" - flags)))) - (add-after 'patch-shebangs 'patch-nested-shebangs - (lambda* (#:key inputs outputs #:allow-other-keys) - ;; Based on the implementation of patch-shebangs - ;; from (guix build gnu-build-system). - (let ((path (append-map (match-lambda - ((_ . dir) - (list (string-append dir "/bin") - (string-append dir "/sbin") - (string-append dir "/libexec")))) - (append outputs inputs)))) - (for-each - (lambda (file) - (patch-shebang file path)) - (find-files (search-input-directory outputs "lib/node_modules") - (lambda (file stat) - (executable-file? file)) - #:stat lstat))))) - (add-after 'install 'fix-node-gyp-reference - ;; Note: programs like node-gyp only receive these values if - ;; they are started via `npm` or `npx`. - ;; See: https://github.com/nodejs/node-gyp#npm-configuration - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out"))) - (with-output-to-file - ;; Use the config file "primarily for distribution - ;; maintainers" rather than "{prefix}/etc/npmrc", - ;; especially because node-build-system uses --prefix - ;; to install things to their store paths: - (string-append out "/lib/node_modules/npm/npmrc") - (lambda () - ;; Tell npm (mostly node-gyp) where to find our - ;; installed headers so it doesn't try to - ;; download them from the internet: - (format #t "nodedir=~a\n" out))))))))) - (native-inputs - ;; Runtime dependencies for binaries used as a bootstrap. - (list c-ares-for-node-bootstrap - http-parser - libuv-for-node - `(,nghttp2-for-node-bootstrap "lib") - openssl-1.1 - zlib - ;; Regular build-time dependencies. - gcc-11 ; GCC > 11 produces a broken binary - perl - pkg-config - procps - python-2 - util-linux)) - (native-search-paths - (list (search-path-specification - (variable "NODE_PATH") - (files '("lib/node_modules"))))) - (inputs - (list bash-minimal - coreutils - c-ares-for-node-bootstrap - http-parser - libuv-for-node - `(,nghttp2-for-node-bootstrap "lib") - openssl - zlib)) - (synopsis "Evented I/O for V8 JavaScript") - (description - "Node.js is a platform built on Chrome's JavaScript runtime -for easily building fast, scalable network applications. Node.js uses an -event-driven, non-blocking I/O model that makes it lightweight and efficient, -perfect for data-intensive real-time applications that run across distributed -devices.") - (supported-systems (fold delete %supported-systems - '("powerpc-linux" "riscv64-linux"))) - (home-page "https://nodejs.org/") - (license license:expat) - (properties '((max-silent-time . 7200) ;2h, needed on ARM - (timeout . 21600) ;6h - (cpe-name . "node.js") - (hidden? . #t))))) - ;; Stripped-down build phases for JS packages. Uses esbuild + NODE_PATH instead ;; of npm, so editing node-build-system does not rebuild node-lts. Set the ;; ENTRYPOINT environment variable before the build phase to override the entry
