unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#43840] [PATCH] gnu: Add esbuild.
@ 2020-10-07  2:31 Ryan Prior via Guix-patches via
  2020-10-07  6:34 ` Efraim Flashner
  2020-10-11 16:16 ` [bug#43840] [PATCH 1/2] gnu: Add go-github-com-kylelemons-godebug Ryan Prior via Guix-patches via
  0 siblings, 2 replies; 8+ messages in thread
From: Ryan Prior via Guix-patches via @ 2020-10-07  2:31 UTC (permalink / raw)
  To: 43840

* gnu/packages/web.scm (esbuild): New variable.
---
 gnu/packages/web.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index b798e0abca..1e2f2e7e10 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -1345,6 +1345,34 @@ used to validate and fix HTML data.")
     (home-page "http://tidy.sourceforge.net/")
     (license (license:x11-style "file:///include/tidy.h"))))
 
+(define-public esbuild
+  (package
+    (name "esbuild")
+    (version "0.7.11")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/evanw/esbuild")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "08lx1i0s1q3my6x4csz746rc3c2fl4p0hyrwx4rpx80gwwjj1i11"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/evanw/esbuild/cmd/esbuild"
+       #:unpack-path "github.com/evanw/esbuild"))
+    (inputs
+     `(("go-golang-org-x-sys" ,go-golang-org-x-sys)))
+    (home-page "https://github.com/evanw/esbuild")
+    (synopsis "Bundler and minifier tool for JavaScript and TypeScript")
+    (description
+     "The esbuild tool provides a unified bundler, transpiler and
+minifier.  It packages up JavaScript and TypeScript code, along with JSON
+and other data, for distribution on the web.")
+    (license license:expat)))
+
 (define-public tinyproxy
   (package
     (name "tinyproxy")
-- 
2.17.1






^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [bug#43840] [PATCH] gnu: Add esbuild.
  2020-10-07  2:31 [bug#43840] [PATCH] gnu: Add esbuild Ryan Prior via Guix-patches via
@ 2020-10-07  6:34 ` Efraim Flashner
  2020-10-08  2:08   ` Ryan Prior via Guix-patches via
  2020-10-11 16:16 ` [bug#43840] [PATCH 1/2] gnu: Add go-github-com-kylelemons-godebug Ryan Prior via Guix-patches via
  1 sibling, 1 reply; 8+ messages in thread
From: Efraim Flashner @ 2020-10-07  6:34 UTC (permalink / raw)
  To: Ryan Prior; +Cc: 43840

[-- Attachment #1: Type: text/plain, Size: 3280 bytes --]

On Wed, Oct 07, 2020 at 02:31:24AM +0000, Ryan Prior via Guix-patches via wrote:
> * gnu/packages/web.scm (esbuild): New variable.
> ---
>  gnu/packages/web.scm | 28 ++++++++++++++++++++++++++++
>  1 file changed, 28 insertions(+)
> 
> diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
> index b798e0abca..1e2f2e7e10 100644
> --- a/gnu/packages/web.scm
> +++ b/gnu/packages/web.scm
> @@ -1345,6 +1345,34 @@ used to validate and fix HTML data.")
>      (home-page "http://tidy.sourceforge.net/")
>      (license (license:x11-style "file:///include/tidy.h"))))
>  
> +(define-public esbuild
> +  (package
> +    (name "esbuild")
> +    (version "0.7.11")
> +    (source
> +     (origin
> +       (method git-fetch)
> +       (uri (git-reference
> +             (url "https://github.com/evanw/esbuild")
> +             (commit (string-append "v" version))))
> +       (file-name (git-file-name name version))
> +       (sha256
> +        (base32
> +         "08lx1i0s1q3my6x4csz746rc3c2fl4p0hyrwx4rpx80gwwjj1i11"))))
> +    (build-system go-build-system)
> +    (arguments
> +     '(#:import-path "github.com/evanw/esbuild/cmd/esbuild"
> +       #:unpack-path "github.com/evanw/esbuild"))
> +    (inputs
> +     `(("go-golang-org-x-sys" ,go-golang-org-x-sys)))
> +    (home-page "https://github.com/evanw/esbuild")
> +    (synopsis "Bundler and minifier tool for JavaScript and TypeScript")
> +    (description
> +     "The esbuild tool provides a unified bundler, transpiler and
> +minifier.  It packages up JavaScript and TypeScript code, along with JSON
> +and other data, for distribution on the web.")
> +    (license license:expat)))
> +
>  (define-public tinyproxy
>    (package
>      (name "tinyproxy")
> -- 
> 2.17.1
> 

First pass, I don't see a vendor directory that needs to be deleted, and
it does seem to only really depend on go-golang-org-x-sys, which is
nice. There is an npm directory which is where the compiled binaries are
placed, there are a couple in the checked out repo.

diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 1e2f2e7e10..f55f1a02d9 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -1358,7 +1358,13 @@ used to validate and fix HTML data.")
        (file-name (git-file-name name version))
        (sha256
         (base32
-         "08lx1i0s1q3my6x4csz746rc3c2fl4p0hyrwx4rpx80gwwjj1i11"))))
+         "08lx1i0s1q3my6x4csz746rc3c2fl4p0hyrwx4rpx80gwwjj1i11"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Remove pre-compiled binaries
+           (delete-file-recursively "npm")
+           #t))))
     (build-system go-build-system)
     (arguments
      '(#:import-path "github.com/evanw/esbuild/cmd/esbuild"

`esbuild --help` still works after removing the npm directory.

Is it worth trying to run some of the test suite? I see there are a
couple of 'make check' type targets in the Makefile at the root of the
repository and currently there are none run during the build.

-- 
Efraim Flashner   <efraim@flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [bug#43840] [PATCH] gnu: Add esbuild.
  2020-10-07  6:34 ` Efraim Flashner
@ 2020-10-08  2:08   ` Ryan Prior via Guix-patches via
  2020-10-11 10:28     ` Efraim Flashner
  0 siblings, 1 reply; 8+ messages in thread
From: Ryan Prior via Guix-patches via @ 2020-10-08  2:08 UTC (permalink / raw)
  To: Efraim Flashner; +Cc: 43840@debbugs.gnu.org

Hey Efraim, thank you for your comments!

On Wednesday, October 7th, 2020 at 6:34 AM, Efraim Flashner <efraim@flashner.co.il> wrote:

> There is an npm directory which is where the compiled binaries are
> placed, there are a couple in the checked out repo.

The compiled binaries might be placed there by the gnu-build-system, but the go-build-system does not put binaries there by itself. (Note that their make target explicitly specifies output directories.)

I think our build totally ignores this directory, so it shouldn't matter whether we delete it, but if you think removing the unneeded directory improves the package I'll update the patch with a snippet.

>     Is it worth trying to run some of the test suite? I see there are a
>     couple of 'make check' type targets in the Makefile at the root of the
>     repository and currently there are none run during the build.

It would be nice to run their tests, but the test system currently assumes network access to install some various JavaScript dependencies using npm. We might patch the test system and vendor in the deps (used only for testing,) what do you think?

Ryan




^ permalink raw reply	[flat|nested] 8+ messages in thread

* [bug#43840] [PATCH] gnu: Add esbuild.
  2020-10-08  2:08   ` Ryan Prior via Guix-patches via
@ 2020-10-11 10:28     ` Efraim Flashner
  2020-10-11 16:15       ` Ryan Prior via Guix-patches via
  0 siblings, 1 reply; 8+ messages in thread
From: Efraim Flashner @ 2020-10-11 10:28 UTC (permalink / raw)
  To: Ryan Prior; +Cc: 43840@debbugs.gnu.org

[-- Attachment #1: Type: text/plain, Size: 2239 bytes --]

On Thu, Oct 08, 2020 at 02:08:36AM +0000, Ryan Prior wrote:
> Hey Efraim, thank you for your comments!
> 
> On Wednesday, October 7th, 2020 at 6:34 AM, Efraim Flashner <efraim@flashner.co.il> wrote:
> 
> > There is an npm directory which is where the compiled binaries are
> > placed, there are a couple in the checked out repo.
> 
> The compiled binaries might be placed there by the gnu-build-system, but the go-build-system does not put binaries there by itself. (Note that their make target explicitly specifies output directories.)
> 
> I think our build totally ignores this directory, so it shouldn't matter whether we delete it, but if you think removing the unneeded directory improves the package I'll update the patch with a snippet.

It's important to not ship any precompiled binaries so go ahead and
remove them in a snippet.

> >     Is it worth trying to run some of the test suite? I see there are a
> >     couple of 'make check' type targets in the Makefile at the root of the
> >     repository and currently there are none run during the build.
> 
> It would be nice to run their tests, but the test system currently assumes network access to install some various JavaScript dependencies using npm. We might patch the test system and vendor in the deps (used only for testing,) what do you think?
> 

I was able to run some of the test suite with the following arguments section:

(arguments
 '(#:import-path "github.com/evanw/esbuild/cmd/esbuild"
   #:unpack-path "github.com/evanw/esbuild"
   #:phases
   (modify-phases %standard-phases
     (replace 'check
       (lambda* (#:key tests? unpack-path #:allow-other-keys)
         (if tests?
           (with-directory-excursion (string-append "src/" unpack-path)
             (invoke "make" "test-go"))
           #t))))))

Unfortunately it also depends on github.com/kylelemons/godebug/diff, but
it doesn't look like it has any dependants. With that added as a
native-input I think it's ready.

> Ryan

Thanks

-- 
Efraim Flashner   <efraim@flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [bug#43840] [PATCH] gnu: Add esbuild.
  2020-10-11 10:28     ` Efraim Flashner
@ 2020-10-11 16:15       ` Ryan Prior via Guix-patches via
  0 siblings, 0 replies; 8+ messages in thread
From: Ryan Prior via Guix-patches via @ 2020-10-11 16:15 UTC (permalink / raw)
  To: Efraim Flashner; +Cc: 43840@debbugs.gnu.org

On Sunday, October 11th, 2020 at 10:28 AM, Efraim Flashner <efraim@flashner.co.il> wrote:
> It's important to not ship any precompiled binaries so go ahead and
> remove them in a snippet.

You got it.

> I was able to run some of the test suite with the following arguments section:
> [snip]
> Unfortunately it also depends on github.com/kylelemons/godebug/diff, but
> it doesn't look like it has any dependants. With that added as a
> native-input I think it's ready.

I do have a package for godebug. If you want to run all the tests, it goes in to the `scripts` module and runs `npm install` to pull in various test dependencies: https://github.com/evanw/esbuild/blob/master/scripts/package.json

But running just the "test-go" target seems like a good compromise for now! Maybe we can revisit this once node packaging in Guix is in a better state (which esbuild may help us with.)

I'll send my godebug package and an updated esbuild package with the code to run the tests.

Ryan




^ permalink raw reply	[flat|nested] 8+ messages in thread

* [bug#43840] [PATCH 1/2] gnu: Add go-github-com-kylelemons-godebug.
  2020-10-07  2:31 [bug#43840] [PATCH] gnu: Add esbuild Ryan Prior via Guix-patches via
  2020-10-07  6:34 ` Efraim Flashner
@ 2020-10-11 16:16 ` Ryan Prior via Guix-patches via
  2020-10-11 16:16   ` [bug#43840] [PATCH 2/2] gnu: Add esbuild Ryan Prior via Guix-patches via
  1 sibling, 1 reply; 8+ messages in thread
From: Ryan Prior via Guix-patches via @ 2020-10-11 16:16 UTC (permalink / raw)
  To: 43840

* gnu/packages/golang.scm (go-github-com-kylelemons-godebug): New variable.
---
 gnu/packages/golang.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index fb7f7174fb..b89b62cea2 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -3378,6 +3378,32 @@ format in Go.")
     (home-page "https://github.com/kr/pretty")
     (license license:expat)))
 
+(define-public go-github-com-kylelemons-godebug
+  (package
+    (name "go-github-com-kylelemons-godebug")
+    (version "1.1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/kylelemons/godebug")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0dkk3friykg8p6wgqryx6745ahhb9z1j740k7px9dac6v5xjp78c"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/kylelemons/godebug/diff"
+       #:unpack-path "github.com/kylelemons/godebug"))
+    (home-page "https://github.com/kylelemons/godebug")
+    (synopsis "Pretty printer for Go values.")
+    (description
+     "This package will pretty print a compact representation of a Go data
+structure.  It can also produce a much more verbose, one-item-per-line
+representation suitable for computing diffs.")
+    (license license:asl2.0)))
+
 (define-public go-github-com-kr-text
   (package
     (name "go-github-com-kr-text")
-- 
2.17.1






^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [bug#43840] [PATCH 2/2] gnu: Add esbuild.
  2020-10-11 16:16 ` [bug#43840] [PATCH 1/2] gnu: Add go-github-com-kylelemons-godebug Ryan Prior via Guix-patches via
@ 2020-10-11 16:16   ` Ryan Prior via Guix-patches via
  2020-10-12  6:41     ` bug#43840: " Efraim Flashner
  0 siblings, 1 reply; 8+ messages in thread
From: Ryan Prior via Guix-patches via @ 2020-10-11 16:16 UTC (permalink / raw)
  To: 43840

* gnu/packages/web.scm (esbuild): New variable.
---
 gnu/packages/web.scm | 48 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 1699c92366..7963bff4d1 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -45,6 +45,7 @@
 ;;; Copyright © 2018, 2019, 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;; Copyright © 2020 Paul Garlick <pgarlick@tourbillion-technology.com>
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
+;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -84,6 +85,7 @@
   #:use-module (gnu packages admin)
   #:use-module (gnu packages adns)
   #:use-module (gnu packages apr)
+  #:use-module (gnu packages base)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
   #:use-module (gnu packages documentation)
@@ -129,6 +131,7 @@
   #:use-module (gnu packages markup)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages networking)
+  #:use-module (gnu packages node)
   #:use-module (gnu packages nss)
   #:use-module (gnu packages openldap)
   #:use-module (gnu packages openstack)
@@ -1346,6 +1349,51 @@ used to validate and fix HTML data.")
     (home-page "http://tidy.sourceforge.net/")
     (license (license:x11-style "file:///include/tidy.h"))))
 
+(define-public esbuild
+  (package
+    (name "esbuild")
+    (version "0.7.14")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/evanw/esbuild")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1y5hqymv2r8r29f8vh8kgncj3wlkg4fzi0zlc7mgyss872ajkc7i"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Remove prebuilt binaries
+           (delete-file-recursively "npm")
+           #t))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/evanw/esbuild/cmd/esbuild"
+       #:unpack-path "github.com/evanw/esbuild"
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda* (#:key tests? unpack-path #:allow-other-keys)
+             (if tests?
+                 (with-directory-excursion (string-append "src/" unpack-path)
+                   (invoke "make" "test-go")))
+             #t)))))
+    (inputs
+     `(("go-golang-org-x-sys" ,go-golang-org-x-sys)))
+    (native-inputs
+     `(("make" ,gnu-make)
+       ("go-github-com-kylelemons-godebug" ,go-github-com-kylelemons-godebug)))
+    (home-page "https://github.com/evanw/esbuild")
+    (synopsis "Bundler and minifier tool for JavaScript and TypeScript")
+    (description
+     "The esbuild tool provides a unified bundler, transpiler and
+minifier.  It packages up JavaScript and TypeScript code, along with JSON
+and other data, for distribution on the web.")
+    (license license:expat)))
+
 (define-public tinyproxy
   (package
     (name "tinyproxy")
-- 
2.17.1






^ permalink raw reply related	[flat|nested] 8+ messages in thread

* bug#43840: [PATCH 2/2] gnu: Add esbuild.
  2020-10-11 16:16   ` [bug#43840] [PATCH 2/2] gnu: Add esbuild Ryan Prior via Guix-patches via
@ 2020-10-12  6:41     ` Efraim Flashner
  0 siblings, 0 replies; 8+ messages in thread
From: Efraim Flashner @ 2020-10-12  6:41 UTC (permalink / raw)
  To: Ryan Prior; +Cc: 43840-done

[-- Attachment #1: Type: text/plain, Size: 304 bytes --]

I removed make from native-inputs and the module imports and pushed the
patches. Thanks!

-- 
Efraim Flashner   <efraim@flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2020-10-12  6:42 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-07  2:31 [bug#43840] [PATCH] gnu: Add esbuild Ryan Prior via Guix-patches via
2020-10-07  6:34 ` Efraim Flashner
2020-10-08  2:08   ` Ryan Prior via Guix-patches via
2020-10-11 10:28     ` Efraim Flashner
2020-10-11 16:15       ` Ryan Prior via Guix-patches via
2020-10-11 16:16 ` [bug#43840] [PATCH 1/2] gnu: Add go-github-com-kylelemons-godebug Ryan Prior via Guix-patches via
2020-10-11 16:16   ` [bug#43840] [PATCH 2/2] gnu: Add esbuild Ryan Prior via Guix-patches via
2020-10-12  6:41     ` bug#43840: " Efraim Flashner

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).