summaryrefslogtreecommitdiff
path: root/gnu/packages/array-languages.scm
diff options
context:
space:
mode:
authorCarlos Durán Domínguez <wurt@wurt.eu>2026-02-10 21:20:47 +0100
committerLiliana Marie Prikler <liliana.prikler@gmail.com>2026-03-01 17:38:52 +0100
commit276afa66c322add2250fb3f8f7dc64faee54dd58 (patch)
treeee22017901f2c8ad8b85e734e42e6de10711dda3 /gnu/packages/array-languages.scm
parentb5505aef5f2f83fdbc74804e9ccaa15bad1619e6 (diff)
gnu: Add goal.
* gnu/packages/array-languages.scm (goal): New variable. Change-Id: I4e56852bbe25c66748325d6a225742b633be2e68 Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
Diffstat (limited to 'gnu/packages/array-languages.scm')
-rw-r--r--gnu/packages/array-languages.scm73
1 files changed, 73 insertions, 0 deletions
diff --git a/gnu/packages/array-languages.scm b/gnu/packages/array-languages.scm
index 3ba2be6b501..cb15e0d4475 100644
--- a/gnu/packages/array-languages.scm
+++ b/gnu/packages/array-languages.scm
@@ -29,6 +29,79 @@
29;;; 29;;;
30;;; Code: 30;;; Code:
31 31
32(define-public goal
33 (package
34 (name "goal")
35 (version "1.5.0")
36 (source
37 (origin
38 (method git-fetch)
39 (uri (git-reference
40 (url "https://codeberg.org/anaseto/goal")
41 (commit (string-append "v" version))))
42 (file-name (git-file-name name version))
43 (sha256
44 (base32 "1ckkjd2hf2v6f8x0ck9brp1ii4q8lcssvvwn7d6l1l5n9kcfjw7n"))))
45 (build-system go-build-system)
46 (inputs (list bash-minimal))
47 (outputs (list "out" "lib"))
48 (arguments
49 (list
50 #:unpack-path "codeberg.org/anaseto/goal"
51 #:import-path "codeberg.org/anaseto/goal/cmd/goal"
52 #:build-flags
53 #~(list "-tags" "full,nosse4") ;disable SSE4.2 optimizations
54 #:test-flags
55 #~(list "-skip" "TestSources/version.goal" ;git tests require a repo
56 "-tags" "full,nosse4")
57 #:phases
58 #~(modify-phases %standard-phases
59 ;; Goal requires a shell interpreter.
60 (add-after 'unpack 'fix-sh-path
61 (lambda* (#:key unpack-path #:allow-other-keys)
62 (substitute* (string-append "src/" unpack-path "/os/os.go")
63 (("/bin/sh")
64 #$(file-append bash-minimal "/bin/sh")))))
65 ;; Tests require the goal binary.
66 (add-before 'check 'add-goal-path
67 (lambda _
68 (setenv "PATH"
69 (string-append (getenv "PATH") ":" #$output "/bin"))))
70 ;; Goal is embeddable, but end users typically don't need the source
71 ;; code.
72 (replace 'install
73 (lambda* (#:key unpack-path #:allow-other-keys #:rest arguments)
74 (apply (assoc-ref %standard-phases 'install)
75 `(,@arguments #:import-path ,unpack-path))
76 (mkdir-p #$output:lib)
77 (rename-file (string-append #$output "/src")
78 (string-append #$output:lib "/src"))))
79 (add-after 'install 'install-goal-libs-and-documentation
80 (lambda* (#:key unpack-path inputs #:allow-other-keys #:rest
81 arguments)
82 (let ((outdir (string-append #$output "/share/goal/"
83 #$(version-major version) "/lib")))
84 (mkdir-p outdir)
85 (copy-recursively (string-append "src/" unpack-path "/lib")
86 outdir))
87 (install-file (string-append "src/" unpack-path "/docs/goal.1")
88 (string-append #$output "/share/man/man1")))))))
89 (native-search-paths
90 (list (search-path-specification
91 (variable "GOALLIB")
92 (separator #f)
93 (files `(,(string-append "share/goal/"
94 (version-major version) "/lib"))))))
95 (home-page "https://anaseto.codeberg.page/goal-docs/")
96 (synopsis "Embeddable scripting array language")
97 (description
98 "Goal is an embeddable array programming language with a bytecode
99interpreter, written in Go. The command line intepreter can execute scripts
100or run in interactive mode. Goal shines the most in common scripting tasks,
101like handling columnar data or text processing. It is also suitable for
102exploratory programming.")
103 (license license:isc)))
104
32;;; 105;;;
33;;; Avoid adding new packages to the end of this file. To reduce the chances 106;;; Avoid adding new packages to the end of this file. To reduce the chances
34;;; of a merge conflict, place them above in alphabetic order. 107;;; of a merge conflict, place them above in alphabetic order.