diff mbox series

[bug#63307] gnu: Add pnpm

Message ID 8fce37f3-cb14-d7f9-d728-b1415fa4d82f@pantherx.org
State New
Headers show
Series [bug#63307] gnu: Add pnpm | expand

Commit Message

Franz Geffke May 5, 2023, 2:03 p.m. UTC

Comments

Hilton Chain Aug. 20, 2023, 5:35 a.m. UTC | #1
Hi Franz,

On Fri, 05 May 2023 22:03:22 +0800,
Franz Geffke wrote:
>
> diff --git a/gnu/packages/node-xyz.scm b/gnu/packages/node-xyz.scm
> index 991113c05b..b32e68b415 100644
> --- a/gnu/packages/node-xyz.scm
> +++ b/gnu/packages/node-xyz.scm
> @@ -29,7 +29,9 @@ (define-module (gnu packages node-xyz)
>    #:use-module (guix gexp)
>    #:use-module (guix packages)
>    #:use-module (guix git-download)
> -  #:use-module (guix build-system node))
> +  #:use-module (guix build-system node)
> +  #:use-module (guix build-system trivial)
> +  #:use-module (ice-9 match))
>
>  (define-public node-acorn
>    (package
> @@ -1546,3 +1548,37 @@ (define-public node-yazl
>  @item Prefer to open input files one at a time than all at once.
>  @end enumerate")
>      (license license:expat)))
> +
> +(define-public pnpm
> +  (package
> +    (name "pnpm")
> +    (version "7.32.2")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (string-append
> +             "https://github.com/pnpm/pnpm/releases/download/v"
> +             version "/pnpm-linuxstatic-"
> +             (match (or (%current-system) (%current-target-system))
> +               ("x86_64-linux" "x64")
> +               ("aarch64-linux" "arm64"))))
> +       (sha256
> +        (base32
> +         "1k3n24ink74ajs8nd0p6y6238vi41n5bvrk8clnydgwg11ax1zx0"))))
> +    (build-system trivial-build-system)
> +    (arguments
> +     `(#:modules ((guix build utils))
> +       #:builder
> +       (begin
> +         (use-modules ((guix build utils)))
> +         (let* ((source (assoc-ref %build-inputs "source"))
> +                (bin (string-append %output "/bin"))
> +                (exe (string-append bin "/pnpm")))
> +           (mkdir-p bin)
> +           (copy-file source exe)
> +           (chmod exe #o755)))))
> +    (home-page "https://pnpm.io")
> +    (synopsis "Fast, disk space efficient package manager for nodejs")
> +    (description "pnpm uses a content-addressable filesystem to
> +store all files from all module directories on a disk")
> +    (license license:expat)))
>
>

Binary packages won't be accpeted, would you like to try building pnpm
from source?  Or this issue should be closed.

And in case you don't know, the current node package is built with
corepack [1] support, pnpm is included in it:
$ guix shell node -- corepack pnpm --help

Thanks

[1]: https://github.com/nodejs/corepack
Erik Eduardo Feb. 20, 2024, 5:11 p.m. UTC | #2
To install pnpm is needed pnpm, how guix would deal with this?

More information about building can be found in CONTRIBUTING.md
on the root of the repository.
diff mbox series

Patch

diff --git a/gnu/packages/node-xyz.scm b/gnu/packages/node-xyz.scm
index 991113c05b..b32e68b415 100644
--- a/gnu/packages/node-xyz.scm
+++ b/gnu/packages/node-xyz.scm
@@ -29,7 +29,9 @@  (define-module (gnu packages node-xyz)
    #:use-module (guix gexp)
    #:use-module (guix packages)
    #:use-module (guix git-download)
-  #:use-module (guix build-system node))
+  #:use-module (guix build-system node)
+  #:use-module (guix build-system trivial)
+  #:use-module (ice-9 match))

  (define-public node-acorn
    (package
@@ -1546,3 +1548,37 @@  (define-public node-yazl
  @item Prefer to open input files one at a time than all at once.
  @end enumerate")
      (license license:expat)))
+
+(define-public pnpm
+  (package
+    (name "pnpm")
+    (version "7.32.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/pnpm/pnpm/releases/download/v"
+             version "/pnpm-linuxstatic-"
+             (match (or (%current-system) (%current-target-system))
+               ("x86_64-linux" "x64")
+               ("aarch64-linux" "arm64"))))
+       (sha256
+        (base32
+         "1k3n24ink74ajs8nd0p6y6238vi41n5bvrk8clnydgwg11ax1zx0"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder
+       (begin
+         (use-modules ((guix build utils)))
+         (let* ((source (assoc-ref %build-inputs "source"))
+                (bin (string-append %output "/bin"))
+                (exe (string-append bin "/pnpm")))
+           (mkdir-p bin)
+           (copy-file source exe)
+           (chmod exe #o755)))))
+    (home-page "https://pnpm.io")
+    (synopsis "Fast, disk space efficient package manager for nodejs")
+    (description "pnpm uses a content-addressable filesystem to
+store all files from all module directories on a disk")
+    (license license:expat)))