diff mbox series

[bug#56474] gnu: Add goawk.

Message ID 20220710015832.129472-1-paul@apatience.com
State New
Headers show
Series [bug#56474] gnu: Add goawk. | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git-branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

Paul A. Patience July 10, 2022, 1:58 a.m. UTC
* gnu/packages/gawk.scm (goawk): New variable.
---
 gnu/packages/gawk.scm | 41 ++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 40 insertions(+), 1 deletion(-)

--
2.36.1

Comments

Paul A. Patience July 11, 2022, 12:17 p.m. UTC | #1
Don't merge this yet, I need to apply some changes.

GoAWK also exposes a Go package, so I need to remove the
‘#:install-source #f’ line.
However, how should I go about naming the package (or packages)?

The Go library should be go-github-com-benhoyt-goawk (in
gnu/packages/golang.scm), but should there be an additional package
named just goawk for the command itself that goes in
gnu/packages/gawk.scm?

Thanks,
Paul
Ludovic Courtès July 19, 2022, 9:03 p.m. UTC | #2
Hi,

"Paul A. Patience" <paul@apatience.com> skribis:

> Don't merge this yet, I need to apply some changes.
>
> GoAWK also exposes a Go package, so I need to remove the
> ‘#:install-source #f’ line.
> However, how should I go about naming the package (or packages)?
>
> The Go library should be go-github-com-benhoyt-goawk (in
> gnu/packages/golang.scm), but should there be an additional package
> named just goawk for the command itself that goes in
> gnu/packages/gawk.scm?

Maybe leave ‘goawk’ in golang.scm so that gawk.scm doesn’t pull in all
of Go?

Thanks,
Ludo’.
Maxime Devos July 20, 2022, 1:34 p.m. UTC | #3
On 10-07-2022 03:58, Paul A. Patience wrote:
> * gnu/packages/gawk.scm (goawk): New variable.
> ---
>   gnu/packages/gawk.scm | 41 ++++++++++++++++++++++++++++++++++++++++-
>   1 file changed, 40 insertions(+), 1 deletion(-)
>
> diff --git a/gnu/packages/gawk.scm b/gnu/packages/gawk.scm
> index 9feaf059fb..9bc96d87e7 100644
> --- a/gnu/packages/gawk.scm
> +++ b/gnu/packages/gawk.scm
> @@ -33,7 +33,8 @@ (define-module (gnu packages gawk)
>     #:use-module (guix git-download)
>     #:use-module (guix utils)
>     #:use-module (guix build-system copy)
> -  #:use-module (guix build-system gnu))
> +  #:use-module (guix build-system gnu)
> +  #:use-module (guix build-system go))
>
>   (define-public gawk
>     (package
> @@ -245,3 +246,41 @@ (define-public cppawk-egawk
>          (delete "gawk-mpfr")
>          (prepend egawk-next)))
>       (synopsis "cppawk that calls Enhanced GNU Awk by default")))

What Ludo wrote about not making the module graph more cyclic than it 
already is with all that entails, and ...

> +(define-public goawk
> +  (package
> +    (name "goawk")
> +    (version "1.19.0")
> +    (source
> +     (origin
> +       (method git-fetch)
> +       (uri (git-reference
> +             (url "https://github.com/benhoyt/goawk")
> +             (commit (string-append "v" version))))
> +       (file-name (git-file-name name version))
> +       (sha256
> +        (base32 "12z7nzrqyx0y18bsc95i1vp251jw3ik2xj5g8bc12vybndw5x0j0"))))
> +    (build-system go-build-system)
> +    (arguments
> +     '(#:import-path "github.com/benhoyt/goawk"
> +       #:install-source? #f
> +       #:phases
> +       (modify-phases %standard-phases
> +         (add-after 'unpack 'fix-paths
> +           (lambda _
> +             (substitute* "src/github.com/benhoyt/goawk/interp/interp.go"
> +               (("/bin/sh") (which "sh")))
> +             (substitute* "src/github.com/benhoyt/goawk/goawk_test.go"
> +               (("/bin/sh") (which "sh")))))

... these two can be combined, substitute* accepts a list of files, it's 
not restricted to a single file.

Also, this which seems incorrect when cross-compiling, do 
(search-input-file inputs "bin/sh") instead and add 'bash-minimal' (or 
'bash'?) to inputs, so you get the cross-compiled bash instead of the 
native bash (for the goawk_test.go, it probably doesn't matter, but it's 
important for interp.go).

Greetings,
Maxime.
diff mbox series

Patch

diff --git a/gnu/packages/gawk.scm b/gnu/packages/gawk.scm
index 9feaf059fb..9bc96d87e7 100644
--- a/gnu/packages/gawk.scm
+++ b/gnu/packages/gawk.scm
@@ -33,7 +33,8 @@  (define-module (gnu packages gawk)
   #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix build-system copy)
-  #:use-module (guix build-system gnu))
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system go))

 (define-public gawk
   (package
@@ -245,3 +246,41 @@  (define-public cppawk-egawk
        (delete "gawk-mpfr")
        (prepend egawk-next)))
     (synopsis "cppawk that calls Enhanced GNU Awk by default")))
+
+(define-public goawk
+  (package
+    (name "goawk")
+    (version "1.19.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/benhoyt/goawk")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "12z7nzrqyx0y18bsc95i1vp251jw3ik2xj5g8bc12vybndw5x0j0"))))
+    (build-system go-build-system)
+    (arguments
+     '(#:import-path "github.com/benhoyt/goawk"
+       #:install-source? #f
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-paths
+           (lambda _
+             (substitute* "src/github.com/benhoyt/goawk/interp/interp.go"
+               (("/bin/sh") (which "sh")))
+             (substitute* "src/github.com/benhoyt/goawk/goawk_test.go"
+               (("/bin/sh") (which "sh")))))
+         (add-after 'fix-paths 'fix-tests
+           (lambda _
+             (substitute* "src/github.com/benhoyt/goawk/goawk_test.go"
+               ;; Don't write test output; it is compared with expected
+               ;; results anyway.
+               (("\"writegoawk\", true") "\"writegoawk\", false")))))))
+    (home-page "https://github.com/benhoyt/goawk")
+    (synopsis "Awk interpreter with CSV support")
+    (description
+     "GoAWK is a POSIX-compatible version of Awk that also has a CSV mode for
+reading and writing CSV and TSV files.")
+    (license license:expat)))