mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2025-02-01 15:26:47 +01:00
gnu: node: Patch shebangs in node_modules.
* gnu/packages/node.scm (node)[arguments]: Replace 'patch-npm-shebang and 'patch-node-shebang with a new 'patch-nested-shebangs that also handles node-gyp and other shebangs under "/lib/node_modules". [inputs]: Add Python for node-gyp as "python-for-target". (node-lts)[inputs]: Likewise. (libnode)[arguments]: Adjust to delete 'patch-nested-shebangs rather than 'patch-npm-shebang and 'patch-node-shebang. Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
This commit is contained in:
parent
3179e32eb9
commit
bcaf6f14a1
1 changed files with 25 additions and 17 deletions
|
@ -105,6 +105,11 @@ (define-public node
|
|||
;; 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
|
||||
|
@ -240,21 +245,23 @@ (define-public node
|
|||
(search-input-file inpts "/bin/python"))))
|
||||
"configure"
|
||||
flags))))
|
||||
(add-after 'patch-shebangs 'patch-npm-shebang
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((bindir (string-append (assoc-ref outputs "out")
|
||||
"/bin"))
|
||||
(npm (string-append bindir "/npm"))
|
||||
(target (readlink npm)))
|
||||
(with-directory-excursion bindir
|
||||
(patch-shebang target (list bindir))))))
|
||||
(add-after 'install 'patch-node-shebang
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((bindir (string-append (assoc-ref outputs "out")
|
||||
"/bin"))
|
||||
(npx (readlink (string-append bindir "/npx"))))
|
||||
(with-directory-excursion bindir
|
||||
(patch-shebang npx (list bindir)))))))))
|
||||
(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))))))))
|
||||
(native-inputs
|
||||
`(;; Runtime dependencies for binaries used as a bootstrap.
|
||||
("c-ares" ,c-ares)
|
||||
|
@ -283,6 +290,7 @@ (define-public node
|
|||
libuv
|
||||
`(,nghttp2 "lib")
|
||||
openssl
|
||||
python-wrapper ;; for node-gyp (supports python3)
|
||||
zlib))
|
||||
(synopsis "Evented I/O for V8 JavaScript")
|
||||
(description "Node.js is a platform built on Chrome's JavaScript runtime
|
||||
|
@ -802,6 +810,7 @@ (define-public node-lts
|
|||
brotli
|
||||
`(,nghttp2 "lib")
|
||||
openssl
|
||||
python-wrapper ;; for node-gyp (supports python3)
|
||||
zlib))))
|
||||
|
||||
(define-public libnode
|
||||
|
@ -813,5 +822,4 @@ (define-public libnode
|
|||
`(cons* "--shared" "--without-npm" ,flags))
|
||||
((#:phases phases '%standard-phases)
|
||||
`(modify-phases ,phases
|
||||
(delete 'patch-npm-shebang)
|
||||
(delete 'patch-node-shebang)))))))
|
||||
(delete 'patch-nested-shebangs)))))))
|
||||
|
|
Loading…
Reference in a new issue